From 382b44accc7ac45cdc21c93e20c20868711f4d3c Mon Sep 17 00:00:00 2001 From: Koitharu Date: Sat, 1 Feb 2025 09:32:57 +0200 Subject: [PATCH] Transparent reader info bar option --- .../org/koitharu/kotatsu/core/prefs/AppSettings.kt | 4 ++++ .../org/koitharu/kotatsu/reader/ui/ReaderActivity.kt | 1 + .../koitharu/kotatsu/reader/ui/ReaderInfoBarView.kt | 10 +++++++++- .../org/koitharu/kotatsu/reader/ui/ReaderViewModel.kt | 6 ++++++ app/src/main/res/values/strings.xml | 1 + app/src/main/res/xml/pref_reader.xml | 7 +++++++ 6 files changed, 28 insertions(+), 1 deletion(-) 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 aea0309be..a8b80f265 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 @@ -367,6 +367,9 @@ class AppSettings @Inject constructor(@ApplicationContext context: Context) { val isReaderBarEnabled: Boolean get() = prefs.getBoolean(KEY_READER_BAR, true) + val isReaderBarTransparent: Boolean + get() = prefs.getBoolean(KEY_READER_BAR, true) + val isReaderKeepScreenOn: Boolean get() = prefs.getBoolean(KEY_READER_SCREEN_ON, true) @@ -671,6 +674,7 @@ class AppSettings @Inject constructor(@ApplicationContext context: Context) { const val KEY_SYNC = "sync" const val KEY_SYNC_SETTINGS = "sync_settings" const val KEY_READER_BAR = "reader_bar" + const val KEY_READER_BAR_TRANSPARENT = "reader_bar_transparent" const val KEY_READER_BACKGROUND = "reader_background" const val KEY_READER_SCREEN_ON = "reader_screen_on" const val KEY_SHORTCUTS = "dynamic_shortcuts" 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 9204ed369..84ca4593c 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 @@ -146,6 +146,7 @@ class ReaderActivity : onLoadingStateChanged(viewModel.isLoading.value) } viewModel.isKeepScreenOnEnabled.observe(this, this::setKeepScreenOn) + viewModel.isInfoBarTransparent.observe(this) { viewBinding.infoBar.drawBackground = !it } viewModel.isInfoBarEnabled.observe(this, ::onReaderBarChanged) viewModel.isBookmarkAdded.observe(this, MenuInvalidator(this)) viewModel.isPagesSheetEnabled.observe(this, MenuInvalidator(viewBinding.toolbarBottom)) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/ReaderInfoBarView.kt b/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/ReaderInfoBarView.kt index 486f1a50b..19195337e 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/ReaderInfoBarView.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/ReaderInfoBarView.kt @@ -75,6 +75,12 @@ class ReaderInfoBarView @JvmOverloads constructor( private val innerWidth get() = width - paddingLeft - paddingRight - insetLeft - insetRight + var drawBackground: Boolean = false + set(value) { + field = value + invalidate() + } + var isTimeVisible: Boolean = true set(value) { field = value @@ -109,7 +115,9 @@ class ReaderInfoBarView @JvmOverloads constructor( override fun onDraw(canvas: Canvas) { super.onDraw(canvas) - canvas.drawColor(currentBackgroundColor) + if (drawBackground) { + canvas.drawColor(currentBackgroundColor) + } computeTextHeight() val h = innerHeight.toFloat() val ty = h / 2f + textBounds.height() / 2f - textBounds.bottom 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 6ad1a20cc..f05dc0703 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 @@ -136,6 +136,12 @@ class ReaderViewModel @Inject constructor( valueProducer = { isReaderBarEnabled }, ) + val isInfoBarTransparent = settings.observeAsStateFlow( + scope = viewModelScope + Dispatchers.Default, + key = AppSettings.KEY_READER_BAR_TRANSPARENT, + valueProducer = { isReaderBarTransparent }, + ) + val isKeepScreenOnEnabled = settings.observeAsStateFlow( scope = viewModelScope + Dispatchers.Default, key = AppSettings.KEY_READER_SCREEN_ON, diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e75126800..9a6e919da 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -792,4 +792,5 @@ Enable all manga sources All available manga sources will be enabled permanently All sources are enabled + Transparent reader information bar diff --git a/app/src/main/res/xml/pref_reader.xml b/app/src/main/res/xml/pref_reader.xml index 531fe26fb..d2825eda2 100644 --- a/app/src/main/res/xml/pref_reader.xml +++ b/app/src/main/res/xml/pref_reader.xml @@ -121,6 +121,13 @@ android:title="@string/reader_info_bar" app:allowDividerAbove="true" /> + +