diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/settings/debug/DebugSettingsScreen.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/settings/debug/DebugSettingsScreen.kt
index 17879368..d7c6fe02 100644
--- a/app/ui/src/main/java/de/mm20/launcher2/ui/settings/debug/DebugSettingsScreen.kt
+++ b/app/ui/src/main/java/de/mm20/launcher2/ui/settings/debug/DebugSettingsScreen.kt
@@ -56,6 +56,12 @@ fun DebugSettingsScreen() {
).show()
}
})
+ Preference(
+ title = stringResource(R.string.preference_debug_reinstall_iconpacks),
+ summary = stringResource(R.string.preference_debug_reinstall_iconpacks_summary),
+ onClick = {
+ viewModel.reinstallIconPacks()
+ })
}
}
}
diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/settings/debug/DebugSettingsScreenVM.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/settings/debug/DebugSettingsScreenVM.kt
index e4c67ac1..09b72802 100644
--- a/app/ui/src/main/java/de/mm20/launcher2/ui/settings/debug/DebugSettingsScreenVM.kt
+++ b/app/ui/src/main/java/de/mm20/launcher2/ui/settings/debug/DebugSettingsScreenVM.kt
@@ -2,6 +2,7 @@ package de.mm20.launcher2.ui.settings.debug
import androidx.lifecycle.ViewModel
import de.mm20.launcher2.data.customattrs.CustomAttributesRepository
+import de.mm20.launcher2.icons.IconService
import de.mm20.launcher2.searchable.SearchableRepository
import org.koin.core.component.KoinComponent
import org.koin.core.component.inject
@@ -10,9 +11,14 @@ class DebugSettingsScreenVM: ViewModel(), KoinComponent {
private val searchableRepository: SearchableRepository by inject()
private val customAttributesRepository: CustomAttributesRepository by inject()
+ private val iconService: IconService by inject()
suspend fun cleanUpDatabase(): Int {
var removed = searchableRepository.cleanupDatabase()
removed += customAttributesRepository.cleanupDatabase()
return removed
}
+
+ fun reinstallIconPacks() {
+ iconService.reinstallAllIconPacks()
+ }
}
\ No newline at end of file
diff --git a/core/i18n/src/main/res/values/strings.xml b/core/i18n/src/main/res/values/strings.xml
index 4c8da071..84e1d717 100644
--- a/core/i18n/src/main/res/values/strings.xml
+++ b/core/i18n/src/main/res/values/strings.xml
@@ -458,6 +458,8 @@
Tools
Clean up database
Remove broken and unused entries from the launcher database
+ Reinstall icon packs
+ Clear and rebuild the icon pack cache
- %1$d entry has been removed.
- %1$d entries have been removed.
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 c842acb9..5d1532aa 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
@@ -50,7 +50,7 @@ class IconPackManager(
}
private var updateIconPacksMutex = Mutex()
- suspend fun updateIconPacks(): Boolean {
+ suspend fun updateIconPacks(forceReinstall: Boolean = false): Boolean {
var iconsHaveBeenUpdated = false
updateIconPacksMutex.lock()
val installers = listOf(
@@ -61,7 +61,7 @@ class IconPackManager(
for (installer in installers) {
val iconPacks = installer.getInstalledIconPacks()
for (pack in iconPacks) {
- if (!installer.isInstalledAndUpToDate(pack)) {
+ if (forceReinstall || !installer.isInstalledAndUpToDate(pack)) {
installer.install(pack)
iconsHaveBeenUpdated = true
} else {
diff --git a/services/icons/src/main/java/de/mm20/launcher2/icons/IconService.kt b/services/icons/src/main/java/de/mm20/launcher2/icons/IconService.kt
index 833dbe04..1a720d4a 100644
--- a/services/icons/src/main/java/de/mm20/launcher2/icons/IconService.kt
+++ b/services/icons/src/main/java/de/mm20/launcher2/icons/IconService.kt
@@ -228,6 +228,13 @@ class IconService(
}
}
+ fun reinstallAllIconPacks() {
+ scope.launch {
+ iconPackManager.updateIconPacks(forceReinstall = true)
+ iconPacksUpdated.tryEmit(Unit)
+ }
+ }
+
fun getInstalledIconPacks(): Flow> {
return iconPackManager.getInstalledIconPacks()
}