Move all pager/webtoon reader setting to Compose sheet
(cherry picked from commit e40b8d537c2727a9867fedf8971afd01237a661f) # Conflicts: # app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsReaderScreen.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderPreferences.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderSettingsSheet.kt # app/src/main/res/layout/reader_pager_settings.xml
This commit is contained in:
+18
-33
@@ -7,7 +7,6 @@ import androidx.compose.runtime.ReadOnlyComposable
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.platform.LocalView
|
||||
import androidx.compose.ui.res.stringArrayResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import eu.kanade.presentation.more.settings.Preference
|
||||
import eu.kanade.presentation.util.collectAsState
|
||||
@@ -197,9 +196,9 @@ object SettingsReaderScreen : SearchableSettings {
|
||||
Preference.PreferenceItem.ListPreference(
|
||||
pref = navModePref,
|
||||
title = stringResource(R.string.pref_viewer_nav),
|
||||
entries = stringArrayResource(R.array.pager_nav).let {
|
||||
it.indices.zip(it).toMap()
|
||||
},
|
||||
entries = ReaderPreferences.TapZones
|
||||
.mapIndexed { index, it -> index to stringResource(it) }
|
||||
.toMap(),
|
||||
),
|
||||
Preference.PreferenceItem.ListPreference(
|
||||
pref = readerPreferences.pagerNavInverted(),
|
||||
@@ -215,25 +214,16 @@ object SettingsReaderScreen : SearchableSettings {
|
||||
Preference.PreferenceItem.ListPreference(
|
||||
pref = imageScaleTypePref,
|
||||
title = stringResource(R.string.pref_image_scale_type),
|
||||
entries = mapOf(
|
||||
1 to stringResource(R.string.scale_type_fit_screen),
|
||||
2 to stringResource(R.string.scale_type_stretch),
|
||||
3 to stringResource(R.string.scale_type_fit_width),
|
||||
4 to stringResource(R.string.scale_type_fit_height),
|
||||
5 to stringResource(R.string.scale_type_original_size),
|
||||
6 to stringResource(R.string.scale_type_smart_fit),
|
||||
),
|
||||
entries = ReaderPreferences.ImageScaleType
|
||||
.mapIndexed { index, it -> index + 1 to stringResource(it) }
|
||||
.toMap(),
|
||||
),
|
||||
Preference.PreferenceItem.ListPreference(
|
||||
pref = readerPreferences.zoomStart(),
|
||||
title = stringResource(R.string.pref_zoom_start),
|
||||
entries = mapOf(
|
||||
1 to stringResource(R.string.zoom_start_automatic),
|
||||
2 to stringResource(R.string.zoom_start_left),
|
||||
3 to stringResource(R.string.zoom_start_right),
|
||||
4 to stringResource(R.string.zoom_start_center),
|
||||
),
|
||||
|
||||
entries = ReaderPreferences.ZoomStart
|
||||
.mapIndexed { index, it -> index + 1 to stringResource(it) }
|
||||
.toMap(),
|
||||
),
|
||||
Preference.PreferenceItem.SwitchPreference(
|
||||
pref = readerPreferences.cropBorders(),
|
||||
@@ -304,9 +294,9 @@ object SettingsReaderScreen : SearchableSettings {
|
||||
Preference.PreferenceItem.ListPreference(
|
||||
pref = navModePref,
|
||||
title = stringResource(R.string.pref_viewer_nav),
|
||||
entries = stringArrayResource(R.array.webtoon_nav).let {
|
||||
it.indices.zip(it).toMap()
|
||||
},
|
||||
entries = ReaderPreferences.TapZones
|
||||
.mapIndexed { index, it -> index to stringResource(it) }
|
||||
.toMap(),
|
||||
),
|
||||
Preference.PreferenceItem.ListPreference(
|
||||
pref = readerPreferences.webtoonNavInverted(),
|
||||
@@ -527,11 +517,9 @@ object SettingsReaderScreen : SearchableSettings {
|
||||
pref = readerPreferences.pageLayout(),
|
||||
title = stringResource(R.string.page_layout),
|
||||
subtitle = stringResource(R.string.automatic_can_still_switch),
|
||||
entries = mapOf(
|
||||
0 to stringResource(R.string.single_page),
|
||||
1 to stringResource(R.string.double_pages),
|
||||
2 to stringResource(R.string.automatic_orientation),
|
||||
),
|
||||
entries = ReaderPreferences.PageLayouts
|
||||
.mapIndexed { index, it -> index + 1 to stringResource(it) }
|
||||
.toMap(),
|
||||
),
|
||||
Preference.PreferenceItem.SwitchPreference(
|
||||
pref = readerPreferences.invertDoublePages(),
|
||||
@@ -542,12 +530,9 @@ object SettingsReaderScreen : SearchableSettings {
|
||||
pref = readerPreferences.centerMarginType(),
|
||||
title = stringResource(R.string.center_margin),
|
||||
subtitle = stringResource(R.string.pref_center_margin_summary),
|
||||
entries = mapOf(
|
||||
0 to stringResource(R.string.center_margin_none),
|
||||
1 to stringResource(R.string.center_margin_double_page),
|
||||
2 to stringResource(R.string.center_margin_wide_page),
|
||||
3 to stringResource(R.string.center_margin_double_and_wide_page),
|
||||
),
|
||||
entries = ReaderPreferences.CenterMarginTypes
|
||||
.mapIndexed { index, it -> index + 1 to stringResource(it) }
|
||||
.toMap(),
|
||||
),
|
||||
Preference.PreferenceItem.SwitchPreference(
|
||||
pref = readerPreferences.cacheArchiveMangaOnDisk(),
|
||||
|
||||
@@ -12,17 +12,23 @@ import eu.kanade.tachiyomi.ui.reader.setting.ReaderSettingsScreenModel
|
||||
import eu.kanade.tachiyomi.util.system.isReleaseBuildType
|
||||
import tachiyomi.presentation.core.components.CheckboxItem
|
||||
import tachiyomi.presentation.core.components.HeadingItem
|
||||
import tachiyomi.presentation.core.components.RadioItem
|
||||
import tachiyomi.presentation.core.components.SliderItem
|
||||
import java.text.NumberFormat
|
||||
|
||||
@Composable
|
||||
internal fun ColumnScope.ReadingModePage(screenModel: ReaderSettingsScreenModel) {
|
||||
HeadingItem("This is still a WIP, the UI will be improved soon")
|
||||
|
||||
HeadingItem(R.string.pref_category_for_this_series)
|
||||
|
||||
// Reading mode
|
||||
// Rotation type
|
||||
// TODO: Reading mode
|
||||
HeadingItem(R.string.pref_category_reading_mode)
|
||||
|
||||
// if (pager)
|
||||
// TODO: Rotation type
|
||||
HeadingItem(R.string.rotation_type)
|
||||
|
||||
// TODO: if (pager)
|
||||
PagerViewerSettings(screenModel)
|
||||
|
||||
WebtoonViewerSettings(screenModel)
|
||||
@@ -36,10 +42,59 @@ internal fun ColumnScope.ReadingModePage(screenModel: ReaderSettingsScreenModel)
|
||||
private fun ColumnScope.PagerViewerSettings(screenModel: ReaderSettingsScreenModel) {
|
||||
HeadingItem(R.string.pager_viewer)
|
||||
|
||||
// Tap zones
|
||||
// Invert tap zones
|
||||
// Scale type
|
||||
// Zoom start position
|
||||
val navigationModePager by screenModel.preferences.navigationModePager().collectAsState()
|
||||
HeadingItem(R.string.pref_viewer_nav)
|
||||
ReaderPreferences.TapZones.mapIndexed { index, titleResId ->
|
||||
RadioItem(
|
||||
label = stringResource(titleResId),
|
||||
selected = navigationModePager == index,
|
||||
onClick = { screenModel.preferences.navigationModePager().set(index) },
|
||||
)
|
||||
}
|
||||
|
||||
if (navigationModePager != 5) {
|
||||
val pagerNavInverted by screenModel.preferences.pagerNavInverted().collectAsState()
|
||||
HeadingItem(R.string.pref_read_with_tapping_inverted)
|
||||
ReaderPreferences.TappingInvertMode.values().map {
|
||||
RadioItem(
|
||||
label = stringResource(it.titleResId),
|
||||
selected = pagerNavInverted == it,
|
||||
onClick = { screenModel.preferences.pagerNavInverted().set(it) },
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
val imageScaleType by screenModel.preferences.imageScaleType().collectAsState()
|
||||
HeadingItem(R.string.pref_image_scale_type)
|
||||
ReaderPreferences.ImageScaleType.mapIndexed { index, it ->
|
||||
RadioItem(
|
||||
label = stringResource(it),
|
||||
selected = imageScaleType == index + 1,
|
||||
onClick = { screenModel.preferences.imageScaleType().set(index + 1) },
|
||||
)
|
||||
}
|
||||
|
||||
val zoomStart by screenModel.preferences.zoomStart().collectAsState()
|
||||
HeadingItem(R.string.pref_zoom_start)
|
||||
ReaderPreferences.ZoomStart.mapIndexed { index, it ->
|
||||
RadioItem(
|
||||
label = stringResource(it),
|
||||
selected = zoomStart == index + 1,
|
||||
onClick = { screenModel.preferences.zoomStart().set(index + 1) },
|
||||
)
|
||||
}
|
||||
|
||||
// SY -->
|
||||
val pageLayout by screenModel.preferences.pageLayout().collectAsState()
|
||||
HeadingItem(R.string.page_layout)
|
||||
ReaderPreferences.PageLayouts.mapIndexed { index, it ->
|
||||
RadioItem(
|
||||
label = stringResource(it),
|
||||
selected = pageLayout == index + 1,
|
||||
onClick = { screenModel.preferences.pageLayout().set(index + 1) },
|
||||
)
|
||||
}
|
||||
// SY <--
|
||||
|
||||
val cropBorders by screenModel.preferences.cropBorders().collectAsState()
|
||||
CheckboxItem(
|
||||
@@ -108,7 +163,6 @@ private fun ColumnScope.PagerViewerSettings(screenModel: ReaderSettingsScreenMod
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
// SY -->
|
||||
val pageTransitionsPager by screenModel.preferences.pageTransitionsPager().collectAsState()
|
||||
CheckboxItem(
|
||||
@@ -127,6 +181,16 @@ private fun ColumnScope.PagerViewerSettings(screenModel: ReaderSettingsScreenMod
|
||||
screenModel.togglePreference(ReaderPreferences::invertDoublePages)
|
||||
},
|
||||
)
|
||||
|
||||
val centerMarginType by screenModel.preferences.centerMarginType().collectAsState()
|
||||
HeadingItem(R.string.pref_center_margin)
|
||||
ReaderPreferences.CenterMarginTypes.mapIndexed { index, it ->
|
||||
RadioItem(
|
||||
label = stringResource(it),
|
||||
selected = centerMarginType == index + 1,
|
||||
onClick = { screenModel.preferences.centerMarginType().set(index + 1) },
|
||||
)
|
||||
}
|
||||
// SY <--
|
||||
}
|
||||
|
||||
@@ -136,8 +200,27 @@ private fun ColumnScope.WebtoonViewerSettings(screenModel: ReaderSettingsScreenM
|
||||
|
||||
HeadingItem(R.string.webtoon_viewer)
|
||||
|
||||
// TODO: Tap zones
|
||||
// TODO: Invert tap zones
|
||||
val navigationModeWebtoon by screenModel.preferences.navigationModeWebtoon().collectAsState()
|
||||
HeadingItem(R.string.pref_viewer_nav)
|
||||
ReaderPreferences.TapZones.mapIndexed { index, titleResId ->
|
||||
RadioItem(
|
||||
label = stringResource(titleResId),
|
||||
selected = navigationModeWebtoon == index,
|
||||
onClick = { screenModel.preferences.navigationModeWebtoon().set(index) },
|
||||
)
|
||||
}
|
||||
|
||||
if (navigationModeWebtoon != 5) {
|
||||
val webtoonNavInverted by screenModel.preferences.webtoonNavInverted().collectAsState()
|
||||
HeadingItem(R.string.pref_read_with_tapping_inverted)
|
||||
ReaderPreferences.TappingInvertMode.values().map {
|
||||
RadioItem(
|
||||
label = stringResource(it.titleResId),
|
||||
selected = webtoonNavInverted == it,
|
||||
onClick = { screenModel.preferences.webtoonNavInverted().set(it) },
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
val webtoonSidePadding by screenModel.preferences.webtoonSidePadding().collectAsState()
|
||||
SliderItem(
|
||||
|
||||
Reference in New Issue
Block a user