Transparent reader info bar option

This commit is contained in:
Koitharu
2025-02-01 09:32:57 +02:00
parent 78cd0eff09
commit 382b44accc
6 changed files with 28 additions and 1 deletions

View File

@@ -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"

View File

@@ -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))

View File

@@ -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

View File

@@ -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,

View File

@@ -792,4 +792,5 @@
<string name="enable_all_sources">Enable all manga sources</string>
<string name="enable_all_sources_summary">All available manga sources will be enabled permanently</string>
<string name="all_sources_enabled">All sources are enabled</string>
<string name="reader_info_bar_transparent">Transparent reader information bar</string>
</resources>

View File

@@ -121,6 +121,13 @@
android:title="@string/reader_info_bar"
app:allowDividerAbove="true" />
<SwitchPreferenceCompat
android:defaultValue="true"
android:dependency="reader_bar"
android:key="reader_bar_transparent"
android:title="@string/reader_info_bar_transparent"
app:allowDividerAbove="true" />
<ListPreference
android:entries="@array/reader_backgrounds"
android:key="reader_background"