Improve icon pack icon search

This commit is contained in:
MM20 2023-02-14 21:37:06 +01:00
parent 6407d0577f
commit af858bfbbe
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389
2 changed files with 16 additions and 4 deletions

View File

@ -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<IconEntity>
@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<IconEntity>
@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<IconEntity>
@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<IconEntity>

View File

@ -394,7 +394,12 @@ class IconPackManager(
suspend fun searchIconPackIcon(query: String): List<IconPackIcon> {
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)
}