Reset search filters when query is cleared
This commit is contained in:
@@ -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()
|
||||
}
|
||||
+34
-1
@@ -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()) }
|
||||
}
|
||||
+11
@@ -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 }
|
||||
}
|
||||
Reference in New Issue
Block a user