diff --git a/app/src/main/java/de/christinecoenen/code/zapp/app/KoinModules.kt b/app/src/main/java/de/christinecoenen/code/zapp/app/KoinModules.kt index 8284b70d..a4404758 100644 --- a/app/src/main/java/de/christinecoenen/code/zapp/app/KoinModules.kt +++ b/app/src/main/java/de/christinecoenen/code/zapp/app/KoinModules.kt @@ -90,7 +90,7 @@ class KoinModules { viewModel { parameters -> MediathekListFragmentViewModel(get(), parameters.get()) } viewModel { MediathekFilterViewModel() } viewModel { ShowMenuHelperViewModel(get(), get()) } - viewModel { SearchViewModel(get(), get(), get()) } + viewModel { SearchViewModel(get(), get(), get(), get()) } } } diff --git a/app/src/main/java/de/christinecoenen/code/zapp/app/search/SearchViewModel.kt b/app/src/main/java/de/christinecoenen/code/zapp/app/search/SearchViewModel.kt index c1b9cac1..f6b68c42 100644 --- a/app/src/main/java/de/christinecoenen/code/zapp/app/search/SearchViewModel.kt +++ b/app/src/main/java/de/christinecoenen/code/zapp/app/search/SearchViewModel.kt @@ -15,6 +15,7 @@ import de.christinecoenen.code.zapp.app.mediathek.api.request.MediathekChannel import de.christinecoenen.code.zapp.app.mediathek.api.request.QueryRequest import de.christinecoenen.code.zapp.app.mediathek.api.result.QueryInfoResult import de.christinecoenen.code.zapp.app.mediathek.ui.list.adapter.UiModel +import de.christinecoenen.code.zapp.app.settings.repository.SettingsRepository import de.christinecoenen.code.zapp.models.search.Comparison import de.christinecoenen.code.zapp.models.search.DurationQuery import de.christinecoenen.code.zapp.models.search.DurationQuerySet @@ -40,6 +41,7 @@ import timber.log.Timber class SearchViewModel( private val searchRepository: SearchRepository, private val mediathekRepository: MediathekRepository, + private val settingsRepository: SettingsRepository, private val mediathekApi: IMediathekApiService ) : ViewModel() { @@ -218,8 +220,10 @@ class SearchViewModel( _submittedChannels.tryEmit(_channels.value) _submittedDurationQueries.tryEmit(_durationQueries.value) - viewModelScope.launch { - searchRepository.saveQuery(_searchQuery.value) + if (settingsRepository.searchHistory) { + viewModelScope.launch { + searchRepository.saveQuery(_searchQuery.value) + } } } diff --git a/app/src/main/java/de/christinecoenen/code/zapp/app/settings/repository/SettingsRepository.kt b/app/src/main/java/de/christinecoenen/code/zapp/app/settings/repository/SettingsRepository.kt index ae27eac4..376e9610 100644 --- a/app/src/main/java/de/christinecoenen/code/zapp/app/settings/repository/SettingsRepository.kt +++ b/app/src/main/java/de/christinecoenen/code/zapp/app/settings/repository/SettingsRepository.kt @@ -25,7 +25,10 @@ class SettingsRepository(context: Context) { val meteredNetworkStreamQuality: StreamQualityBucket @SuppressLint("DefaultLocale") - get() = preferences.getString(context.getString(R.string.pref_key_stream_quality_over_metered_network), null).let { quality -> + get() = preferences.getString( + context.getString(R.string.pref_key_stream_quality_over_metered_network), + null + ).let { quality -> if (quality == null) { StreamQualityBucket.DISABLED } else { @@ -34,7 +37,10 @@ class SettingsRepository(context: Context) { } val downloadOverUnmeteredNetworkOnly: Boolean - get() = preferences.getBoolean(context.getString(R.string.pref_key_download_over_unmetered_network_only), true) + get() = preferences.getBoolean( + context.getString(R.string.pref_key_download_over_unmetered_network_only), + true + ) var isPlayerZoomed: Boolean get() = preferences.getBoolean(context.getString(R.string.pref_key_player_zoomed), false) @@ -59,7 +65,10 @@ class SettingsRepository(context: Context) { } val downloadToSdCard: Boolean - get() = preferences.getBoolean(context.getString(R.string.pref_key_download_to_sd_card), true) + get() = preferences.getBoolean( + context.getString(R.string.pref_key_download_to_sd_card), + true + ) val dynamicColors: Boolean get() = preferences.getBoolean(context.getString(R.string.pref_key_dynamic_colors), false) @@ -71,12 +80,21 @@ class SettingsRepository(context: Context) { } val startFragment: Int - get() = when (preferences.getString(context.getString(R.string.pref_key_start_tab), "live")) { + get() = when (preferences.getString( + context.getString(R.string.pref_key_start_tab), + "live" + )) { "mediathek" -> R.id.mediathekListFragment "personal" -> R.id.personalFragment else -> R.id.channelListFragment } + val searchHistory: Boolean + get() = preferences.getBoolean( + context.getString(R.string.pref_key_search_history), + true + ) + fun prefValueToUiMode(prefSetting: String?): Int { val defaultMode = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM else AppCompatDelegate.MODE_NIGHT_AUTO_BATTERY @@ -84,8 +102,10 @@ class SettingsRepository(context: Context) { return when (prefSetting) { "light" -> AppCompatDelegate.MODE_NIGHT_NO + "dark" -> AppCompatDelegate.MODE_NIGHT_YES + else -> defaultMode } diff --git a/app/src/main/res/raw-en/changelog.md b/app/src/main/res/raw-en/changelog.md index b8028de6..cca1b28f 100644 --- a/app/src/main/res/raw-en/changelog.md +++ b/app/src/main/res/raw-en/changelog.md @@ -1,3 +1,6 @@ +# v-next +* Add option to disable search history (thanks to Bnyro) + # 9.0.0-beta1 * Fixed bug where download buttons were shows when no download available * Prepared Zapp for Android 15 diff --git a/app/src/main/res/raw/changelog.md b/app/src/main/res/raw/changelog.md index d43cc681..233b32b1 100644 --- a/app/src/main/res/raw/changelog.md +++ b/app/src/main/res/raw/changelog.md @@ -1,3 +1,6 @@ +# v-next +* Möglichkeit hinzugefügt, den Suchverlauf auszuschalten (danke an Bnyro) + # 9.0.0-beta1 * Fehler behoben, bei dem Download-Buttons bei Sendungen ohne Downloads angezeigt wurden * Zapp für Android 15 vorbereitet diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index adff863a..835a110c 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -167,6 +167,9 @@ Dynamic colors Choose accent colors based on the wallpaper. + Search history + Remember the most recent search queries. + Background player Download progress diff --git a/app/src/main/res/values/donottranslate.xml b/app/src/main/res/values/donottranslate.xml index 525c05fb..7e56b2bc 100644 --- a/app/src/main/res/values/donottranslate.xml +++ b/app/src/main/res/values/donottranslate.xml @@ -12,6 +12,7 @@ pref_shortcuts pref_key_sleep_timer_delay_millis pref_key_player_zoomed + pref_key_search_history pref_key_download_to_sd_card pref_key_start_tab diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 92f2aba7..718018a2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -168,6 +168,9 @@ Dynamische Farben Wähle Akzentfarben basierend auf dem Geräte-Hintergrund. + Suchverlauf + Speichere die letzten Suchanfragen. + Hintergrund-Videoplayer Download Fortschritt diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 2f66eb73..23032a31 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -96,6 +96,12 @@ android:icon="@drawable/ic_outline_save_24" android:title="@string/pref_header_data"> + +