diff --git a/app/src/main/java/eu/kanade/presentation/reader/BrightnessOverlay.kt b/app/src/main/java/eu/kanade/presentation/reader/BrightnessOverlay.kt
new file mode 100644
index 000000000..df927a4ba
--- /dev/null
+++ b/app/src/main/java/eu/kanade/presentation/reader/BrightnessOverlay.kt
@@ -0,0 +1,26 @@
+package eu.kanade.presentation.reader
+
+import androidx.compose.foundation.Canvas
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.graphics.graphicsLayer
+import kotlin.math.abs
+
+@Composable
+fun BrightnessOverlay(
+ value: Int,
+) {
+ if (value >= 0) return
+
+ Canvas(
+ modifier = Modifier
+ .fillMaxSize()
+ .graphicsLayer {
+ alpha = abs(value) / 100f
+ }
+ ) {
+ drawRect(Color.Black)
+ }
+}
diff --git a/app/src/main/java/eu/kanade/presentation/reader/appbars/ReaderAppBars.kt b/app/src/main/java/eu/kanade/presentation/reader/appbars/ReaderAppBars.kt
index 422e8104c..72b1fd9e2 100644
--- a/app/src/main/java/eu/kanade/presentation/reader/appbars/ReaderAppBars.kt
+++ b/app/src/main/java/eu/kanade/presentation/reader/appbars/ReaderAppBars.kt
@@ -13,14 +13,10 @@ import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.BoxScope
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
-import androidx.compose.foundation.layout.WindowInsets
-import androidx.compose.foundation.layout.WindowInsetsSides
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxWidth
-import androidx.compose.foundation.layout.only
import androidx.compose.foundation.layout.padding
-import androidx.compose.foundation.layout.systemBars
-import androidx.compose.foundation.layout.windowInsetsPadding
+import androidx.compose.foundation.layout.systemBarsPadding
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.surfaceColorAtElevation
import androidx.compose.runtime.Composable
@@ -114,7 +110,7 @@ fun ReaderAppBars(
onClickChapterList: () -> Unit,
onClickPageLayout: () -> Unit,
onClickShiftPage: () -> Unit,
-
+ // SY <--
) {
val isRtl = viewer is R2LPagerViewer
val backgroundColor = MaterialTheme.colorScheme
@@ -122,9 +118,7 @@ fun ReaderAppBars(
.copy(alpha = if (isSystemInDarkTheme()) 0.9f else 0.95f)
val appBarModifier = if (fullscreen) {
- // SY -->
- Modifier.windowInsetsPadding(WindowInsets.systemBars.only(WindowInsetsSides.Top + WindowInsetsSides.Horizontal))
- // SY <--
+ Modifier.systemBarsPadding()
} else {
Modifier
}
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt
index b9244bc73..a4877be1f 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt
@@ -51,6 +51,7 @@ import com.google.android.material.transition.platform.MaterialContainerTransfor
import dev.chrisbanes.insetter.applyInsetter
import eu.kanade.domain.base.BasePreferences
import eu.kanade.domain.manga.model.readingModeType
+import eu.kanade.presentation.reader.BrightnessOverlay
import eu.kanade.presentation.reader.ChapterListDialog
import eu.kanade.presentation.reader.OrientationModeSelectDialog
import eu.kanade.presentation.reader.PageIndicatorText
@@ -478,6 +479,10 @@ class ReaderActivity : BaseActivity() {
// SY <--
)
+ BrightnessOverlay(
+ value = state.brightnessOverlayValue,
+ )
+
val onDismissRequest = viewModel::closeDialog
when (state.dialog) {
is ReaderViewModel.Dialog.Loading -> {
@@ -1294,17 +1299,9 @@ class ReaderActivity : BaseActivity() {
}
else -> WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE
}
-
window.attributes = window.attributes.apply { screenBrightness = readerBrightness }
- // Set black overlay visibility.
- if (value < 0) {
- binding.brightnessOverlay.isVisible = true
- val alpha = (abs(value) * 2.56).toInt()
- binding.brightnessOverlay.setBackgroundColor(Color.argb(alpha, 0, 0, 0))
- } else {
- binding.brightnessOverlay.isVisible = false
- }
+ viewModel.setBrightnessOverlayValue(value)
}
/**
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt
index b4350cfd2..e6ebcf0a0 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt
@@ -960,6 +960,10 @@ class ReaderViewModel @JvmOverloads constructor(
mutableState.update { it.copy(dialog = null) }
}
+ fun setBrightnessOverlayValue(value: Int) {
+ mutableState.update { it.copy(brightnessOverlayValue = value) }
+ }
+
/**
* Saves the image of the selected page on the pictures directory and notifies the UI of the result.
* There's also a notification to allow sharing the image somewhere else or deleting it.
@@ -1244,6 +1248,7 @@ class ReaderViewModel @JvmOverloads constructor(
val viewer: Viewer? = null,
val dialog: Dialog? = null,
val menuVisible: Boolean = false,
+ val brightnessOverlayValue: Int = 0,
// SY -->
val currentPageText: String = "",
diff --git a/app/src/main/res/layout/reader_activity.xml b/app/src/main/res/layout/reader_activity.xml
index 2401432ff..da843c09f 100755
--- a/app/src/main/res/layout/reader_activity.xml
+++ b/app/src/main/res/layout/reader_activity.xml
@@ -35,12 +35,6 @@
android:focusable="false"
android:visibility="gone" />
-
-