From 4da60d1eaba8659124de25a3cecbded9264fb857 Mon Sep 17 00:00:00 2001 From: Yasan Ghaffarian Date: Sun, 17 Apr 2022 09:47:00 +0430 Subject: [PATCH] Allow setting default QsbSearchProvider on config.xml Co-authored-by: Daria Hamrah Paytakht --- lawnchair/res/values/config.xml | 4 ++++ .../qsb/providers/QsbSearchProvider.kt | 23 +++++++++++++++++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/lawnchair/res/values/config.xml b/lawnchair/res/values/config.xml index d1cf9cc612..4dc2ad717b 100644 --- a/lawnchair/res/values/config.xml +++ b/lawnchair/res/values/config.xml @@ -33,4 +33,8 @@ @string/launcher_component + + + google + diff --git a/lawnchair/src/app/lawnchair/qsb/providers/QsbSearchProvider.kt b/lawnchair/src/app/lawnchair/qsb/providers/QsbSearchProvider.kt index 62508a1d97..37a43614fb 100644 --- a/lawnchair/src/app/lawnchair/qsb/providers/QsbSearchProvider.kt +++ b/lawnchair/src/app/lawnchair/qsb/providers/QsbSearchProvider.kt @@ -57,10 +57,29 @@ open class QsbSearchProvider( fun fromId(id: String): QsbSearchProvider = values().firstOrNull { it.id == id } ?: AppSearch - fun resolveDefault(context: Context): QsbSearchProvider = - values() + /** + * Resolve the default search provider. + */ + fun resolveDefault(context: Context): QsbSearchProvider { + val defaultProviderId = context.getString(R.string.config_default_qsb_search_provider_id) + val defaultProvider = fromId(defaultProviderId) + val isDefaultProviderIntentResolved = QsbLayout.resolveIntent(context, defaultProvider.createSearchIntent()) + + // Return the default value from config.xml if the value is valid + if (isDefaultProviderIntentResolved) { + if (defaultProvider != AppSearch || + (defaultProvider == AppSearch && defaultProviderId == AppSearch.id)) { + return defaultProvider + } + } + + // Return the best default option if the config.xml value is invalid + return values() .filterNot { it == AppSearch } .firstOrNull { QsbLayout.resolveIntent(context, it.createSearchIntent()) } ?: AppSearch + + } + } } \ No newline at end of file