Theme should automatically change on phone settings change.
This commit is contained in:
parent
e36189e2e7
commit
04dec50808
@ -15,7 +15,8 @@
|
|||||||
android:supportsRtl="true"
|
android:supportsRtl="true"
|
||||||
android:networkSecurityConfig="@xml/network_security_config"
|
android:networkSecurityConfig="@xml/network_security_config"
|
||||||
android:theme="@style/NoBar"
|
android:theme="@style/NoBar"
|
||||||
android:dataExtractionRules="@xml/data_extraction_rules">
|
android:dataExtractionRules="@xml/data_extraction_rules"
|
||||||
|
android:configChanges="uiMode">
|
||||||
<activity
|
<activity
|
||||||
android:name=".MainActivity"
|
android:name=".MainActivity"
|
||||||
android:theme="@style/SplashTheme"
|
android:theme="@style/SplashTheme"
|
||||||
|
@ -3,11 +3,14 @@ package bou.amine.apps.readerforselfossv2.android
|
|||||||
import android.app.NotificationChannel
|
import android.app.NotificationChannel
|
||||||
import android.app.NotificationManager
|
import android.app.NotificationManager
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.content.res.Configuration
|
||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.widget.ImageView
|
import android.widget.ImageView
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
|
import androidx.appcompat.app.AppCompatDelegate
|
||||||
|
import androidx.appcompat.app.AppCompatDelegate.*
|
||||||
import androidx.lifecycle.DefaultLifecycleObserver
|
import androidx.lifecycle.DefaultLifecycleObserver
|
||||||
import androidx.lifecycle.LifecycleOwner
|
import androidx.lifecycle.LifecycleOwner
|
||||||
import androidx.lifecycle.ProcessLifecycleOwner
|
import androidx.lifecycle.ProcessLifecycleOwner
|
||||||
@ -48,6 +51,7 @@ class MyApp : MultiDexApplication(), DIAware {
|
|||||||
private val viewModel: AppViewModel by instance()
|
private val viewModel: AppViewModel by instance()
|
||||||
private val connectivityStatus: ConnectivityStatus by instance()
|
private val connectivityStatus: ConnectivityStatus by instance()
|
||||||
private val driverFactory: DriverFactory by instance()
|
private val driverFactory: DriverFactory by instance()
|
||||||
|
private val appSettingsService : AppSettingsService by instance()
|
||||||
|
|
||||||
// TODO: handle with the "previous" way
|
// TODO: handle with the "previous" way
|
||||||
private val isConnectionAvailable: MutableStateFlow<Boolean> = MutableStateFlow(true)
|
private val isConnectionAvailable: MutableStateFlow<Boolean> = MutableStateFlow(true)
|
||||||
@ -132,6 +136,19 @@ class MyApp : MultiDexApplication(), DIAware {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onConfigurationChanged(newConfig: Configuration) {
|
||||||
|
super.onConfigurationChanged(newConfig)
|
||||||
|
if (appSettingsService.getCurrentTheme() == MODE_NIGHT_FOLLOW_SYSTEM) {
|
||||||
|
var mode = when (newConfig.uiMode and Configuration.UI_MODE_NIGHT_MASK) {
|
||||||
|
Configuration.UI_MODE_NIGHT_YES -> MODE_NIGHT_YES
|
||||||
|
else -> MODE_NIGHT_NO
|
||||||
|
}
|
||||||
|
setDefaultNightMode(mode)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
class AppLifeCycleObserver(val connectivityStatus: ConnectivityStatus, val repository: Repository) : DefaultLifecycleObserver {
|
class AppLifeCycleObserver(val connectivityStatus: ConnectivityStatus, val repository: Repository) : DefaultLifecycleObserver {
|
||||||
|
|
||||||
override fun onResume(owner: LifecycleOwner) {
|
override fun onResume(owner: LifecycleOwner) {
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
<string-array name="ModeValues">
|
<string-array name="ModeValues">
|
||||||
<item>1</item> <!--MODE_NIGHT_NO-->
|
<item>1</item> <!--MODE_NIGHT_NO-->
|
||||||
<item>2</item> <!--MODE_NIGHT_YES-->
|
<item>2</item> <!--MODE_NIGHT_YES-->
|
||||||
<item>0</item> <!--MODE_NIGHT_AUTO_TIME-->
|
<item>-1</item> <!--MODE_NIGHT_FOLLOW_SYSTEM-->
|
||||||
</string-array>
|
</string-array>
|
||||||
|
|
||||||
<string-array name="Voice">
|
<string-array name="Voice">
|
||||||
|
@ -35,6 +35,7 @@ class AppSettingsService {
|
|||||||
private var _fontSize: Int? = null
|
private var _fontSize: Int? = null
|
||||||
private var _staticBar: Boolean? = null
|
private var _staticBar: Boolean? = null
|
||||||
private var _font: String = ""
|
private var _font: String = ""
|
||||||
|
private var _theme: Int? = null
|
||||||
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
@ -318,6 +319,17 @@ class AppSettingsService {
|
|||||||
return _font
|
return _font
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun refreshCurrentTheme() {
|
||||||
|
_theme = settings.getString(CURRENT_THEME, "-1").toInt()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getCurrentTheme(): Int {
|
||||||
|
if (_theme == null) {
|
||||||
|
refreshCurrentTheme()
|
||||||
|
}
|
||||||
|
return _theme ?: -1
|
||||||
|
}
|
||||||
|
|
||||||
fun refreshApiSettings() {
|
fun refreshApiSettings() {
|
||||||
refreshPassword()
|
refreshPassword()
|
||||||
refreshUsername()
|
refreshUsername()
|
||||||
@ -346,6 +358,7 @@ class AppSettingsService {
|
|||||||
refreshFontSize()
|
refreshFontSize()
|
||||||
refreshFont()
|
refreshFont()
|
||||||
refreshStaticBarEnabled()
|
refreshStaticBarEnabled()
|
||||||
|
refreshCurrentTheme()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun refreshLoginInformation(
|
fun refreshLoginInformation(
|
||||||
@ -444,5 +457,7 @@ class AppSettingsService {
|
|||||||
const val INFINITE_LOADING = "infinite_loading"
|
const val INFINITE_LOADING = "infinite_loading"
|
||||||
|
|
||||||
const val ITEMS_CACHING = "items_caching"
|
const val ITEMS_CACHING = "items_caching"
|
||||||
|
|
||||||
|
const val CURRENT_THEME = "currentMode"
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user