Fix quick launch item (again)

This commit is contained in:
SuperDragonXD
2024-06-27 14:16:58 +08:00
parent 085da18333
commit fc9efa9bd1
5 changed files with 50 additions and 52 deletions
@@ -124,14 +124,5 @@ class LawnchairSearchAdapterProvider(
LayoutType.WIDGET_LIVE to SEARCH_RESULT_RECENT_TILE,
LayoutType.CALCULATOR to SEARCH_RESULT_CALCULATOR,
)
fun setFirstItemQuickLaunch(items: List<SearchAdapterItem>) {
val hasQuickLaunch = items.any { it.searchTarget.extras.getBoolean(EXTRA_QUICK_LAUNCH, false) }
if (!hasQuickLaunch) {
items.firstOrNull()?.searchTarget?.extras?.apply {
putBoolean(EXTRA_QUICK_LAUNCH, true)
}
}
}
}
}
@@ -12,7 +12,6 @@ import androidx.core.os.bundleOf
import app.lawnchair.compat.LawnchairQuickstepCompat
import app.lawnchair.preferences.PreferenceChangeListener
import app.lawnchair.preferences.PreferenceManager
import app.lawnchair.search.LawnchairSearchAdapterProvider
import app.lawnchair.search.adapter.SearchTargetCompat
import app.lawnchair.util.requireSystemService
import com.android.launcher3.LauncherAppState
@@ -110,8 +109,8 @@ class LawnchairASISearchAlgorithm(context: Context) :
override fun accept(platformTargets: List<SearchTarget>) {
if (!canceled) {
val targets = platformTargets.map { SearchTargetCompat.wrap(it) }
setFirstItemQuickLaunch(targets)
val adapterItems = transformSearchResults(targets)
LawnchairSearchAdapterProvider.setFirstItemQuickLaunch(adapterItems)
callback.onSearchResult(
query,
ArrayList<BaseAllAppsAdapter.AdapterItem>(adapterItems),
@@ -3,7 +3,6 @@ package app.lawnchair.search.algorithms
import android.content.Context
import android.os.Handler
import app.lawnchair.preferences2.PreferenceManager2
import app.lawnchair.search.LawnchairSearchAdapterProvider
import app.lawnchair.search.adapter.GenerateSearchTarget
import app.lawnchair.search.adapter.SPACE
import app.lawnchair.search.adapter.SearchTargetCompat
@@ -85,18 +84,18 @@ class LawnchairAppSearchAlgorithm(context: Context) : LawnchairSearchAlgorithm(c
val searchTargets = mutableListOf<SearchTargetCompat>()
if (appResults.isNotEmpty()) {
appResults.mapTo(searchTargets, ::createSearchTarget)
}
if (appResults.size == 1 && context.isDefaultLauncher()) {
val singleAppResult = appResults.firstOrNull()
val shortcuts = singleAppResult?.let { searchUtils.getShortcuts(it, context) }
if (shortcuts != null) {
if (shortcuts.isNotEmpty()) {
searchTargets.add(generateSearchTarget.getHeaderTarget(SPACE))
searchTargets.add(createSearchTarget(singleAppResult, true))
searchTargets.addAll(shortcuts.map(::createSearchTarget))
if (appResults.size == 1 && context.isDefaultLauncher()) {
val singleAppResult = appResults.firstOrNull()
val shortcuts = singleAppResult?.let { searchUtils.getShortcuts(it, context) }
if (shortcuts != null) {
if (shortcuts.isNotEmpty()) {
searchTargets.add(generateSearchTarget.getHeaderTarget(SPACE))
searchTargets.add(createSearchTarget(singleAppResult, true))
searchTargets.addAll(shortcuts.map(::createSearchTarget))
}
}
} else {
appResults.mapTo(searchTargets, ::createSearchTarget)
}
}
@@ -104,8 +103,8 @@ class LawnchairAppSearchAlgorithm(context: Context) : LawnchairSearchAlgorithm(c
generateSearchTarget.getMarketSearchItem(query)?.let { searchTargets.add(it) }
setFirstItemQuickLaunch(searchTargets)
val adapterItems = transformSearchResults(searchTargets)
LawnchairSearchAdapterProvider.setFirstItemQuickLaunch(adapterItems)
return ArrayList(adapterItems)
}
}
@@ -148,19 +148,19 @@ class LawnchairLocalSearchAlgorithm(context: Context) : LawnchairSearchAlgorithm
val searchTargets = mutableListOf<SearchTargetCompat>()
if (appResults.isNotEmpty() && searchApps) {
appResults.mapTo(searchTargets, ::createSearchTarget)
}
if (appResults.size == 1 && searchApps && context.isDefaultLauncher()) {
val singleAppResult = appResults.firstOrNull()
val shortcuts = singleAppResult?.let { searchUtils.getShortcuts(it, context) }
if (shortcuts != null) {
if (shortcuts.isNotEmpty()) {
searchTargets.add(generateSearchTarget.getHeaderTarget(SPACE))
searchTargets.add(createSearchTarget(singleAppResult, true))
searchTargets.addAll(shortcuts.map(::createSearchTarget))
if (appResults.isNotEmpty()) {
if (appResults.size == 1 && context.isDefaultLauncher()) {
val singleAppResult = appResults.firstOrNull()
val shortcuts = singleAppResult?.let { searchUtils.getShortcuts(it, context) }
if (shortcuts != null) {
if (shortcuts.isNotEmpty()) {
searchTargets.add(generateSearchTarget.getHeaderTarget(SPACE))
searchTargets.add(createSearchTarget(singleAppResult, true))
searchTargets.addAll(shortcuts.map(::createSearchTarget))
}
}
} else {
appResults.mapTo(searchTargets, ::createSearchTarget)
}
}
@@ -217,8 +217,8 @@ class LawnchairLocalSearchAlgorithm(context: Context) : LawnchairSearchAlgorithm
if (useWebSuggestions) searchTargets.add(generateSearchTarget.getStartPageSearchItem(query))
generateSearchTarget.getMarketSearchItem(query)?.let { searchTargets.add(it) }
setFirstItemQuickLaunch(searchTargets)
val adapterItems = transformSearchResults(searchTargets)
LawnchairSearchAdapterProvider.setFirstItemQuickLaunch(adapterItems)
return ArrayList(adapterItems)
}
@@ -86,23 +86,32 @@ sealed class LawnchairSearchAlgorithm(
if (target.extras.getBoolean(EXTRA_QUICK_LAUNCH, false)) {
SearchAdapterItem.createAdapterItem(target, normalBackground)
} else {
val background = getBackground(
target.layoutType,
index,
isFirst,
isLast,
smallIconIndices,
iconRowIndices,
peopleTileIndices,
suggestionIndices,
fileIndices,
settingIndices,
recentIndices,
calculator,
)
SearchAdapterItem.createAdapterItem(target, background)
}
}
}
val background = getBackground(
target.layoutType,
index,
isFirst,
isLast,
smallIconIndices,
iconRowIndices,
peopleTileIndices,
suggestionIndices,
fileIndices,
settingIndices,
recentIndices,
calculator,
)
SearchAdapterItem.createAdapterItem(target, background)
protected fun setFirstItemQuickLaunch(searchTargets: List<SearchTargetCompat>) {
val hasQuickLaunch = searchTargets.any {it.extras.getBoolean(EXTRA_QUICK_LAUNCH, false) }
if (!hasQuickLaunch) {
searchTargets.firstOrNull()?.extras?.apply {
putBoolean(EXTRA_QUICK_LAUNCH, true)
}
}
}