diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 2a1d33e65..2164db831 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -29,7 +29,7 @@ android { applicationId = "eu.kanade.tachiyomi.sy" minSdk = AndroidConfig.minSdk targetSdk = AndroidConfig.targetSdk - versionCode = 26 + versionCode = 27 versionName = "1.8.1" buildConfigField("String", "COMMIT_COUNT", "\"${getCommitCount()}\"") diff --git a/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt b/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt index 84893dd41..cf83fd113 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt @@ -7,6 +7,7 @@ import eu.kanade.tachiyomi.data.backup.BackupCreatorJob import eu.kanade.tachiyomi.data.library.LibraryUpdateJob import eu.kanade.tachiyomi.data.preference.MANGA_ONGOING import eu.kanade.tachiyomi.data.preference.PreferenceKeys +import eu.kanade.tachiyomi.data.preference.PreferenceValues import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.track.TrackManager import eu.kanade.tachiyomi.data.updater.AppUpdateJob @@ -247,6 +248,12 @@ object Migrations { preferences.libraryUpdateMangaRestriction() -= MANGA_ONGOING } } + if (oldVersion < 75) { + val oldSecureScreen = prefs.getBoolean("secure_screen", false) + if (oldSecureScreen) { + preferences.secureScreen().set(PreferenceValues.SecureScreenMode.ALWAYS) + } + } return true } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceValues.kt b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceValues.kt index 05ca6fac1..916c9fe77 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceValues.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceValues.kt @@ -72,6 +72,12 @@ object PreferenceValues { SHIZUKU, } + enum class SecureScreenMode { + ALWAYS, + INCOGNITO, + NEVER, + } + // SY --> enum class GroupLibraryMode { GLOBAL, diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt index b8089bc43..d447acc27 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt @@ -60,7 +60,7 @@ class PreferencesHelper(val context: Context) { fun lastAppUnlock() = flowPrefs.getLong("last_app_unlock", 0) - fun secureScreen() = flowPrefs.getBoolean("secure_screen", false) + fun secureScreen() = flowPrefs.getEnum("secure_screen_v2", Values.SecureScreenMode.INCOGNITO) fun hideNotificationContent() = prefs.getBoolean(Keys.hideNotificationContent, false) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/security/SecureActivityDelegate.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/security/SecureActivityDelegate.kt index a0c1fb837..0014431e1 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/security/SecureActivityDelegate.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/security/SecureActivityDelegate.kt @@ -3,6 +3,7 @@ package eu.kanade.tachiyomi.ui.security import android.content.Intent import androidx.fragment.app.FragmentActivity import androidx.lifecycle.lifecycleScope +import eu.kanade.tachiyomi.data.preference.PreferenceValues import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.ui.category.biometric.TimeRange import eu.kanade.tachiyomi.util.system.AuthenticatorUtil.isAuthenticationSupported @@ -23,8 +24,8 @@ class SecureActivityDelegate(private val activity: FragmentActivity) { fun onCreate() { val secureScreenFlow = preferences.secureScreen().asFlow() val incognitoModeFlow = preferences.incognitoMode().asFlow() - secureScreenFlow.combine(incognitoModeFlow) { secureScreen, incognitoMode -> - secureScreen || incognitoMode + combine(secureScreenFlow, incognitoModeFlow) { secureScreen, incognitoMode -> + secureScreen == PreferenceValues.SecureScreenMode.ALWAYS || secureScreen == PreferenceValues.SecureScreenMode.INCOGNITO && incognitoMode } .onEach { activity.window.setSecureScreen(it) } .launchIn(activity.lifecycleScope) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsSecurityController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsSecurityController.kt index 141669bdb..b1f63e59b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsSecurityController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsSecurityController.kt @@ -8,6 +8,7 @@ import androidx.preference.Preference import androidx.preference.PreferenceScreen import com.google.android.material.dialog.MaterialAlertDialogBuilder import eu.kanade.tachiyomi.R +import eu.kanade.tachiyomi.data.preference.PreferenceValues import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.ui.base.controller.DialogController import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction @@ -15,7 +16,10 @@ import eu.kanade.tachiyomi.ui.category.biometric.BiometricTimesController import eu.kanade.tachiyomi.ui.security.SecureActivityDelegate import eu.kanade.tachiyomi.util.preference.bindTo import eu.kanade.tachiyomi.util.preference.defaultValue +import eu.kanade.tachiyomi.util.preference.entriesRes +import eu.kanade.tachiyomi.util.preference.infoPreference import eu.kanade.tachiyomi.util.preference.intListPreference +import eu.kanade.tachiyomi.util.preference.listPreference import eu.kanade.tachiyomi.util.preference.onClick import eu.kanade.tachiyomi.util.preference.preference import eu.kanade.tachiyomi.util.preference.requireAuthentication @@ -91,17 +95,24 @@ class SettingsSecurityController : SettingsController() { } } - switchPreference { - bindTo(preferences.secureScreen()) - titleRes = R.string.secure_screen - summaryRes = R.string.secure_screen_summary - } - switchPreference { key = Keys.hideNotificationContent titleRes = R.string.hide_notification_content defaultValue = false } + + listPreference { + bindTo(preferences.secureScreen()) + titleRes = R.string.secure_screen + summary = "%s" + entriesRes = arrayOf( + R.string.lock_always, + R.string.pref_incognito_mode, + R.string.lock_never, + ) + entryValues = PreferenceValues.SecureScreenMode.values().map { it.name }.toTypedArray() + } + // SY --> preference { key = "pref_edit_lock_times" @@ -128,6 +139,8 @@ class SettingsSecurityController : SettingsController() { } } // SY <-- + + infoPreference(R.string.secure_screen_summary) } // SY --> diff --git a/app/src/main/java/exh/EXHMigrations.kt b/app/src/main/java/exh/EXHMigrations.kt index 96e689b2a..c40488dbb 100644 --- a/app/src/main/java/exh/EXHMigrations.kt +++ b/app/src/main/java/exh/EXHMigrations.kt @@ -18,6 +18,7 @@ import eu.kanade.tachiyomi.data.database.tables.TrackTable import eu.kanade.tachiyomi.data.library.LibraryUpdateJob import eu.kanade.tachiyomi.data.preference.MANGA_ONGOING import eu.kanade.tachiyomi.data.preference.PreferenceKeys +import eu.kanade.tachiyomi.data.preference.PreferenceValues import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.track.TrackManager import eu.kanade.tachiyomi.data.updater.AppUpdateJob @@ -370,6 +371,12 @@ object EXHMigrations { xLogE("Failed to delete old favorites database", e) } } + if (oldVersion under 27) { + val oldSecureScreen = prefs.getBoolean("secure_screen", false) + if (oldSecureScreen) { + preferences.secureScreen().set(PreferenceValues.SecureScreenMode.ALWAYS) + } + } // if (oldVersion under 1) { } (1 is current release version) // do stuff here when releasing changed crap diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fe27786cc..15c428a43 100755 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -185,9 +185,9 @@ After 1 minute After %1$s minutes - Secure screen - Hide app contents when switching apps and block screenshots Hide notification content + Secure screen + Secure screen hides app contents when switching apps and block screenshots NSFW (18+) sources Show in sources and extensions lists