Recreate icon repository on activity recreation
This commit is contained in:
parent
dcb315baec
commit
8f5e920d4e
@ -7,7 +7,7 @@ import android.content.IntentFilter
|
|||||||
import android.util.LruCache
|
import android.util.LruCache
|
||||||
import de.mm20.launcher2.icons.providers.*
|
import de.mm20.launcher2.icons.providers.*
|
||||||
import de.mm20.launcher2.preferences.LauncherDataStore
|
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 de.mm20.launcher2.search.data.Searchable
|
||||||
import kotlinx.coroutines.*
|
import kotlinx.coroutines.*
|
||||||
import kotlinx.coroutines.flow.*
|
import kotlinx.coroutines.flow.*
|
||||||
@ -45,28 +45,7 @@ class IconRepository(
|
|||||||
|
|
||||||
scope.launch {
|
scope.launch {
|
||||||
dataStore.data.map { it.icons }.distinctUntilChanged().collectLatest {
|
dataStore.data.map { it.icons }.distinctUntilChanged().collectLatest {
|
||||||
val placeholderProvider = if (it.themedIcons) {
|
recreate(it)
|
||||||
ThemedPlaceholderIconProvider(context)
|
|
||||||
} else {
|
|
||||||
PlaceholderIconProvider(context)
|
|
||||||
}
|
|
||||||
val providers = mutableListOf<IconProvider>()
|
|
||||||
|
|
||||||
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
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -120,4 +99,35 @@ class IconRepository(
|
|||||||
suspend fun getInstalledIconPacks(): List<IconPack> {
|
suspend fun getInstalledIconPacks(): List<IconPack> {
|
||||||
return iconPackManager.getInstalledIconPacks()
|
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<IconProvider>()
|
||||||
|
|
||||||
|
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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -24,6 +24,7 @@ import de.mm20.launcher2.ui.launcher.modals.EditFavoritesView
|
|||||||
import de.mm20.launcher2.ui.launcher.modals.HiddenItemsView
|
import de.mm20.launcher2.ui.launcher.modals.HiddenItemsView
|
||||||
import kotlinx.coroutines.*
|
import kotlinx.coroutines.*
|
||||||
import org.koin.android.ext.android.inject
|
import org.koin.android.ext.android.inject
|
||||||
|
import org.koin.core.component.inject
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
|
|
||||||
@ -36,6 +37,9 @@ class LauncherActivity : BaseActivity() {
|
|||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
|
||||||
|
val iconRepository: IconRepository by inject()
|
||||||
|
iconRepository.recreate()
|
||||||
|
|
||||||
WindowCompat.setDecorFitsSystemWindows(window, false)
|
WindowCompat.setDecorFitsSystemWindows(window, false)
|
||||||
|
|
||||||
viewModel.setDarkMode(resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK == Configuration.UI_MODE_NIGHT_YES)
|
viewModel.setDarkMode(resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK == Configuration.UI_MODE_NIGHT_YES)
|
||||||
|
|||||||
@ -3,12 +3,10 @@ package de.mm20.launcher2.ui.launcher
|
|||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
import androidx.lifecycle.asLiveData
|
import androidx.lifecycle.asLiveData
|
||||||
import androidx.lifecycle.viewModelScope
|
|
||||||
import de.mm20.launcher2.preferences.LauncherDataStore
|
import de.mm20.launcher2.preferences.LauncherDataStore
|
||||||
import kotlinx.coroutines.flow.MutableStateFlow
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
import kotlinx.coroutines.flow.combine
|
import kotlinx.coroutines.flow.combine
|
||||||
import kotlinx.coroutines.flow.map
|
import kotlinx.coroutines.flow.map
|
||||||
import kotlinx.coroutines.launch
|
|
||||||
import org.koin.core.component.KoinComponent
|
import org.koin.core.component.KoinComponent
|
||||||
import org.koin.core.component.inject
|
import org.koin.core.component.inject
|
||||||
|
|
||||||
@ -27,12 +25,6 @@ class LauncherActivityVM : ViewModel(), KoinComponent {
|
|||||||
dim && darkMode
|
dim && darkMode
|
||||||
}.asLiveData()
|
}.asLiveData()
|
||||||
|
|
||||||
init {
|
|
||||||
viewModelScope.launch {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun setDarkMode(darkMode: Boolean) {
|
fun setDarkMode(darkMode: Boolean) {
|
||||||
isDarkInMode.value = darkMode
|
isDarkInMode.value = darkMode
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user