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')") @Query("SELECT * FROM Icons WHERE componentName = :componentName AND (type = 'app' OR type = 'calendar')")
suspend fun getIconsFromAllPacks(componentName: String): List<IconEntity> 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") @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(query: String, limit: Int = 100): List<IconEntity> 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") @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> 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> { suspend fun searchIconPackIcon(query: String): List<IconPackIcon> {
val iconDao = appDatabase.iconDao() 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) IconPackIcon(it)
} }
} }
@ -529,10 +534,14 @@ class UpdateIconPacksWorker(val context: Context) {
) )
) )
?: continue@loop ?: continue@loop
val name = parser.getAttributeValue(null, "name")
val icon = IconPackIcon( val icon = IconPackIcon(
componentName = componentName, componentName = componentName,
drawable = drawable, drawable = drawable,
iconPack = pkgName, iconPack = pkgName,
name = name,
type = "app" type = "app"
) )
icons.add(icon) icons.add(icon)
@ -551,11 +560,14 @@ class UpdateIconPacksWorker(val context: Context) {
) )
?: continue@loop ?: continue@loop
val name = parser.getAttributeValue(null, "name")
val icon = IconPackIcon( val icon = IconPackIcon(
componentName = componentName, componentName = componentName,
drawable = drawable, drawable = drawable,
iconPack = pkgName, iconPack = pkgName,
type = "calendar" type = "calendar",
name = name,
) )
icons.add(icon) icons.add(icon)
} }