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">
+
+