Recreate all activities on theme changed
This commit is contained in:
@@ -7,6 +7,7 @@ import androidx.fragment.app.strictmode.FragmentStrictMode
|
||||
import org.koin.android.ext.android.get
|
||||
import org.koin.android.ext.koin.androidContext
|
||||
import org.koin.core.context.startKoin
|
||||
import org.koitharu.kotatsu.base.ui.util.ActivityRecreationHandle
|
||||
import org.koitharu.kotatsu.bookmarks.bookmarksModule
|
||||
import org.koitharu.kotatsu.core.db.databaseModule
|
||||
import org.koitharu.kotatsu.core.github.githubModule
|
||||
@@ -43,6 +44,7 @@ class KotatsuApp : Application() {
|
||||
Thread.setDefaultUncaughtExceptionHandler(AppCrashHandler(applicationContext))
|
||||
AppCompatDelegate.setDefaultNightMode(get<AppSettings>().theme)
|
||||
registerActivityLifecycleCallbacks(get<AppProtectHelper>())
|
||||
registerActivityLifecycleCallbacks(get<ActivityRecreationHandle>())
|
||||
val widgetUpdater = WidgetUpdater(applicationContext)
|
||||
widgetUpdater.subscribeToFavourites(get())
|
||||
widgetUpdater.subscribeToHistory(get())
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
package org.koitharu.kotatsu.base.ui.util
|
||||
|
||||
import android.app.Activity
|
||||
import android.app.Application.ActivityLifecycleCallbacks
|
||||
import android.os.Bundle
|
||||
import java.util.*
|
||||
|
||||
class ActivityRecreationHandle : ActivityLifecycleCallbacks {
|
||||
|
||||
private val activities = WeakHashMap<Activity, Unit>()
|
||||
|
||||
override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
|
||||
activities[activity] = Unit
|
||||
}
|
||||
|
||||
override fun onActivityStarted(activity: Activity) = Unit
|
||||
|
||||
override fun onActivityResumed(activity: Activity) = Unit
|
||||
|
||||
override fun onActivityPaused(activity: Activity) = Unit
|
||||
|
||||
override fun onActivityStopped(activity: Activity) = Unit
|
||||
|
||||
override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) = Unit
|
||||
|
||||
override fun onActivityDestroyed(activity: Activity) {
|
||||
activities.remove(activity)
|
||||
}
|
||||
|
||||
fun recreateAll() {
|
||||
val snapshot = activities.keys.toList()
|
||||
snapshot.forEach { it.recreate() }
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,7 @@ package org.koitharu.kotatsu.main
|
||||
import org.koin.android.ext.koin.androidContext
|
||||
import org.koin.androidx.viewmodel.dsl.viewModel
|
||||
import org.koin.dsl.module
|
||||
import org.koitharu.kotatsu.base.ui.util.ActivityRecreationHandle
|
||||
import org.koitharu.kotatsu.core.os.ShortcutsRepository
|
||||
import org.koitharu.kotatsu.main.ui.MainViewModel
|
||||
import org.koitharu.kotatsu.main.ui.protect.AppProtectHelper
|
||||
@@ -11,6 +12,7 @@ import org.koitharu.kotatsu.main.ui.protect.ProtectViewModel
|
||||
val mainModule
|
||||
get() = module {
|
||||
single { AppProtectHelper(get()) }
|
||||
single { ActivityRecreationHandle() }
|
||||
factory { ShortcutsRepository(androidContext(), get(), get(), get()) }
|
||||
viewModel { MainViewModel(get(), get()) }
|
||||
viewModel { ProtectViewModel(get(), get()) }
|
||||
|
||||
@@ -8,15 +8,17 @@ import androidx.appcompat.app.AppCompatDelegate
|
||||
import androidx.preference.ListPreference
|
||||
import androidx.preference.Preference
|
||||
import androidx.preference.TwoStatePreference
|
||||
import java.util.*
|
||||
import org.koin.android.ext.android.get
|
||||
import org.koitharu.kotatsu.R
|
||||
import org.koitharu.kotatsu.base.ui.BasePreferenceFragment
|
||||
import org.koitharu.kotatsu.base.ui.util.ActivityRecreationHandle
|
||||
import org.koitharu.kotatsu.core.prefs.AppSettings
|
||||
import org.koitharu.kotatsu.core.prefs.ListMode
|
||||
import org.koitharu.kotatsu.parsers.util.names
|
||||
import org.koitharu.kotatsu.settings.protect.ProtectSetupActivity
|
||||
import org.koitharu.kotatsu.settings.utils.SliderPreference
|
||||
import org.koitharu.kotatsu.utils.ext.setDefaultValueCompat
|
||||
import java.util.*
|
||||
|
||||
class AppearanceSettingsFragment :
|
||||
BasePreferenceFragment(R.string.appearance),
|
||||
@@ -71,10 +73,10 @@ class AppearanceSettingsFragment :
|
||||
AppCompatDelegate.setDefaultNightMode(settings.theme)
|
||||
}
|
||||
AppSettings.KEY_DYNAMIC_THEME -> {
|
||||
findPreference<Preference>(key)?.setSummary(R.string.restart_required)
|
||||
get<ActivityRecreationHandle>().recreateAll()
|
||||
}
|
||||
AppSettings.KEY_THEME_AMOLED -> {
|
||||
findPreference<Preference>(key)?.setSummary(R.string.restart_required)
|
||||
get<ActivityRecreationHandle>().recreateAll()
|
||||
}
|
||||
AppSettings.KEY_APP_PASSWORD -> {
|
||||
findPreference<TwoStatePreference>(AppSettings.KEY_PROTECT_APP)
|
||||
|
||||
@@ -162,7 +162,6 @@
|
||||
<string name="zoom_mode_keep_start">Зыходны памер</string>
|
||||
<string name="black_dark_theme">Чорная цёмная тэма</string>
|
||||
<string name="black_dark_theme_summary">Карысна для AMOLED экранаў</string>
|
||||
<string name="restart_required">Патрэбны перазапуск</string>
|
||||
<string name="backup_restore">Рэзервовае капіяванне і аднаўленне</string>
|
||||
<string name="create_backup">Стварыць рэзервовую копію</string>
|
||||
<string name="restore_backup">Аднавіць данныя</string>
|
||||
|
||||
@@ -85,7 +85,6 @@
|
||||
<string name="zoom_mode_fit_height">An Höhe anpassen</string>
|
||||
<string name="black_dark_theme_summary">Nützlich für AMOLED-Bildschirme</string>
|
||||
<string name="black_dark_theme">Schwarzer dunkler Modus</string>
|
||||
<string name="restart_required">Neustart erforderlich</string>
|
||||
<string name="right_to_left">Von rechts nach links</string>
|
||||
<string name="create_category">Neue Kategorie</string>
|
||||
<string name="backup_restore">Sicherung und Wiederherstellung</string>
|
||||
|
||||
@@ -162,7 +162,6 @@
|
||||
<string name="zoom_mode_keep_start">Mantener al iniciar</string>
|
||||
<string name="black_dark_theme">Tema oscuro auténtico</string>
|
||||
<string name="black_dark_theme_summary">Útil para pantallas AMOLED</string>
|
||||
<string name="restart_required">Se requiere reinicio</string>
|
||||
<string name="backup_restore">Respaldo y restauración</string>
|
||||
<string name="create_backup">Crear copia de seguridad de datos</string>
|
||||
<string name="restore_backup">Restaurar desde la copia de seguridad</string>
|
||||
|
||||
@@ -53,7 +53,6 @@
|
||||
<string name="restore_backup">Palauta varmuuskopiosta</string>
|
||||
<string name="create_backup">Luo tietojen varmuuskopio</string>
|
||||
<string name="backup_restore">Varmuuskopiointi ja palautus</string>
|
||||
<string name="restart_required">Uudelleenkäynnistys vaaditaan</string>
|
||||
<string name="black_dark_theme_summary">Hyödyllinen AMOLED-näytöille</string>
|
||||
<string name="black_dark_theme">Musta tumma teema</string>
|
||||
<string name="zoom_mode_keep_start">Pidä alussa</string>
|
||||
|
||||
@@ -42,7 +42,6 @@
|
||||
<string name="restore_backup">Restaurer à partir d\'une sauvegarde</string>
|
||||
<string name="create_backup">Créer une sauvegarde des données</string>
|
||||
<string name="backup_restore">Sauvegarde et restauration</string>
|
||||
<string name="restart_required">Redémarrage nécessaire</string>
|
||||
<string name="black_dark_theme_summary">Utilise moins d\'énergie pour les écrans AMOLED</string>
|
||||
<string name="black_dark_theme">Noir</string>
|
||||
<string name="zoom_mode_keep_start">Garder au début</string>
|
||||
|
||||
@@ -91,7 +91,6 @@
|
||||
<string name="restore_backup">Ripristina da un backup</string>
|
||||
<string name="create_backup">Crea un backup dei dati</string>
|
||||
<string name="backup_restore">Backup e ripristino</string>
|
||||
<string name="restart_required">Riavvio richiesto</string>
|
||||
<string name="black_dark_theme_summary">Utile per gli schermi AMOLED</string>
|
||||
<string name="black_dark_theme">Tema nero scuro</string>
|
||||
<string name="report_github">Segnala un problema su GitHub</string>
|
||||
|
||||
@@ -221,7 +221,6 @@
|
||||
<string name="exclude_nsfw_from_history">NSFW漫画を履歴から除外する</string>
|
||||
<string name="queued">キュー</string>
|
||||
<string name="cookies_cleared">全てのCookieが削除されました</string>
|
||||
<string name="restart_required">再起動が必要です</string>
|
||||
<string name="tracker_warning">一部のデバイスはシステムでの動作が異なり、バックグラウンドタスクが中断される可能性があります。</string>
|
||||
<string name="genres">ジャンル</string>
|
||||
<string name="scale_mode">スケールモード</string>
|
||||
|
||||
@@ -102,7 +102,6 @@
|
||||
<string name="data_restored">Data gjenopprettet</string>
|
||||
<string name="restore_backup">Gjenopprett fra sikkerhetskopi</string>
|
||||
<string name="create_backup">Opprett sikkerhetskopi</string>
|
||||
<string name="restart_required">Omstart kreves</string>
|
||||
<string name="black_dark_theme_summary">Bruker mindre strøm på AMOLED-skjermer</string>
|
||||
<string name="black_dark_theme">Svart</string>
|
||||
<string name="create_category">Ny kategori</string>
|
||||
|
||||
@@ -240,7 +240,6 @@
|
||||
<string name="create_backup">Criar backup de dados</string>
|
||||
<string name="text_local_holder_secondary">Salve-o de fontes online ou importe arquivos.</string>
|
||||
<string name="check_for_updates">Verifique se há atualizações</string>
|
||||
<string name="restart_required">É necessário reiniciar</string>
|
||||
<string name="text_feed_holder">Novos capítulos do que você está lendo são mostrados aqui</string>
|
||||
<string name="app_version">Versão %s</string>
|
||||
<string name="zoom_mode_fit_width">Ajustar à largura</string>
|
||||
|
||||
@@ -139,7 +139,6 @@
|
||||
<string name="scale_mode">Modo de escala</string>
|
||||
<string name="zoom_mode_fit_center">Centro de ajuste</string>
|
||||
<string name="zoom_mode_fit_width">Ajustar à largura</string>
|
||||
<string name="restart_required">É necessário reiniciar</string>
|
||||
<string name="backup_restore">Backup e restauração</string>
|
||||
<string name="create_backup">Criar backup de dados</string>
|
||||
<string name="restore_backup">Restaurar do backup</string>
|
||||
|
||||
@@ -167,7 +167,6 @@
|
||||
<string name="zoom_mode_keep_start">Исходный размер</string>
|
||||
<string name="black_dark_theme">Чёрная</string>
|
||||
<string name="black_dark_theme_summary">Потребляет меньше энергии на экранах AMOLED</string>
|
||||
<string name="restart_required">Требуется перезапуск</string>
|
||||
<string name="backup_restore">Резервное копирование и восстановление</string>
|
||||
<string name="create_backup">Создать резервную копию</string>
|
||||
<string name="restore_backup">Восстановить данные</string>
|
||||
|
||||
@@ -247,7 +247,6 @@
|
||||
<string name="zoom_mode_fit_width">Anpassa mot bredd</string>
|
||||
<string name="black_dark_theme">Svart</string>
|
||||
<string name="black_dark_theme_summary">Använder mindre ström på AMOLED-skärmar</string>
|
||||
<string name="restart_required">Omstart krävs</string>
|
||||
<string name="backup_restore">Säkerhetskopiering och återställning</string>
|
||||
<string name="create_backup">Skapa säkerhetskopia</string>
|
||||
<string name="data_restored">Återställd</string>
|
||||
|
||||
@@ -202,7 +202,6 @@
|
||||
<string name="long_ago">Uzun zaman önce</string>
|
||||
<string name="today">Bugün</string>
|
||||
<string name="no_update_available">Güncelleme yok</string>
|
||||
<string name="restart_required">Yeniden başlatma gerekli</string>
|
||||
<string name="chapters_checking_progress">Yeni bölümler denetleniyor: %1$d / %2$d</string>
|
||||
<string name="dynamic_theme">Dinamik tema</string>
|
||||
<string name="text_categories_holder">Favorilerinizi düzenlemek için kategorileri kullanabilirsiniz. Kategori oluşturmak için «+» düğmesine basın</string>
|
||||
|
||||
@@ -143,7 +143,6 @@
|
||||
<string name="zoom_mode_keep_start">Вихідний розмір</string>
|
||||
<string name="black_dark_theme">Чорна</string>
|
||||
<string name="black_dark_theme_summary">Споживає менше енергії на екранах AMOLED</string>
|
||||
<string name="restart_required">Потрібен перезапуск</string>
|
||||
<string name="backup_restore">Резервне копіювання та відновлення</string>
|
||||
<string name="data_restored">Відновлено</string>
|
||||
<string name="preparing_">Підготовка…</string>
|
||||
|
||||
@@ -168,7 +168,6 @@
|
||||
<string name="zoom_mode_keep_start">Keep at start</string>
|
||||
<string name="black_dark_theme">Black</string>
|
||||
<string name="black_dark_theme_summary">Uses less power on AMOLED screens</string>
|
||||
<string name="restart_required">Restart required</string>
|
||||
<string name="backup_restore">Backup and restore</string>
|
||||
<string name="create_backup">Create data backup</string>
|
||||
<string name="restore_backup">Restore from backup</string>
|
||||
|
||||
Reference in New Issue
Block a user