Only add quick launch for apps search

This commit is contained in:
Suphon Thanakornpakapong
2021-10-28 17:31:57 +07:00
parent 8c50b0cd2f
commit 518df96fcc
4 changed files with 8 additions and 6 deletions
@@ -26,6 +26,7 @@ import com.android.launcher3.util.PackageManagerHelper
import me.xdrop.fuzzywuzzy.FuzzySearch
import me.xdrop.fuzzywuzzy.algorithms.WeightedRatio
import java.util.*
import kotlin.collections.ArrayList
class LawnchairAppSearchAlgorithm(context: Context) : LawnchairSearchAlgorithm(context) {
@@ -74,7 +75,8 @@ class LawnchairAppSearchAlgorithm(context: Context) : LawnchairSearchAlgorithm(c
if (results.isEmpty()) {
results.add(getEmptySearchItem(query))
}
return transformSearchResults(results)
val adapterItems = transformSearchResults(results)
return ArrayList(LawnchairSearchAdapterProvider.setFirstItemQuickLaunch(adapterItems))
}
private fun getShortcuts(app: AppInfo): List<ShortcutInfo> {
@@ -23,6 +23,7 @@ import com.android.launcher3.LauncherAppState;
import com.android.launcher3.allapps.AllAppsGridAdapter;
import com.android.launcher3.search.SearchCallback;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
import java.util.stream.Collectors;
@@ -102,7 +103,7 @@ public class LawnchairDeviceSearchAlgorithm extends LawnchairSearchAlgorithm {
List<SearchTargetCompat> targets = platformTargets.stream().map(SearchTargetCompat::wrap).collect(Collectors.toList());
targets.forEach(target -> Log.d("DeviceSearchAlg", "type=" + target.getResultType() + ", layout=" + target.getLayoutType() + ", id=" + target.getId()));
Log.d("DeviceSearchAlg", "=====");
mCallback.onSearchResult(mQuery, transformSearchResults(targets));
mCallback.onSearchResult(mQuery, new ArrayList<>(transformSearchResults(targets)));
}
}
@@ -75,7 +75,7 @@ class LawnchairSearchAdapterProvider(
LayoutType.EMPTY_DIVIDER to SEARCH_RESULT_DIVIDER,
)
fun decorateSearchResults(items: List<SearchAdapterItem>): List<SearchAdapterItem> {
fun setFirstItemQuickLaunch(items: List<SearchAdapterItem>): List<SearchAdapterItem> {
items.firstOrNull()?.searchTarget?.extras?.apply {
putBoolean(SearchResultView.EXTRA_QUICK_LAUNCH, true)
}
@@ -34,12 +34,12 @@ abstract class LawnchairSearchAlgorithm(
roundTop = false, roundBottom = true
)
protected fun transformSearchResults(results: List<SearchTargetCompat>): ArrayList<AllAppsGridAdapter.AdapterItem> {
protected fun transformSearchResults(results: List<SearchTargetCompat>): List<SearchAdapterItem> {
val filtered = results
.filter { it.packageName != BuildConfig.APPLICATION_ID }
.filter { it.packageName != "com.android.settings" }
.filter { LawnchairSearchAdapterProvider.viewTypeMap[it.layoutType] != null }
val items = filtered
return filtered
.mapIndexedNotNull { index, target ->
val isFirst = index == 0 || filtered[index - 1].isDivider
val isLast = index == filtered.lastIndex || filtered[index + 1].isDivider
@@ -53,7 +53,6 @@ abstract class LawnchairSearchAlgorithm(
}
SearchAdapterItem.createAdapterItem(index, target, background)
}
return ArrayList(LawnchairSearchAdapterProvider.decorateSearchResults(items))
}
companion object {