Fix: StatusBar icons visibility on dynamic colors' theme (closes #259)

This commit is contained in:
machiav3lli 2022-07-27 01:41:41 +02:00
parent ee4e07ae8b
commit 193286b894
3 changed files with 15 additions and 5 deletions

View File

@ -27,7 +27,7 @@ import com.machiav3lli.fdroid.ui.fragments.MainNavFragmentX
import com.machiav3lli.fdroid.ui.fragments.Source import com.machiav3lli.fdroid.ui.fragments.Source
import com.machiav3lli.fdroid.ui.viewmodels.MainActivityViewModelX import com.machiav3lli.fdroid.ui.viewmodels.MainActivityViewModelX
import com.machiav3lli.fdroid.utility.extension.text.nullIfEmpty import com.machiav3lli.fdroid.utility.extension.text.nullIfEmpty
import com.machiav3lli.fdroid.utility.isDynamicColorsTheme import com.machiav3lli.fdroid.utility.setCustomTheme
import com.machiav3lli.fdroid.utility.showBatteryOptimizationDialog import com.machiav3lli.fdroid.utility.showBatteryOptimizationDialog
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlin.properties.Delegates import kotlin.properties.Delegates
@ -72,7 +72,7 @@ class MainActivityX : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
currentTheme = Preferences[Preferences.Key.Theme].getResId(resources.configuration) currentTheme = Preferences[Preferences.Key.Theme].getResId(resources.configuration)
currentTab = Preferences[Preferences.Key.DefaultTab].getResId(resources.configuration) currentTab = Preferences[Preferences.Key.DefaultTab].getResId(resources.configuration)
if (!isDynamicColorsTheme) setTheme(currentTheme) setCustomTheme()
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
binding = ActivityMainXBinding.inflate(layoutInflater) binding = ActivityMainXBinding.inflate(layoutInflater)

View File

@ -16,7 +16,6 @@ import com.machiav3lli.fdroid.BuildConfig
import com.machiav3lli.fdroid.ContextWrapperX import com.machiav3lli.fdroid.ContextWrapperX
import com.machiav3lli.fdroid.MainApplication import com.machiav3lli.fdroid.MainApplication
import com.machiav3lli.fdroid.R import com.machiav3lli.fdroid.R
import com.machiav3lli.fdroid.content.Preferences
import com.machiav3lli.fdroid.databinding.ActivityPrefsXBinding import com.machiav3lli.fdroid.databinding.ActivityPrefsXBinding
import com.machiav3lli.fdroid.installer.AppInstaller import com.machiav3lli.fdroid.installer.AppInstaller
import com.machiav3lli.fdroid.service.Connection import com.machiav3lli.fdroid.service.Connection
@ -24,7 +23,7 @@ import com.machiav3lli.fdroid.service.SyncService
import com.machiav3lli.fdroid.ui.fragments.MainNavFragmentX import com.machiav3lli.fdroid.ui.fragments.MainNavFragmentX
import com.machiav3lli.fdroid.ui.fragments.Source import com.machiav3lli.fdroid.ui.fragments.Source
import com.machiav3lli.fdroid.utility.extension.text.nullIfEmpty import com.machiav3lli.fdroid.utility.extension.text.nullIfEmpty
import com.machiav3lli.fdroid.utility.isDynamicColorsTheme import com.machiav3lli.fdroid.utility.setCustomTheme
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
// TODO clean up the bloat // TODO clean up the bloat
@ -61,7 +60,7 @@ class PrefsActivityX : AppCompatActivity() {
get() = (application as MainApplication).db get() = (application as MainApplication).db
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
if (!isDynamicColorsTheme) setTheme(Preferences[Preferences.Key.Theme].getResId(resources.configuration)) setCustomTheme()
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
binding = ActivityPrefsXBinding.inflate(layoutInflater) binding = ActivityPrefsXBinding.inflate(layoutInflater)

View File

@ -1,5 +1,6 @@
package com.machiav3lli.fdroid.utility package com.machiav3lli.fdroid.utility
import android.app.Activity
import android.app.ActivityManager import android.app.ActivityManager
import android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND import android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND
import android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_VISIBLE import android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_VISIBLE
@ -39,6 +40,7 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextDecoration import androidx.compose.ui.text.style.TextDecoration
import androidx.core.text.HtmlCompat import androidx.core.text.HtmlCompat
import androidx.core.text.util.LinkifyCompat import androidx.core.text.util.LinkifyCompat
import androidx.core.view.WindowInsetsControllerCompat
import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentManager
import com.machiav3lli.fdroid.BuildConfig import com.machiav3lli.fdroid.BuildConfig
import com.machiav3lli.fdroid.PREFS_LANGUAGE_DEFAULT import com.machiav3lli.fdroid.PREFS_LANGUAGE_DEFAULT
@ -523,3 +525,12 @@ fun Spanned.toAnnotatedString(): AnnotatedString = buildAnnotatedString {
} }
} }
} }
fun Activity.setCustomTheme() {
if (!isDynamicColorsTheme) setTheme(Preferences[Preferences.Key.Theme].getResId(resources.configuration))
else {
val currentNightMode = resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK
WindowInsetsControllerCompat(window, window.decorView)
.isAppearanceLightStatusBars = currentNightMode == Configuration.UI_MODE_NIGHT_NO
}
}