From b2927854d451f21a3b042c44cc85069a8b827307 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Mon, 2 Oct 2023 16:39:14 +0300 Subject: [PATCH] Make keep screen on in reader optional --- app/build.gradle | 2 +- .../org/koitharu/kotatsu/core/prefs/AppSettings.kt | 4 ++++ .../org/koitharu/kotatsu/reader/ui/ReaderActivity.kt | 9 +++++++++ .../org/koitharu/kotatsu/reader/ui/ReaderViewModel.kt | 6 ++++++ app/src/main/res/layout/activity_reader.xml | 3 +-- app/src/main/res/values/strings.xml | 2 ++ app/src/main/res/xml/pref_reader.xml | 8 +++++++- 7 files changed, 30 insertions(+), 4 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 761da8cda..59f050a6b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -90,7 +90,7 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.12.0' - implementation 'androidx.activity:activity-ktx:1.7.2' + implementation 'androidx.activity:activity-ktx:1.8.0-rc01' implementation 'androidx.fragment:fragment-ktx:1.6.1' implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2' implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.2' diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/prefs/AppSettings.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/prefs/AppSettings.kt index 9a7f56b55..71e7f91c7 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/prefs/AppSettings.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/prefs/AppSettings.kt @@ -270,6 +270,9 @@ class AppSettings @Inject constructor(@ApplicationContext context: Context) { val isReaderSliderEnabled: Boolean get() = prefs.getBoolean(KEY_READER_SLIDER, true) + val isReaderKeepScreenOn: Boolean + get() = prefs.getBoolean(KEY_READER_SCREEN_ON, true) + val isImagesProxyEnabled: Boolean get() = prefs.getBoolean(KEY_IMAGES_PROXY, false) @@ -460,6 +463,7 @@ class AppSettings @Inject constructor(@ApplicationContext context: Context) { const val KEY_READER_BAR = "reader_bar" const val KEY_READER_SLIDER = "reader_slider" const val KEY_READER_BACKGROUND = "reader_background" + const val KEY_READER_SCREEN_ON = "reader_screen_on" const val KEY_SHORTCUTS = "dynamic_shortcuts" const val KEY_READER_TAPS_LTR = "reader_taps_ltr" const val KEY_LOCAL_LIST_ORDER = "local_order" diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/ReaderActivity.kt b/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/ReaderActivity.kt index b38e38c99..2c04d3b03 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/ReaderActivity.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/ReaderActivity.kt @@ -137,6 +137,7 @@ class ReaderActivity : onLoadingStateChanged(viewModel.isLoading.value) } viewModel.isScreenshotsBlockEnabled.observe(this, this::setWindowSecure) + viewModel.isKeepScreenOnEnabled.observe(this, this::setKeepScreenOn) viewModel.isInfoBarEnabled.observe(this, ::onReaderBarChanged) viewModel.isBookmarkAdded.observe(this, this::onBookmarkStateChanged) viewModel.onShowToast.observeEvent(this) { msgId -> @@ -304,6 +305,14 @@ class ReaderActivity : } } + private fun setKeepScreenOn(isKeep: Boolean) { + if (isKeep) { + window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + } else { + window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + } + } + private fun setUiIsVisible(isUiVisible: Boolean) { if (viewBinding.appbarTop.isVisible != isUiVisible) { if (isAnimationsEnabled) { diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/ReaderViewModel.kt b/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/ReaderViewModel.kt index 6c68947e5..c922ab53f 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/ReaderViewModel.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/ReaderViewModel.kt @@ -113,6 +113,12 @@ class ReaderViewModel @Inject constructor( valueProducer = { isReaderBarEnabled }, ) + val isKeepScreenOnEnabled = settings.observeAsStateFlow( + scope = viewModelScope + Dispatchers.Default, + key = AppSettings.KEY_READER_SCREEN_ON, + valueProducer = { isReaderKeepScreenOn }, + ) + val isWebtoonZoomEnabled = settings.observeAsStateFlow( scope = viewModelScope + Dispatchers.Default, key = AppSettings.KEY_WEBTOON_ZOOM, diff --git a/app/src/main/res/layout/activity_reader.xml b/app/src/main/res/layout/activity_reader.xml index 4786a5680..4d925309b 100644 --- a/app/src/main/res/layout/activity_reader.xml +++ b/app/src/main/res/layout/activity_reader.xml @@ -4,8 +4,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" - android:layout_height="match_parent" - android:keepScreenOn="true"> + android:layout_height="match_parent"> Zoom in Show zoom buttons Whether to show zoom control buttons in the bottom right corner + Keep screen on + Do not turn the screen off while you\'re reading manga diff --git a/app/src/main/res/xml/pref_reader.xml b/app/src/main/res/xml/pref_reader.xml index 39a03da66..0ae86ab91 100644 --- a/app/src/main/res/xml/pref_reader.xml +++ b/app/src/main/res/xml/pref_reader.xml @@ -78,13 +78,19 @@ android:summary="@string/show_pages_numbers_summary" android:title="@string/show_pages_numbers" /> + +