mirror of
https://github.com/mihonapp/mihon.git
synced 2025-10-30 13:57:57 +01:00
Add option to flash white screen on page change in reader for e-ink displays
Closes #2123
This commit is contained in:
@@ -43,6 +43,7 @@ import com.google.android.material.transition.platform.MaterialContainerTransfor
|
||||
import dev.chrisbanes.insetter.applyInsetter
|
||||
import eu.kanade.domain.base.BasePreferences
|
||||
import eu.kanade.presentation.reader.BrightnessOverlay
|
||||
import eu.kanade.presentation.reader.DisplayRefreshHost
|
||||
import eu.kanade.presentation.reader.OrientationModeSelectDialog
|
||||
import eu.kanade.presentation.reader.PageIndicatorText
|
||||
import eu.kanade.presentation.reader.ReaderPageActionsDialog
|
||||
@@ -122,6 +123,7 @@ class ReaderActivity : BaseActivity() {
|
||||
|
||||
private var menuToggleToast: Toast? = null
|
||||
private var readingModeToast: Toast? = null
|
||||
private val displayRefreshHost = DisplayRefreshHost()
|
||||
|
||||
private val windowInsetsController by lazy { WindowInsetsControllerCompat(window, binding.root) }
|
||||
|
||||
@@ -197,6 +199,9 @@ class ReaderActivity : BaseActivity() {
|
||||
ReaderViewModel.Event.ReloadViewerChapters -> {
|
||||
viewModel.state.value.viewerChapters?.let(::setChapters)
|
||||
}
|
||||
ReaderViewModel.Event.PageChanged -> {
|
||||
displayRefreshHost.flash()
|
||||
}
|
||||
is ReaderViewModel.Event.SetOrientation -> {
|
||||
setOrientation(event.orientation)
|
||||
}
|
||||
@@ -323,6 +328,7 @@ class ReaderActivity : BaseActivity() {
|
||||
|
||||
val isHttpSource = viewModel.getSource() is HttpSource
|
||||
val isFullscreen by readerPreferences.fullscreen().collectAsState()
|
||||
val flashOnPageChange by readerPreferences.flashOnPageChange().collectAsState()
|
||||
|
||||
val cropBorderPaged by readerPreferences.cropBorders().collectAsState()
|
||||
val cropBorderWebtoon by readerPreferences.cropBordersWebtoon().collectAsState()
|
||||
@@ -375,6 +381,12 @@ class ReaderActivity : BaseActivity() {
|
||||
value = state.brightnessOverlayValue,
|
||||
)
|
||||
|
||||
if (flashOnPageChange) {
|
||||
DisplayRefreshHost(
|
||||
hostState = displayRefreshHost,
|
||||
)
|
||||
}
|
||||
|
||||
val onDismissRequest = viewModel::closeDialog
|
||||
when (state.dialog) {
|
||||
is ReaderViewModel.Dialog.Loading -> {
|
||||
|
||||
@@ -429,6 +429,8 @@ class ReaderViewModel @JvmOverloads constructor(
|
||||
if (inDownloadRange) {
|
||||
downloadNextChapters()
|
||||
}
|
||||
|
||||
eventChannel.trySend(Event.PageChanged)
|
||||
}
|
||||
|
||||
private fun downloadNextChapters() {
|
||||
@@ -917,6 +919,7 @@ class ReaderViewModel @JvmOverloads constructor(
|
||||
|
||||
sealed interface Event {
|
||||
data object ReloadViewerChapters : Event
|
||||
data object PageChanged : Event
|
||||
data class SetOrientation(val orientation: Int) : Event
|
||||
data class SetCoverResult(val result: SetAsCoverResult) : Event
|
||||
|
||||
|
||||
@@ -13,6 +13,8 @@ class ReaderPreferences(
|
||||
|
||||
fun pageTransitions() = preferenceStore.getBoolean("pref_enable_transitions_key", true)
|
||||
|
||||
fun flashOnPageChange() = preferenceStore.getBoolean("pref_reader_flash", false)
|
||||
|
||||
fun doubleTapAnimSpeed() = preferenceStore.getInt("pref_double_tap_anim_speed", 500)
|
||||
|
||||
fun showPageNumber() = preferenceStore.getBoolean("pref_show_page_number_key", true)
|
||||
|
||||
Reference in New Issue
Block a user