Reader fullscreen option

This commit is contained in:
Koitharu
2024-02-07 13:53:45 +02:00
parent 530dfa8cde
commit 4c3938a1fd
6 changed files with 37 additions and 11 deletions

View File

@@ -111,6 +111,9 @@ class AppSettings @Inject constructor(@ApplicationContext context: Context) {
val isReaderZoomButtonsEnabled: Boolean
get() = prefs.getBoolean(KEY_READER_ZOOM_BUTTONS, false)
val isReaderFullscreenEnabled: Boolean
get() = prefs.getBoolean(KEY_READER_FULLSCREEN, true)
val isReaderOptimizationEnabled: Boolean
get() = prefs.getBoolean(KEY_READER_OPTIMIZE, false)
@@ -482,6 +485,7 @@ class AppSettings @Inject constructor(@ApplicationContext context: Context) {
const val KEY_LOCAL_STORAGE = "local_storage"
const val KEY_READER_DOUBLE_PAGES = "reader_double_pages"
const val KEY_READER_ZOOM_BUTTONS = "reader_zoom_buttons"
const val KEY_READER_FULLSCREEN = "reader_fullscreen"
const val KEY_READER_VOLUME_BUTTONS = "reader_volume_buttons"
const val KEY_TRACKER_ENABLED = "tracker_enabled"
const val KEY_TRACKER_WIFI_ONLY = "tracker_wifi"

View File

@@ -29,7 +29,6 @@ abstract class BaseFullscreenActivity<B : ViewBinding> :
WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
}
}
// insetsControllerCompat.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
systemUiController.setSystemUiVisible(true)
}
}

View File

@@ -310,10 +310,12 @@ class ReaderActivity :
}
TransitionManager.beginDelayedTransition(viewBinding.root, transition)
}
val isFullscreen = settings.isReaderFullscreenEnabled
viewBinding.appbarTop.isVisible = isUiVisible
viewBinding.appbarBottom?.isVisible = isUiVisible
viewBinding.infoBar.isGone = isUiVisible || (!viewModel.isInfoBarEnabled.value)
systemUiController.setSystemUiVisible(isUiVisible)
viewBinding.infoBar.isTimeVisible = isFullscreen
systemUiController.setSystemUiVisible(isUiVisible || !isFullscreen)
}
}
@@ -330,6 +332,9 @@ class ReaderActivity :
rightMargin = systemBars.right + topMargin
leftMargin = systemBars.left + topMargin
}
viewBinding.infoBar.updatePadding(
top = systemBars.top,
)
return WindowInsetsCompat.Builder(insets)
.setInsets(WindowInsetsCompat.Type.systemBars(), Insets.NONE)
.build()

View File

@@ -62,6 +62,12 @@ class ReaderInfoBarView @JvmOverloads constructor(
private val innerWidth
get() = width - paddingLeft - paddingRight - insetLeft - insetRight
var isTimeVisible: Boolean = true
set(value) {
field = value
invalidate()
}
init {
paint.strokeWidth = context.resources.resolveDp(2f)
val insetCorner = getSystemUiDimensionOffset("rounded_corner_content_padding")
@@ -92,12 +98,14 @@ class ReaderInfoBarView @JvmOverloads constructor(
(paddingLeft + insetLeft + cutoutInsetLeft).toFloat(),
paddingTop + insetTop + ty,
)
paint.textAlign = Paint.Align.RIGHT
canvas.drawTextOutline(
timeText,
(width - paddingRight - insetRight - cutoutInsetRight).toFloat(),
paddingTop + insetTop + ty,
)
if (isTimeVisible) {
paint.textAlign = Paint.Align.RIGHT
canvas.drawTextOutline(
timeText,
(width - paddingRight - insetRight - cutoutInsetRight).toFloat(),
paddingTop + insetTop + ty,
)
}
}
override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) {
@@ -183,7 +191,9 @@ class ReaderInfoBarView @JvmOverloads constructor(
override fun onReceive(context: Context?, intent: Intent?) {
timeText = timeFormat.format(LocalTime.now())
invalidate()
if (isTimeVisible) {
invalidate()
}
}
}

View File

@@ -586,4 +586,6 @@
<string name="config_reset_confirm">Reset settings to default values? This action cannot be undone.</string>
<string name="use_two_pages_landscape">Use two pages layout on landscape orientation (beta)</string>
<string name="default_webtoon_zoom_out">Default webtoon zoom out</string>
<string name="fullscreen_mode">Fullscreen mode</string>
<string name="reader_fullscreen_summary">Hide system status and navigation bars</string>
</resources>

View File

@@ -76,12 +76,18 @@
android:summary="@string/reader_optimize_summary"
android:title="@string/reader_optimize" />
<SwitchPreferenceCompat
android:defaultValue="true"
android:key="reader_fullscreen"
android:summary="@string/reader_fullscreen_summary"
android:title="@string/fullscreen_mode"
app:allowDividerAbove="true" />
<SwitchPreferenceCompat
android:defaultValue="true"
android:key="reader_bar"
android:summary="@string/reader_info_bar_summary"
android:title="@string/reader_info_bar"
app:allowDividerAbove="true" />
android:title="@string/reader_info_bar" />
<SwitchPreferenceCompat
android:defaultValue="true"