From af858bfbbefd1e8ab6204663edafe06a6d51ac85 Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Tue, 14 Feb 2023 21:37:06 +0100 Subject: [PATCH] Improve icon pack icon search --- .../java/de/mm20/launcher2/database/IconDao.kt | 4 ++-- .../de/mm20/launcher2/icons/IconPackManager.kt | 16 ++++++++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/core/database/src/main/java/de/mm20/launcher2/database/IconDao.kt b/core/database/src/main/java/de/mm20/launcher2/database/IconDao.kt index c0973cc8..3be1ab66 100644 --- a/core/database/src/main/java/de/mm20/launcher2/database/IconDao.kt +++ b/core/database/src/main/java/de/mm20/launcher2/database/IconDao.kt @@ -19,8 +19,8 @@ interface IconDao { @Query("SELECT * FROM Icons WHERE componentName = :componentName AND (type = 'app' OR type = 'calendar')") suspend fun getIconsFromAllPacks(componentName: String): List - @Query("SELECT * FROM Icons WHERE (type = 'app' OR type = 'calendar') AND (drawable LIKE :query OR componentName LIKE :query) ORDER BY iconPack, drawable LIMIT :limit") - suspend fun searchIconPackIcons(query: String, limit: Int = 100): List + @Query("SELECT * FROM Icons WHERE (type = 'app' OR type = 'calendar') AND (drawable LIKE :drawableQuery OR componentName LIKE :componentQuery OR name LIKE :nameQuery) ORDER BY iconPack, drawable LIMIT :limit") + suspend fun searchIconPackIcons(componentQuery: String, nameQuery: String, drawableQuery: String, limit: Int = 100): List @Query("SELECT * FROM Icons WHERE (type = 'greyscale_icon') AND componentName LIKE :query GROUP BY componentName ORDER BY drawable LIMIT :limit") suspend fun searchGreyscaleIcons(query: String, limit: Int = 100): List diff --git a/services/icons/src/main/java/de/mm20/launcher2/icons/IconPackManager.kt b/services/icons/src/main/java/de/mm20/launcher2/icons/IconPackManager.kt index 508a648e..ac9e3114 100644 --- a/services/icons/src/main/java/de/mm20/launcher2/icons/IconPackManager.kt +++ b/services/icons/src/main/java/de/mm20/launcher2/icons/IconPackManager.kt @@ -394,7 +394,12 @@ class IconPackManager( suspend fun searchIconPackIcon(query: String): List { val iconDao = appDatabase.iconDao() - return iconDao.searchIconPackIcons("%$query%").map { + val drawableQuery = query.replace(" ", "_").lowercase() + return iconDao.searchIconPackIcons( + drawableQuery = "%$drawableQuery%", + componentQuery = "%$query%", + nameQuery = "%$query%", + ).map { IconPackIcon(it) } } @@ -529,10 +534,14 @@ class UpdateIconPacksWorker(val context: Context) { ) ) ?: continue@loop + + val name = parser.getAttributeValue(null, "name") + val icon = IconPackIcon( componentName = componentName, drawable = drawable, iconPack = pkgName, + name = name, type = "app" ) icons.add(icon) @@ -551,11 +560,14 @@ class UpdateIconPacksWorker(val context: Context) { ) ?: continue@loop + val name = parser.getAttributeValue(null, "name") + val icon = IconPackIcon( componentName = componentName, drawable = drawable, iconPack = pkgName, - type = "calendar" + type = "calendar", + name = name, ) icons.add(icon) }