diff --git a/app/src/main/java/com/hippo/ehviewer/ui/EhActivity.kt b/app/src/main/java/com/hippo/ehviewer/ui/EhActivity.kt index 165b9a92b..0a453ca0f 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/EhActivity.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/EhActivity.kt @@ -16,15 +16,11 @@ package com.hippo.ehviewer.ui import android.Manifest -import android.content.Context import android.content.Intent import android.content.pm.PackageManager -import android.content.res.Configuration -import android.content.res.Resources import android.content.res.Resources.Theme import android.os.Build import android.os.Bundle -import android.view.WindowManager import androidx.activity.result.contract.ActivityResultContracts import androidx.annotation.RequiresApi import androidx.annotation.StyleRes @@ -34,55 +30,31 @@ import androidx.core.view.WindowCompat import com.hippo.ehviewer.EhApplication import com.hippo.ehviewer.R import com.hippo.ehviewer.Settings -import rikka.core.res.resolveColor +import eu.kanade.tachiyomi.util.system.isNightMode +import eu.kanade.tachiyomi.util.view.setSecureScreen import rikka.insets.WindowInsetsHelper import rikka.layoutinflater.view.LayoutInflaterFactory abstract class EhActivity : AppCompatActivity() { @StyleRes - fun getThemeStyleRes(context: Context): Int { - return if (THEME_BLACK == getTheme(context)) { - R.style.ThemeOverlay_Black - } else R.style.ThemeOverlay + fun getThemeStyleRes(): Int { + val isBlackDarkTheme = Settings.getBoolean("black_dark_theme", false) + return if (isBlackDarkTheme && isNightMode()) R.style.ThemeOverlay_Black else R.style.ThemeOverlay } override fun onApplyThemeResource(theme: Theme, resid: Int, first: Boolean) { - if (parent == null) { - theme.applyStyle(resid, true) - } else { - try { - theme.setTo(parent.theme) - } catch (ignored: Exception) { - } - theme.applyStyle(resid, false) - } - theme.applyStyle(getThemeStyleRes(this), true) - super.onApplyThemeResource(theme, R.style.ThemeOverlay, first) + theme.applyStyle(resid, true) + theme.applyStyle(getThemeStyleRes(), true) } override fun onNightModeChanged(mode: Int) { - theme.applyStyle(getThemeStyleRes(this), true) + theme.applyStyle(getThemeStyleRes(), true) } override fun onCreate(savedInstanceState: Bundle?) { - layoutInflater.factory2 = - LayoutInflaterFactory(delegate).addOnViewCreatedListener( - WindowInsetsHelper.LISTENER - ) + layoutInflater.factory2 = LayoutInflaterFactory(delegate).addOnViewCreatedListener(WindowInsetsHelper.LISTENER) super.onCreate(savedInstanceState) - WindowCompat.getInsetsController(window, window.decorView).isAppearanceLightStatusBars = - (resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_YES) <= 0 - window.decorView.post { - val rootWindowInsets = window.decorView.rootWindowInsets - if (rootWindowInsets != null && rootWindowInsets.systemWindowInsetBottom >= Resources.getSystem().displayMetrics.density * 40) { - window.navigationBarDividerColor = getColor(R.color.navigation_bar_divider) - window.navigationBarColor = - theme.resolveColor(android.R.attr.navigationBarColor) and 0x00ffffff or -0x20000000 - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { - window.isNavigationBarContrastEnforced = false - } - } - } + WindowCompat.getInsetsController(window, window.decorView).isAppearanceLightStatusBars = !isNightMode() (application as EhApplication).registerActivity(this) } @@ -92,56 +64,24 @@ abstract class EhActivity : AppCompatActivity() { } override fun onResume() { - val locked_resume_time = System.currentTimeMillis() / 1000 - val locked_delay_time = locked_resume_time - EhApplication.locked_last_leave_time - if (locked_delay_time < Settings.getSecurityDelay() * 60) { + val lockedResumeTime = System.currentTimeMillis() / 1000 + val lockedDelayTime = lockedResumeTime - EhApplication.locked_last_leave_time + if (lockedDelayTime < Settings.getSecurityDelay() * 60) { EhApplication.locked = false } else if (Settings.getSecurity() && isAuthenticationSupported() && EhApplication.locked) { startActivity(Intent(this, SecurityActivity::class.java)) } super.onResume() - if (Settings.getEnabledSecurity()) { - window.setFlags( - WindowManager.LayoutParams.FLAG_SECURE, - WindowManager.LayoutParams.FLAG_SECURE - ) - } else { - window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE) - } + window.setSecureScreen(Settings.getEnabledSecurity()) } - private val requestPermissionLauncher = registerForActivityResult( - ActivityResultContracts.RequestPermission() - ) { - Settings.putNotificationRequired() - } + private val requestPermissionLauncher = + registerForActivityResult(ActivityResultContracts.RequestPermission()) { Settings.putNotificationRequired() } - @RequiresApi(api = Build.VERSION_CODES.TIRAMISU) + @RequiresApi(Build.VERSION_CODES.TIRAMISU) fun checkAndRequestNotificationPermission() { - if (ContextCompat.checkSelfPermission( - this, - Manifest.permission.POST_NOTIFICATIONS - ) == PackageManager.PERMISSION_GRANTED - ) { - return - } - if (Settings.getNotificationRequired()) - return + if (ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED) return + if (Settings.getNotificationRequired()) return requestPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS) } - - companion object { - private const val THEME_DEFAULT = "DEFAULT" - private const val THEME_BLACK = "BLACK" - private val isBlackNightTheme: Boolean - get() = Settings.getBoolean("black_dark_theme", false) - - fun getTheme(context: Context): String { - return if (isBlackNightTheme && isNightMode(context.resources.configuration)) THEME_BLACK else THEME_DEFAULT - } - - private fun isNightMode(configuration: Configuration): Boolean { - return configuration.uiMode and Configuration.UI_MODE_NIGHT_YES > 0 - } - } -} \ No newline at end of file +}