|
@@ -1,6 +1,7 @@
|
|
|
package eu.kanade.presentation.more.settings.screen
|
|
|
|
|
|
import android.os.Build
|
|
|
+import androidx.annotation.StringRes
|
|
|
import androidx.compose.runtime.Composable
|
|
|
import androidx.compose.runtime.ReadOnlyComposable
|
|
|
import androidx.compose.runtime.getValue
|
|
@@ -20,9 +21,11 @@ import uy.kohesive.injekt.Injekt
|
|
|
import uy.kohesive.injekt.api.get
|
|
|
|
|
|
class SettingsReaderScreen : SearchableSettings {
|
|
|
+
|
|
|
@ReadOnlyComposable
|
|
|
@Composable
|
|
|
- override fun getTitle(): String = stringResource(id = R.string.pref_category_reader)
|
|
|
+ @StringRes
|
|
|
+ override fun getTitleRes() = R.string.pref_category_reader
|
|
|
|
|
|
@Composable
|
|
|
override fun getPreferences(): List<Preference> {
|
|
@@ -30,38 +33,38 @@ class SettingsReaderScreen : SearchableSettings {
|
|
|
return listOf(
|
|
|
Preference.PreferenceItem.ListPreference(
|
|
|
pref = readerPref.defaultReadingMode(),
|
|
|
- title = stringResource(id = R.string.pref_viewer_type),
|
|
|
+ title = stringResource(R.string.pref_viewer_type),
|
|
|
entries = ReadingModeType.values().drop(1)
|
|
|
- .associate { it.flagValue to stringResource(id = it.stringRes) },
|
|
|
+ .associate { it.flagValue to stringResource(it.stringRes) },
|
|
|
),
|
|
|
Preference.PreferenceItem.ListPreference(
|
|
|
pref = readerPref.doubleTapAnimSpeed(),
|
|
|
- title = stringResource(id = R.string.pref_double_tap_anim_speed),
|
|
|
+ title = stringResource(R.string.pref_double_tap_anim_speed),
|
|
|
entries = mapOf(
|
|
|
- 1 to stringResource(id = R.string.double_tap_anim_speed_0),
|
|
|
- 500 to stringResource(id = R.string.double_tap_anim_speed_normal),
|
|
|
- 250 to stringResource(id = R.string.double_tap_anim_speed_fast),
|
|
|
+ 1 to stringResource(R.string.double_tap_anim_speed_0),
|
|
|
+ 500 to stringResource(R.string.double_tap_anim_speed_normal),
|
|
|
+ 250 to stringResource(R.string.double_tap_anim_speed_fast),
|
|
|
),
|
|
|
),
|
|
|
Preference.PreferenceItem.SwitchPreference(
|
|
|
pref = readerPref.showReadingMode(),
|
|
|
- title = stringResource(id = R.string.pref_show_reading_mode),
|
|
|
- subtitle = stringResource(id = R.string.pref_show_reading_mode_summary),
|
|
|
+ title = stringResource(R.string.pref_show_reading_mode),
|
|
|
+ subtitle = stringResource(R.string.pref_show_reading_mode_summary),
|
|
|
),
|
|
|
Preference.PreferenceItem.SwitchPreference(
|
|
|
pref = readerPref.showNavigationOverlayOnStart(),
|
|
|
- title = stringResource(id = R.string.pref_show_navigation_mode),
|
|
|
- subtitle = stringResource(id = R.string.pref_show_navigation_mode_summary),
|
|
|
+ title = stringResource(R.string.pref_show_navigation_mode),
|
|
|
+ subtitle = stringResource(R.string.pref_show_navigation_mode_summary),
|
|
|
),
|
|
|
Preference.PreferenceItem.SwitchPreference(
|
|
|
pref = readerPref.trueColor(),
|
|
|
- title = stringResource(id = R.string.pref_true_color),
|
|
|
- subtitle = stringResource(id = R.string.pref_true_color_summary),
|
|
|
+ title = stringResource(R.string.pref_true_color),
|
|
|
+ subtitle = stringResource(R.string.pref_true_color_summary),
|
|
|
enabled = Build.VERSION.SDK_INT >= Build.VERSION_CODES.O,
|
|
|
),
|
|
|
Preference.PreferenceItem.SwitchPreference(
|
|
|
pref = readerPref.pageTransitions(),
|
|
|
- title = stringResource(id = R.string.pref_page_transitions),
|
|
|
+ title = stringResource(R.string.pref_page_transitions),
|
|
|
),
|
|
|
getDisplayGroup(readerPreferences = readerPref),
|
|
|
getPagedGroup(readerPreferences = readerPref),
|
|
@@ -76,42 +79,42 @@ class SettingsReaderScreen : SearchableSettings {
|
|
|
val fullscreenPref = readerPreferences.fullscreen()
|
|
|
val fullscreen by fullscreenPref.collectAsState()
|
|
|
return Preference.PreferenceGroup(
|
|
|
- title = stringResource(id = R.string.pref_category_display),
|
|
|
+ title = stringResource(R.string.pref_category_display),
|
|
|
preferenceItems = listOf(
|
|
|
Preference.PreferenceItem.ListPreference(
|
|
|
pref = readerPreferences.defaultOrientationType(),
|
|
|
- title = stringResource(id = R.string.pref_rotation_type),
|
|
|
+ title = stringResource(R.string.pref_rotation_type),
|
|
|
entries = OrientationType.values().drop(1)
|
|
|
- .associate { it.flagValue to stringResource(id = it.stringRes) },
|
|
|
+ .associate { it.flagValue to stringResource(it.stringRes) },
|
|
|
),
|
|
|
Preference.PreferenceItem.ListPreference(
|
|
|
pref = readerPreferences.readerTheme(),
|
|
|
- title = stringResource(id = R.string.pref_reader_theme),
|
|
|
+ title = stringResource(R.string.pref_reader_theme),
|
|
|
entries = mapOf(
|
|
|
- 1 to stringResource(id = R.string.black_background),
|
|
|
- 2 to stringResource(id = R.string.gray_background),
|
|
|
- 0 to stringResource(id = R.string.white_background),
|
|
|
- 3 to stringResource(id = R.string.automatic_background),
|
|
|
+ 1 to stringResource(R.string.black_background),
|
|
|
+ 2 to stringResource(R.string.gray_background),
|
|
|
+ 0 to stringResource(R.string.white_background),
|
|
|
+ 3 to stringResource(R.string.automatic_background),
|
|
|
),
|
|
|
),
|
|
|
Preference.PreferenceItem.SwitchPreference(
|
|
|
pref = fullscreenPref,
|
|
|
- title = stringResource(id = R.string.pref_fullscreen),
|
|
|
+ title = stringResource(R.string.pref_fullscreen),
|
|
|
),
|
|
|
Preference.PreferenceItem.SwitchPreference(
|
|
|
pref = readerPreferences.cutoutShort(),
|
|
|
- title = stringResource(id = R.string.pref_cutout_short),
|
|
|
+ title = stringResource(R.string.pref_cutout_short),
|
|
|
enabled = fullscreen &&
|
|
|
Build.VERSION.SDK_INT >= Build.VERSION_CODES.P &&
|
|
|
LocalView.current.rootWindowInsets?.displayCutout != null, // has cutout
|
|
|
),
|
|
|
Preference.PreferenceItem.SwitchPreference(
|
|
|
pref = readerPreferences.keepScreenOn(),
|
|
|
- title = stringResource(id = R.string.pref_keep_screen_on),
|
|
|
+ title = stringResource(R.string.pref_keep_screen_on),
|
|
|
),
|
|
|
Preference.PreferenceItem.SwitchPreference(
|
|
|
pref = readerPreferences.showPageNumber(),
|
|
|
- title = stringResource(id = R.string.pref_show_page_number),
|
|
|
+ title = stringResource(R.string.pref_show_page_number),
|
|
|
),
|
|
|
),
|
|
|
)
|
|
@@ -128,71 +131,71 @@ class SettingsReaderScreen : SearchableSettings {
|
|
|
val dualPageSplit by dualPageSplitPref.collectAsState()
|
|
|
|
|
|
return Preference.PreferenceGroup(
|
|
|
- title = stringResource(id = R.string.pager_viewer),
|
|
|
+ title = stringResource(R.string.pager_viewer),
|
|
|
preferenceItems = listOf(
|
|
|
Preference.PreferenceItem.ListPreference(
|
|
|
pref = navModePref,
|
|
|
- title = stringResource(id = R.string.pref_viewer_nav),
|
|
|
+ title = stringResource(R.string.pref_viewer_nav),
|
|
|
entries = stringArrayResource(id = R.array.pager_nav).let {
|
|
|
it.indices.zip(it).toMap()
|
|
|
},
|
|
|
),
|
|
|
Preference.PreferenceItem.ListPreference(
|
|
|
pref = readerPreferences.pagerNavInverted(),
|
|
|
- title = stringResource(id = R.string.pref_read_with_tapping_inverted),
|
|
|
+ title = stringResource(R.string.pref_read_with_tapping_inverted),
|
|
|
entries = mapOf(
|
|
|
- TappingInvertMode.NONE to stringResource(id = R.string.none),
|
|
|
- TappingInvertMode.HORIZONTAL to stringResource(id = R.string.tapping_inverted_horizontal),
|
|
|
- TappingInvertMode.VERTICAL to stringResource(id = R.string.tapping_inverted_vertical),
|
|
|
- TappingInvertMode.BOTH to stringResource(id = R.string.tapping_inverted_both),
|
|
|
+ TappingInvertMode.NONE to stringResource(R.string.none),
|
|
|
+ TappingInvertMode.HORIZONTAL to stringResource(R.string.tapping_inverted_horizontal),
|
|
|
+ TappingInvertMode.VERTICAL to stringResource(R.string.tapping_inverted_vertical),
|
|
|
+ TappingInvertMode.BOTH to stringResource(R.string.tapping_inverted_both),
|
|
|
),
|
|
|
enabled = navMode != 5,
|
|
|
),
|
|
|
Preference.PreferenceItem.SwitchPreference(
|
|
|
pref = readerPreferences.navigateToPan(),
|
|
|
- title = stringResource(id = R.string.pref_navigate_pan),
|
|
|
+ title = stringResource(R.string.pref_navigate_pan),
|
|
|
enabled = navMode != 5,
|
|
|
),
|
|
|
Preference.PreferenceItem.ListPreference(
|
|
|
pref = imageScaleTypePref,
|
|
|
- title = stringResource(id = R.string.pref_image_scale_type),
|
|
|
+ title = stringResource(R.string.pref_image_scale_type),
|
|
|
entries = mapOf(
|
|
|
- 1 to stringResource(id = R.string.scale_type_fit_screen),
|
|
|
- 2 to stringResource(id = R.string.scale_type_stretch),
|
|
|
- 3 to stringResource(id = R.string.scale_type_fit_width),
|
|
|
- 4 to stringResource(id = R.string.scale_type_fit_height),
|
|
|
- 5 to stringResource(id = R.string.scale_type_original_size),
|
|
|
- 6 to stringResource(id = R.string.scale_type_smart_fit),
|
|
|
+ 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),
|
|
|
),
|
|
|
),
|
|
|
Preference.PreferenceItem.SwitchPreference(
|
|
|
pref = readerPreferences.landscapeZoom(),
|
|
|
- title = stringResource(id = R.string.pref_landscape_zoom),
|
|
|
+ title = stringResource(R.string.pref_landscape_zoom),
|
|
|
enabled = imageScaleType == 1,
|
|
|
),
|
|
|
Preference.PreferenceItem.ListPreference(
|
|
|
pref = readerPreferences.zoomStart(),
|
|
|
- title = stringResource(id = R.string.pref_zoom_start),
|
|
|
+ title = stringResource(R.string.pref_zoom_start),
|
|
|
entries = mapOf(
|
|
|
- 1 to stringResource(id = R.string.zoom_start_automatic),
|
|
|
- 2 to stringResource(id = R.string.zoom_start_left),
|
|
|
- 3 to stringResource(id = R.string.zoom_start_right),
|
|
|
- 4 to stringResource(id = R.string.zoom_start_center),
|
|
|
+ 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),
|
|
|
),
|
|
|
|
|
|
),
|
|
|
Preference.PreferenceItem.SwitchPreference(
|
|
|
pref = readerPreferences.cropBorders(),
|
|
|
- title = stringResource(id = R.string.pref_crop_borders),
|
|
|
+ title = stringResource(R.string.pref_crop_borders),
|
|
|
),
|
|
|
Preference.PreferenceItem.SwitchPreference(
|
|
|
pref = dualPageSplitPref,
|
|
|
- title = stringResource(id = R.string.pref_dual_page_split),
|
|
|
+ title = stringResource(R.string.pref_dual_page_split),
|
|
|
),
|
|
|
Preference.PreferenceItem.SwitchPreference(
|
|
|
pref = readerPreferences.dualPageInvertPaged(),
|
|
|
- title = stringResource(id = R.string.pref_dual_page_invert),
|
|
|
- subtitle = stringResource(id = R.string.pref_dual_page_invert_summary),
|
|
|
+ title = stringResource(R.string.pref_dual_page_invert),
|
|
|
+ subtitle = stringResource(R.string.pref_dual_page_invert_summary),
|
|
|
enabled = dualPageSplit,
|
|
|
),
|
|
|
),
|
|
@@ -208,66 +211,66 @@ class SettingsReaderScreen : SearchableSettings {
|
|
|
val dualPageSplit by dualPageSplitPref.collectAsState()
|
|
|
|
|
|
return Preference.PreferenceGroup(
|
|
|
- title = stringResource(id = R.string.webtoon_viewer),
|
|
|
+ title = stringResource(R.string.webtoon_viewer),
|
|
|
preferenceItems = listOf(
|
|
|
Preference.PreferenceItem.ListPreference(
|
|
|
pref = navModePref,
|
|
|
- title = stringResource(id = R.string.pref_viewer_nav),
|
|
|
+ title = stringResource(R.string.pref_viewer_nav),
|
|
|
entries = stringArrayResource(id = R.array.webtoon_nav).let {
|
|
|
it.indices.zip(it).toMap()
|
|
|
},
|
|
|
),
|
|
|
Preference.PreferenceItem.ListPreference(
|
|
|
pref = readerPreferences.webtoonNavInverted(),
|
|
|
- title = stringResource(id = R.string.pref_read_with_tapping_inverted),
|
|
|
+ title = stringResource(R.string.pref_read_with_tapping_inverted),
|
|
|
entries = mapOf(
|
|
|
- TappingInvertMode.NONE to stringResource(id = R.string.none),
|
|
|
- TappingInvertMode.HORIZONTAL to stringResource(id = R.string.tapping_inverted_horizontal),
|
|
|
- TappingInvertMode.VERTICAL to stringResource(id = R.string.tapping_inverted_vertical),
|
|
|
- TappingInvertMode.BOTH to stringResource(id = R.string.tapping_inverted_both),
|
|
|
+ TappingInvertMode.NONE to stringResource(R.string.none),
|
|
|
+ TappingInvertMode.HORIZONTAL to stringResource(R.string.tapping_inverted_horizontal),
|
|
|
+ TappingInvertMode.VERTICAL to stringResource(R.string.tapping_inverted_vertical),
|
|
|
+ TappingInvertMode.BOTH to stringResource(R.string.tapping_inverted_both),
|
|
|
),
|
|
|
enabled = navMode != 5,
|
|
|
),
|
|
|
Preference.PreferenceItem.ListPreference(
|
|
|
pref = readerPreferences.webtoonSidePadding(),
|
|
|
- title = stringResource(id = R.string.pref_webtoon_side_padding),
|
|
|
+ title = stringResource(R.string.pref_webtoon_side_padding),
|
|
|
entries = mapOf(
|
|
|
- 0 to stringResource(id = R.string.webtoon_side_padding_0),
|
|
|
- 5 to stringResource(id = R.string.webtoon_side_padding_5),
|
|
|
- 10 to stringResource(id = R.string.webtoon_side_padding_10),
|
|
|
- 15 to stringResource(id = R.string.webtoon_side_padding_15),
|
|
|
- 20 to stringResource(id = R.string.webtoon_side_padding_20),
|
|
|
- 25 to stringResource(id = R.string.webtoon_side_padding_25),
|
|
|
+ 0 to stringResource(R.string.webtoon_side_padding_0),
|
|
|
+ 5 to stringResource(R.string.webtoon_side_padding_5),
|
|
|
+ 10 to stringResource(R.string.webtoon_side_padding_10),
|
|
|
+ 15 to stringResource(R.string.webtoon_side_padding_15),
|
|
|
+ 20 to stringResource(R.string.webtoon_side_padding_20),
|
|
|
+ 25 to stringResource(R.string.webtoon_side_padding_25),
|
|
|
),
|
|
|
),
|
|
|
Preference.PreferenceItem.ListPreference(
|
|
|
pref = readerPreferences.readerHideThreshold(),
|
|
|
- title = stringResource(id = R.string.pref_hide_threshold),
|
|
|
+ title = stringResource(R.string.pref_hide_threshold),
|
|
|
entries = mapOf(
|
|
|
- ReaderHideThreshold.HIGHEST to stringResource(id = R.string.pref_highest),
|
|
|
- ReaderHideThreshold.HIGH to stringResource(id = R.string.pref_high),
|
|
|
- ReaderHideThreshold.LOW to stringResource(id = R.string.pref_low),
|
|
|
- ReaderHideThreshold.LOWEST to stringResource(id = R.string.pref_lowest),
|
|
|
+ ReaderHideThreshold.HIGHEST to stringResource(R.string.pref_highest),
|
|
|
+ ReaderHideThreshold.HIGH to stringResource(R.string.pref_high),
|
|
|
+ ReaderHideThreshold.LOW to stringResource(R.string.pref_low),
|
|
|
+ ReaderHideThreshold.LOWEST to stringResource(R.string.pref_lowest),
|
|
|
),
|
|
|
),
|
|
|
Preference.PreferenceItem.SwitchPreference(
|
|
|
pref = readerPreferences.cropBordersWebtoon(),
|
|
|
- title = stringResource(id = R.string.pref_crop_borders),
|
|
|
+ title = stringResource(R.string.pref_crop_borders),
|
|
|
),
|
|
|
Preference.PreferenceItem.SwitchPreference(
|
|
|
pref = dualPageSplitPref,
|
|
|
- title = stringResource(id = R.string.pref_dual_page_split),
|
|
|
+ title = stringResource(R.string.pref_dual_page_split),
|
|
|
),
|
|
|
Preference.PreferenceItem.SwitchPreference(
|
|
|
pref = readerPreferences.dualPageInvertWebtoon(),
|
|
|
- title = stringResource(id = R.string.pref_dual_page_invert),
|
|
|
- subtitle = stringResource(id = R.string.pref_dual_page_invert_summary),
|
|
|
+ title = stringResource(R.string.pref_dual_page_invert),
|
|
|
+ subtitle = stringResource(R.string.pref_dual_page_invert_summary),
|
|
|
enabled = dualPageSplit,
|
|
|
),
|
|
|
Preference.PreferenceItem.SwitchPreference(
|
|
|
pref = readerPreferences.longStripSplitWebtoon(),
|
|
|
- title = stringResource(id = R.string.pref_long_strip_split),
|
|
|
- subtitle = stringResource(id = R.string.split_tall_images_summary),
|
|
|
+ title = stringResource(R.string.pref_long_strip_split),
|
|
|
+ subtitle = stringResource(R.string.split_tall_images_summary),
|
|
|
),
|
|
|
),
|
|
|
)
|
|
@@ -278,15 +281,15 @@ class SettingsReaderScreen : SearchableSettings {
|
|
|
val readWithVolumeKeysPref = readerPreferences.readWithVolumeKeys()
|
|
|
val readWithVolumeKeys by readWithVolumeKeysPref.collectAsState()
|
|
|
return Preference.PreferenceGroup(
|
|
|
- title = stringResource(id = R.string.pref_reader_navigation),
|
|
|
+ title = stringResource(R.string.pref_reader_navigation),
|
|
|
preferenceItems = listOf(
|
|
|
Preference.PreferenceItem.SwitchPreference(
|
|
|
pref = readWithVolumeKeysPref,
|
|
|
- title = stringResource(id = R.string.pref_read_with_volume_keys),
|
|
|
+ title = stringResource(R.string.pref_read_with_volume_keys),
|
|
|
),
|
|
|
Preference.PreferenceItem.SwitchPreference(
|
|
|
pref = readerPreferences.readWithVolumeKeysInverted(),
|
|
|
- title = stringResource(id = R.string.pref_read_with_volume_keys_inverted),
|
|
|
+ title = stringResource(R.string.pref_read_with_volume_keys_inverted),
|
|
|
enabled = readWithVolumeKeys,
|
|
|
),
|
|
|
),
|
|
@@ -296,15 +299,15 @@ class SettingsReaderScreen : SearchableSettings {
|
|
|
@Composable
|
|
|
private fun getActionsGroup(readerPreferences: ReaderPreferences): Preference.PreferenceGroup {
|
|
|
return Preference.PreferenceGroup(
|
|
|
- title = stringResource(id = R.string.pref_reader_actions),
|
|
|
+ title = stringResource(R.string.pref_reader_actions),
|
|
|
preferenceItems = listOf(
|
|
|
Preference.PreferenceItem.SwitchPreference(
|
|
|
pref = readerPreferences.readWithLongTap(),
|
|
|
- title = stringResource(id = R.string.pref_read_with_long_tap),
|
|
|
+ title = stringResource(R.string.pref_read_with_long_tap),
|
|
|
),
|
|
|
Preference.PreferenceItem.SwitchPreference(
|
|
|
pref = readerPreferences.folderPerManga(),
|
|
|
- title = stringResource(id = R.string.pref_create_folder_per_manga),
|
|
|
+ title = stringResource(R.string.pref_create_folder_per_manga),
|
|
|
),
|
|
|
),
|
|
|
)
|