diff --git a/icons/src/main/java/de/mm20/launcher2/icons/IconRepository.kt b/icons/src/main/java/de/mm20/launcher2/icons/IconRepository.kt index 9cee7c70..99bd18d7 100644 --- a/icons/src/main/java/de/mm20/launcher2/icons/IconRepository.kt +++ b/icons/src/main/java/de/mm20/launcher2/icons/IconRepository.kt @@ -7,7 +7,7 @@ import android.content.IntentFilter import android.util.LruCache import de.mm20.launcher2.icons.providers.* import de.mm20.launcher2.preferences.LauncherDataStore -import de.mm20.launcher2.preferences.LauncherPreferences +import de.mm20.launcher2.preferences.Settings import de.mm20.launcher2.search.data.Searchable import kotlinx.coroutines.* import kotlinx.coroutines.flow.* @@ -45,28 +45,7 @@ class IconRepository( scope.launch { dataStore.data.map { it.icons }.distinctUntilChanged().collectLatest { - val placeholderProvider = if (it.themedIcons) { - ThemedPlaceholderIconProvider(context) - } else { - PlaceholderIconProvider(context) - } - val providers = mutableListOf() - - if (it.themedIcons) { - providers.add(ThemedIconProvider(context)) - } - - if (it.iconPack.isNotBlank()) { - providers.add(IconPackIconProvider(context, it.iconPack, it.legacyIconBg)) - } - providers.add(GoogleClockIconProvider(context)) - providers.add(CalendarIconProvider(context)) - providers.add(SystemIconProvider(context, it.legacyIconBg)) - providers.add(placeholderProvider) - cache.evictAll() - - this@IconRepository.placeholderProvider = placeholderProvider - iconProviders.value = providers + recreate(it) } } } @@ -120,4 +99,35 @@ class IconRepository( suspend fun getInstalledIconPacks(): List { return iconPackManager.getInstalledIconPacks() } + + fun recreate() { + scope.launch { + recreate(dataStore.data.map { it.icons }.first()) + } + } + + private fun recreate(settings: Settings.IconSettings) { + val placeholderProvider = if (settings.themedIcons) { + ThemedPlaceholderIconProvider(context) + } else { + PlaceholderIconProvider(context) + } + val providers = mutableListOf() + + if (settings.themedIcons) { + providers.add(ThemedIconProvider(context)) + } + + if (settings.iconPack.isNotBlank()) { + providers.add(IconPackIconProvider(context, settings.iconPack, settings.legacyIconBg)) + } + providers.add(GoogleClockIconProvider(context)) + providers.add(CalendarIconProvider(context)) + providers.add(SystemIconProvider(context, settings.legacyIconBg)) + providers.add(placeholderProvider) + cache.evictAll() + + this@IconRepository.placeholderProvider = placeholderProvider + iconProviders.value = providers + } } \ No newline at end of file diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/LauncherActivity.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/LauncherActivity.kt index eca825fb..68a06814 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/LauncherActivity.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/LauncherActivity.kt @@ -24,6 +24,7 @@ import de.mm20.launcher2.ui.launcher.modals.EditFavoritesView import de.mm20.launcher2.ui.launcher.modals.HiddenItemsView import kotlinx.coroutines.* import org.koin.android.ext.android.inject +import org.koin.core.component.inject import java.util.* @@ -36,6 +37,9 @@ class LauncherActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + val iconRepository: IconRepository by inject() + iconRepository.recreate() + WindowCompat.setDecorFitsSystemWindows(window, false) viewModel.setDarkMode(resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK == Configuration.UI_MODE_NIGHT_YES) diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/LauncherActivityVM.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/LauncherActivityVM.kt index 11665ce3..9e34af18 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/LauncherActivityVM.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/LauncherActivityVM.kt @@ -3,12 +3,10 @@ package de.mm20.launcher2.ui.launcher import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.asLiveData -import androidx.lifecycle.viewModelScope import de.mm20.launcher2.preferences.LauncherDataStore import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.map -import kotlinx.coroutines.launch import org.koin.core.component.KoinComponent import org.koin.core.component.inject @@ -27,12 +25,6 @@ class LauncherActivityVM : ViewModel(), KoinComponent { dim && darkMode }.asLiveData() - init { - viewModelScope.launch { - - } - } - fun setDarkMode(darkMode: Boolean) { isDarkInMode.value = darkMode }