Reset search filters when query is cleared

This commit is contained in:
MM20
2024-04-21 20:30:55 +02:00
parent eda57aea2b
commit ee83b87f39
12 changed files with 91 additions and 55 deletions
+1
View File
@@ -1,6 +1,7 @@
plugins {
alias(libs.plugins.android.library)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.plugin.serialization)
}
android {
@@ -0,0 +1,25 @@
package de.mm20.launcher2.search
import de.mm20.launcher2.ktx.toInt
import kotlinx.serialization.Serializable
@Serializable
data class SearchFilters(
val allowNetwork: Boolean = false,
val hiddenItems: Boolean = false,
val apps: Boolean = true,
val websites: Boolean = true,
val articles: Boolean = true,
val places: Boolean = true,
val files: Boolean = true,
val shortcuts: Boolean = true,
val contacts: Boolean = true,
val events: Boolean = true,
val tools: Boolean = true,
) {
val allCategoriesEnabled
get() = apps && websites && articles && places && files && shortcuts && contacts && events && tools
val enabledCategories: Int
get() = apps.toInt() + websites.toInt() + articles.toInt() + places.toInt() + files.toInt() + shortcuts.toInt() + contacts.toInt() + events.toInt() + tools.toInt()
}
@@ -2,6 +2,7 @@ package de.mm20.launcher2.preferences
import android.content.Context
import de.mm20.launcher2.preferences.search.LocationSearchSettings
import de.mm20.launcher2.search.SearchFilters
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@@ -144,6 +145,23 @@ data class LauncherSettingsData internal constructor(
val locationSearchShowPositionOnMap: Boolean = false,
val locationSearchThemeMap: Boolean = true,
val searchFilter: SearchFilters = SearchFilters(),
val searchFilterBar: Boolean = true,
val searchFilterBarItems: List<KeyboardFilterBarItem> = listOf(
KeyboardFilterBarItem.OnlineResults,
KeyboardFilterBarItem.Apps,
KeyboardFilterBarItem.Shortcuts,
KeyboardFilterBarItem.Events,
KeyboardFilterBarItem.Contacts,
KeyboardFilterBarItem.Files,
KeyboardFilterBarItem.Places,
KeyboardFilterBarItem.Articles,
KeyboardFilterBarItem.Websites,
KeyboardFilterBarItem.Places,
KeyboardFilterBarItem.Tools,
KeyboardFilterBarItem.HiddenResults,
),
) {
constructor(
@@ -376,4 +394,19 @@ data class LatLon(
data class ProviderSettings(
val locationId: String? = null,
val locationName: String? = null,
)
)
@Serializable
enum class KeyboardFilterBarItem {
@SerialName("online") OnlineResults,
@SerialName("apps") Apps,
@SerialName("websites") Websites,
@SerialName("articles") Articles,
@SerialName("places") Places,
@SerialName("files") Files,
@SerialName("shortcuts") Shortcuts,
@SerialName("contacts") Contacts,
@SerialName("events") Events,
@SerialName("tools") Tools,
@SerialName("hidden") HiddenResults,
}
@@ -9,6 +9,7 @@ import de.mm20.launcher2.preferences.search.FavoritesSettings
import de.mm20.launcher2.preferences.search.FileSearchSettings
import de.mm20.launcher2.preferences.search.LocationSearchSettings
import de.mm20.launcher2.preferences.search.RankingSettings
import de.mm20.launcher2.preferences.search.SearchFilterSettings
import de.mm20.launcher2.preferences.search.ShortcutSearchSettings
import de.mm20.launcher2.preferences.search.UnitConverterSettings
import de.mm20.launcher2.preferences.search.WebsiteSearchSettings
@@ -49,4 +50,5 @@ val preferencesModule = module {
factory { CalculatorSearchSettings(get()) }
factory { ClockWidgetSettings(get()) }
factory { LocationSearchSettings(get()) }
factory { SearchFilterSettings(get()) }
}
@@ -0,0 +1,11 @@
package de.mm20.launcher2.preferences.search
import de.mm20.launcher2.preferences.LauncherDataStore
import kotlinx.coroutines.flow.map
class SearchFilterSettings internal constructor(
private val launcherDataStore: LauncherDataStore,
) {
val defaultFilter
get() = launcherDataStore.data.map { it.searchFilter }
}