Reader fullscreen option

master
Koitharu 2 years ago
parent 530dfa8cde
commit 4c3938a1fd
Signed by: Koitharu
GPG Key ID: 676DEE768C17A9D7

@ -111,6 +111,9 @@ class AppSettings @Inject constructor(@ApplicationContext context: Context) {
val isReaderZoomButtonsEnabled: Boolean val isReaderZoomButtonsEnabled: Boolean
get() = prefs.getBoolean(KEY_READER_ZOOM_BUTTONS, false) get() = prefs.getBoolean(KEY_READER_ZOOM_BUTTONS, false)
val isReaderFullscreenEnabled: Boolean
get() = prefs.getBoolean(KEY_READER_FULLSCREEN, true)
val isReaderOptimizationEnabled: Boolean val isReaderOptimizationEnabled: Boolean
get() = prefs.getBoolean(KEY_READER_OPTIMIZE, false) 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_LOCAL_STORAGE = "local_storage"
const val KEY_READER_DOUBLE_PAGES = "reader_double_pages" const val KEY_READER_DOUBLE_PAGES = "reader_double_pages"
const val KEY_READER_ZOOM_BUTTONS = "reader_zoom_buttons" 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_READER_VOLUME_BUTTONS = "reader_volume_buttons"
const val KEY_TRACKER_ENABLED = "tracker_enabled" const val KEY_TRACKER_ENABLED = "tracker_enabled"
const val KEY_TRACKER_WIFI_ONLY = "tracker_wifi" const val KEY_TRACKER_WIFI_ONLY = "tracker_wifi"

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

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

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

@ -586,4 +586,6 @@
<string name="config_reset_confirm">Reset settings to default values? This action cannot be undone.</string> <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="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="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> </resources>

@ -76,12 +76,18 @@
android:summary="@string/reader_optimize_summary" android:summary="@string/reader_optimize_summary"
android:title="@string/reader_optimize" /> 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 <SwitchPreferenceCompat
android:defaultValue="true" android:defaultValue="true"
android:key="reader_bar" android:key="reader_bar"
android:summary="@string/reader_info_bar_summary" android:summary="@string/reader_info_bar_summary"
android:title="@string/reader_info_bar" android:title="@string/reader_info_bar" />
app:allowDividerAbove="true" />
<SwitchPreferenceCompat <SwitchPreferenceCompat
android:defaultValue="true" android:defaultValue="true"

Loading…
Cancel
Save