diff --git a/app/src/main/java/eu/kanade/domain/manga/interactor/SetMangaViewerFlags.kt b/app/src/main/java/eu/kanade/domain/manga/interactor/SetMangaViewerFlags.kt index 8ffc27bb9..083d26e98 100644 --- a/app/src/main/java/eu/kanade/domain/manga/interactor/SetMangaViewerFlags.kt +++ b/app/src/main/java/eu/kanade/domain/manga/interactor/SetMangaViewerFlags.kt @@ -1,7 +1,7 @@ package eu.kanade.domain.manga.interactor -import eu.kanade.tachiyomi.ui.reader.setting.OrientationType -import eu.kanade.tachiyomi.ui.reader.setting.ReadingModeType +import eu.kanade.tachiyomi.ui.reader.setting.ReaderOrientation +import eu.kanade.tachiyomi.ui.reader.setting.ReadingMode import tachiyomi.domain.manga.model.MangaUpdate import tachiyomi.domain.manga.repository.MangaRepository @@ -14,7 +14,7 @@ class SetMangaViewerFlags( mangaRepository.update( MangaUpdate( id = id, - viewerFlags = manga.viewerFlags.setFlag(flag, ReadingModeType.MASK.toLong()), + viewerFlags = manga.viewerFlags.setFlag(flag, ReadingMode.MASK.toLong()), ), ) } @@ -24,7 +24,7 @@ class SetMangaViewerFlags( mangaRepository.update( MangaUpdate( id = id, - viewerFlags = manga.viewerFlags.setFlag(flag, OrientationType.MASK.toLong()), + viewerFlags = manga.viewerFlags.setFlag(flag, ReaderOrientation.MASK.toLong()), ), ) } diff --git a/app/src/main/java/eu/kanade/domain/manga/model/Manga.kt b/app/src/main/java/eu/kanade/domain/manga/model/Manga.kt index 3ee9b8698..968fa08ea 100644 --- a/app/src/main/java/eu/kanade/domain/manga/model/Manga.kt +++ b/app/src/main/java/eu/kanade/domain/manga/model/Manga.kt @@ -3,8 +3,8 @@ package eu.kanade.domain.manga.model import eu.kanade.domain.base.BasePreferences import eu.kanade.tachiyomi.data.cache.CoverCache import eu.kanade.tachiyomi.source.model.SManga -import eu.kanade.tachiyomi.ui.reader.setting.OrientationType -import eu.kanade.tachiyomi.ui.reader.setting.ReadingModeType +import eu.kanade.tachiyomi.ui.reader.setting.ReaderOrientation +import eu.kanade.tachiyomi.ui.reader.setting.ReadingMode import eu.kanade.tachiyomi.util.storage.CbzCrypto import tachiyomi.core.metadata.comicinfo.ComicInfo import tachiyomi.core.metadata.comicinfo.ComicInfoPublishingStatus @@ -15,11 +15,11 @@ import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get // TODO: move these into the domain model -val Manga.readingModeType: Long - get() = viewerFlags and ReadingModeType.MASK.toLong() +val Manga.readingMode: Long + get() = viewerFlags and ReadingMode.MASK.toLong() -val Manga.orientationType: Long - get() = viewerFlags and OrientationType.MASK.toLong() +val Manga.readerOrientation: Long + get() = viewerFlags and ReaderOrientation.MASK.toLong() val Manga.downloadedFilter: TriState get() { diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsReaderScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsReaderScreen.kt index a96113437..cd1b72ead 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsReaderScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsReaderScreen.kt @@ -10,10 +10,10 @@ import androidx.compose.ui.platform.LocalView import androidx.compose.ui.res.stringResource import eu.kanade.presentation.more.settings.Preference import eu.kanade.tachiyomi.R -import eu.kanade.tachiyomi.ui.reader.setting.OrientationType import eu.kanade.tachiyomi.ui.reader.setting.ReaderBottomButton +import eu.kanade.tachiyomi.ui.reader.setting.ReaderOrientation import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences -import eu.kanade.tachiyomi.ui.reader.setting.ReadingModeType +import eu.kanade.tachiyomi.ui.reader.setting.ReadingMode import eu.kanade.tachiyomi.ui.reader.viewer.pager.PagerConfig import tachiyomi.presentation.core.util.collectAsState import uy.kohesive.injekt.Injekt @@ -37,7 +37,7 @@ object SettingsReaderScreen : SearchableSettings { Preference.PreferenceItem.ListPreference( pref = readerPref.defaultReadingMode(), title = stringResource(R.string.pref_viewer_type), - entries = ReadingModeType.entries.drop(1) + entries = ReadingMode.entries.drop(1) .associate { it.flagValue to stringResource(it.stringRes) }, ), Preference.PreferenceItem.ListPreference( @@ -121,7 +121,7 @@ object SettingsReaderScreen : SearchableSettings { Preference.PreferenceItem.ListPreference( pref = readerPreferences.defaultOrientationType(), title = stringResource(R.string.pref_rotation_type), - entries = OrientationType.entries.drop(1) + entries = ReaderOrientation.entries.drop(1) .associate { it.flagValue to stringResource(it.stringRes) }, ), Preference.PreferenceItem.ListPreference( diff --git a/app/src/main/java/eu/kanade/presentation/reader/OrientationModeSelectDialog.kt b/app/src/main/java/eu/kanade/presentation/reader/OrientationSelectDialog.kt similarity index 79% rename from app/src/main/java/eu/kanade/presentation/reader/OrientationModeSelectDialog.kt rename to app/src/main/java/eu/kanade/presentation/reader/OrientationSelectDialog.kt index a143634ab..08a08c08b 100644 --- a/app/src/main/java/eu/kanade/presentation/reader/OrientationModeSelectDialog.kt +++ b/app/src/main/java/eu/kanade/presentation/reader/OrientationSelectDialog.kt @@ -13,28 +13,28 @@ import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.vectorResource import androidx.compose.ui.unit.dp -import eu.kanade.domain.manga.model.orientationType +import eu.kanade.domain.manga.model.readerOrientation import eu.kanade.presentation.components.AdaptiveSheet import eu.kanade.presentation.theme.TachiyomiTheme import eu.kanade.tachiyomi.R -import eu.kanade.tachiyomi.ui.reader.setting.OrientationType +import eu.kanade.tachiyomi.ui.reader.setting.ReaderOrientation import eu.kanade.tachiyomi.ui.reader.setting.ReaderSettingsScreenModel import tachiyomi.presentation.core.components.SettingsIconGrid import tachiyomi.presentation.core.components.material.IconToggleButton import tachiyomi.presentation.core.util.ThemePreviews @Composable -fun OrientationModeSelectDialog( +fun OrientationSelectDialog( onDismissRequest: () -> Unit, screenModel: ReaderSettingsScreenModel, onChange: (Int) -> Unit, ) { val manga by screenModel.mangaFlow.collectAsState() - val orientationType = remember(manga) { OrientationType.fromPreference(manga?.orientationType?.toInt()) } + val orientation = remember(manga) { ReaderOrientation.fromPreference(manga?.readerOrientation?.toInt()) } AdaptiveSheet(onDismissRequest = onDismissRequest) { DialogContent( - orientationType = orientationType, + orientation = orientation, onChangeOrientation = { screenModel.onChangeOrientation(it) onChange(it.stringRes) @@ -46,14 +46,14 @@ fun OrientationModeSelectDialog( @Composable private fun DialogContent( - orientationType: OrientationType, - onChangeOrientation: (OrientationType) -> Unit, + orientation: ReaderOrientation, + onChangeOrientation: (ReaderOrientation) -> Unit, ) { Box(modifier = Modifier.padding(vertical = 16.dp)) { SettingsIconGrid(R.string.rotation_type) { - items(OrientationType.entries) { mode -> + items(ReaderOrientation.entries) { mode -> IconToggleButton( - checked = mode == orientationType, + checked = mode == orientation, onCheckedChange = { onChangeOrientation(mode) }, @@ -71,7 +71,7 @@ private fun DialogContent( private fun DialogContentPreview() { TachiyomiTheme { DialogContent( - orientationType = OrientationType.DEFAULT, + orientation = ReaderOrientation.DEFAULT, onChangeOrientation = {}, ) } diff --git a/app/src/main/java/eu/kanade/presentation/reader/ReadingModeSelectDialog.kt b/app/src/main/java/eu/kanade/presentation/reader/ReadingModeSelectDialog.kt index a2089c7f5..2d976f92a 100644 --- a/app/src/main/java/eu/kanade/presentation/reader/ReadingModeSelectDialog.kt +++ b/app/src/main/java/eu/kanade/presentation/reader/ReadingModeSelectDialog.kt @@ -13,12 +13,12 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.vectorResource -import eu.kanade.domain.manga.model.readingModeType +import eu.kanade.domain.manga.model.readingMode import eu.kanade.presentation.components.AdaptiveSheet import eu.kanade.presentation.theme.TachiyomiTheme import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.ui.reader.setting.ReaderSettingsScreenModel -import eu.kanade.tachiyomi.ui.reader.setting.ReadingModeType +import eu.kanade.tachiyomi.ui.reader.setting.ReadingMode import tachiyomi.presentation.core.components.SettingsIconGrid import tachiyomi.presentation.core.components.material.IconToggleButton import tachiyomi.presentation.core.components.material.padding @@ -31,7 +31,7 @@ fun ReadingModeSelectDialog( onChange: (Int) -> Unit, ) { val manga by screenModel.mangaFlow.collectAsState() - val readingMode = remember(manga) { ReadingModeType.fromPreference(manga?.readingModeType?.toInt()) } + val readingMode = remember(manga) { ReadingMode.fromPreference(manga?.readingMode?.toInt()) } AdaptiveSheet(onDismissRequest = onDismissRequest) { DialogContent( @@ -47,12 +47,12 @@ fun ReadingModeSelectDialog( @Composable private fun DialogContent( - readingMode: ReadingModeType, - onChangeReadingMode: (ReadingModeType) -> Unit, + readingMode: ReadingMode, + onChangeReadingMode: (ReadingMode) -> Unit, ) { Box(modifier = Modifier.padding(vertical = MaterialTheme.padding.medium)) { SettingsIconGrid(R.string.pref_category_reading_mode) { - items(ReadingModeType.entries) { mode -> + items(ReadingMode.entries) { mode -> IconToggleButton( checked = mode == readingMode, onCheckedChange = { @@ -72,7 +72,7 @@ private fun DialogContent( private fun DialogContentPreview() { TachiyomiTheme { DialogContent( - readingMode = ReadingModeType.DEFAULT, + readingMode = ReadingMode.DEFAULT, onChangeReadingMode = {}, ) } diff --git a/app/src/main/java/eu/kanade/presentation/reader/appbars/BottomReaderBar.kt b/app/src/main/java/eu/kanade/presentation/reader/appbars/BottomReaderBar.kt index 0ef6da13e..f776ba2be 100644 --- a/app/src/main/java/eu/kanade/presentation/reader/appbars/BottomReaderBar.kt +++ b/app/src/main/java/eu/kanade/presentation/reader/appbars/BottomReaderBar.kt @@ -20,9 +20,9 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import eu.kanade.tachiyomi.R -import eu.kanade.tachiyomi.ui.reader.setting.OrientationType import eu.kanade.tachiyomi.ui.reader.setting.ReaderBottomButton -import eu.kanade.tachiyomi.ui.reader.setting.ReadingModeType +import eu.kanade.tachiyomi.ui.reader.setting.ReaderOrientation +import eu.kanade.tachiyomi.ui.reader.setting.ReadingMode @Composable fun BottomReaderBar( @@ -30,10 +30,10 @@ fun BottomReaderBar( enabledButtons: Set, // SY <-- backgroundColor: Color, - readingMode: ReadingModeType, + readingMode: ReadingMode, onClickReadingMode: () -> Unit, - orientationMode: OrientationType, - onClickOrientationMode: () -> Unit, + orientation: ReaderOrientation, + onClickOrientation: () -> Unit, cropEnabled: Boolean, onClickCropBorder: () -> Unit, onClickSettings: () -> Unit, @@ -93,8 +93,8 @@ fun BottomReaderBar( } val cropBorders = when (readingMode) { - ReadingModeType.WEBTOON -> ReaderBottomButton.CropBordersWebtoon - ReadingModeType.CONTINUOUS_VERTICAL -> ReaderBottomButton.CropBordersContinuesVertical + ReadingMode.WEBTOON -> ReaderBottomButton.CropBordersWebtoon + ReadingMode.CONTINUOUS_VERTICAL -> ReaderBottomButton.CropBordersContinuesVertical else -> ReaderBottomButton.CropBordersPager } if (cropBorders.isIn(enabledButtons)) { @@ -107,9 +107,9 @@ fun BottomReaderBar( } if (ReaderBottomButton.Rotation.isIn(enabledButtons)) { - IconButton(onClick = onClickOrientationMode) { + IconButton(onClick = onClickOrientation) { Icon( - painter = painterResource(orientationMode.iconRes), + painter = painterResource(orientation.iconRes), contentDescription = stringResource(R.string.pref_rotation_type), ) } @@ -118,7 +118,7 @@ fun BottomReaderBar( if ( !dualPageSplitEnabled && ReaderBottomButton.PageLayout.isIn(enabledButtons) && - ReadingModeType.isPagerType(readingMode.flagValue) + ReadingMode.isPagerType(readingMode.flagValue) ) { IconButton(onClick = onClickPageLayout) { Icon( 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 77604f918..620355a3c 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 @@ -28,8 +28,8 @@ import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.LayoutDirection import androidx.compose.ui.unit.dp import eu.kanade.presentation.components.AppBar -import eu.kanade.tachiyomi.ui.reader.setting.OrientationType -import eu.kanade.tachiyomi.ui.reader.setting.ReadingModeType +import eu.kanade.tachiyomi.ui.reader.setting.ReaderOrientation +import eu.kanade.tachiyomi.ui.reader.setting.ReadingMode import eu.kanade.tachiyomi.ui.reader.viewer.Viewer import eu.kanade.tachiyomi.ui.reader.viewer.pager.R2LPagerViewer @@ -82,10 +82,10 @@ fun ReaderAppBars( totalPages: Int, onSliderValueChange: (Int) -> Unit, - readingMode: ReadingModeType, + readingMode: ReadingMode, onClickReadingMode: () -> Unit, - orientationMode: OrientationType, - onClickOrientationMode: () -> Unit, + orientation: ReaderOrientation, + onClickOrientation: () -> Unit, cropEnabled: Boolean, onClickCropBorder: () -> Unit, onClickSettings: () -> Unit, @@ -291,8 +291,8 @@ fun ReaderAppBars( backgroundColor = backgroundColor, readingMode = readingMode, onClickReadingMode = onClickReadingMode, - orientationMode = orientationMode, - onClickOrientationMode = onClickOrientationMode, + orientation = orientation, + onClickOrientation = onClickOrientation, cropEnabled = cropEnabled, onClickCropBorder = onClickCropBorder, onClickSettings = onClickSettings, diff --git a/app/src/main/java/eu/kanade/presentation/reader/settings/ReadingModePage.kt b/app/src/main/java/eu/kanade/presentation/reader/settings/ReadingModePage.kt index 1fbb002c8..81f842329 100644 --- a/app/src/main/java/eu/kanade/presentation/reader/settings/ReadingModePage.kt +++ b/app/src/main/java/eu/kanade/presentation/reader/settings/ReadingModePage.kt @@ -8,13 +8,13 @@ import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.ui.res.stringResource -import eu.kanade.domain.manga.model.orientationType -import eu.kanade.domain.manga.model.readingModeType +import eu.kanade.domain.manga.model.readerOrientation +import eu.kanade.domain.manga.model.readingMode import eu.kanade.tachiyomi.R -import eu.kanade.tachiyomi.ui.reader.setting.OrientationType +import eu.kanade.tachiyomi.ui.reader.setting.ReaderOrientation import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences import eu.kanade.tachiyomi.ui.reader.setting.ReaderSettingsScreenModel -import eu.kanade.tachiyomi.ui.reader.setting.ReadingModeType +import eu.kanade.tachiyomi.ui.reader.setting.ReadingMode import eu.kanade.tachiyomi.ui.reader.viewer.webtoon.WebtoonViewer import tachiyomi.presentation.core.components.CheckboxItem import tachiyomi.presentation.core.components.HeadingItem @@ -23,33 +23,29 @@ import tachiyomi.presentation.core.components.SliderItem import tachiyomi.presentation.core.util.collectAsState import java.text.NumberFormat -private val readingModeOptions = ReadingModeType.entries.map { it.stringRes to it } -private val orientationTypeOptions = OrientationType.entries.map { it.stringRes to it } -private val tappingInvertModeOptions = ReaderPreferences.TappingInvertMode.entries.map { it.titleResId to it } - @Composable internal fun ColumnScope.ReadingModePage(screenModel: ReaderSettingsScreenModel) { HeadingItem(R.string.pref_category_for_this_series) val manga by screenModel.mangaFlow.collectAsState() - val readingMode = remember(manga) { ReadingModeType.fromPreference(manga?.readingModeType?.toInt()) } + val readingMode = remember(manga) { ReadingMode.fromPreference(manga?.readingMode?.toInt()) } SettingsChipRow(R.string.pref_category_reading_mode) { - readingModeOptions.map { (stringRes, it) -> + ReadingMode.entries.map { FilterChip( selected = it == readingMode, onClick = { screenModel.onChangeReadingMode(it) }, - label = { Text(stringResource(stringRes)) }, + label = { Text(stringResource(it.stringRes)) }, ) } } - val orientationType = remember(manga) { OrientationType.fromPreference(manga?.orientationType?.toInt()) } + val orientation = remember(manga) { ReaderOrientation.fromPreference(manga?.readerOrientation?.toInt()) } SettingsChipRow(R.string.rotation_type) { - orientationTypeOptions.map { (stringRes, it) -> + ReaderOrientation.entries.map { FilterChip( - selected = it == orientationType, + selected = it == orientation, onClick = { screenModel.onChangeOrientation(it) }, - label = { Text(stringResource(stringRes)) }, + label = { Text(stringResource(it.stringRes)) }, ) } } @@ -277,11 +273,11 @@ private fun ColumnScope.TapZonesItems( if (selected != 5) { SettingsChipRow(R.string.pref_read_with_tapping_inverted) { - tappingInvertModeOptions.map { (stringRes, mode) -> + ReaderPreferences.TappingInvertMode.entries.map { FilterChip( - selected = mode == invertMode, - onClick = { onSelectInvertMode(mode) }, - label = { Text(stringResource(stringRes)) }, + selected = it == invertMode, + onClick = { onSelectInvertMode(it) }, + label = { Text(stringResource(it.titleResId)) }, ) } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt b/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt index d2ee82270..25246c38d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt @@ -12,7 +12,7 @@ import eu.kanade.tachiyomi.data.library.LibraryUpdateJob import eu.kanade.tachiyomi.data.track.TrackerManager import eu.kanade.tachiyomi.network.NetworkPreferences import eu.kanade.tachiyomi.network.PREF_DOH_CLOUDFLARE -import eu.kanade.tachiyomi.ui.reader.setting.OrientationType +import eu.kanade.tachiyomi.ui.reader.setting.ReaderOrientation import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences import eu.kanade.tachiyomi.util.system.DeviceUtil import eu.kanade.tachiyomi.util.system.toast @@ -172,12 +172,12 @@ object Migrations { if (oldVersion < 60) { // Migrate Rotation and Viewer values to default values for viewer_flags val newOrientation = when (prefs.getInt("pref_rotation_type_key", 1)) { - 1 -> OrientationType.FREE.flagValue - 2 -> OrientationType.PORTRAIT.flagValue - 3 -> OrientationType.LANDSCAPE.flagValue - 4 -> OrientationType.LOCKED_PORTRAIT.flagValue - 5 -> OrientationType.LOCKED_LANDSCAPE.flagValue - else -> OrientationType.FREE.flagValue + 1 -> ReaderOrientation.FREE.flagValue + 2 -> ReaderOrientation.PORTRAIT.flagValue + 3 -> ReaderOrientation.LANDSCAPE.flagValue + 4 -> ReaderOrientation.LOCKED_PORTRAIT.flagValue + 5 -> ReaderOrientation.LOCKED_LANDSCAPE.flagValue + else -> ReaderOrientation.FREE.flagValue } // Reading mode flag and prefValue is the same value diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupManga.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupManga.kt index 204c64ad5..1f10d2354 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupManga.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupManga.kt @@ -1,7 +1,7 @@ package eu.kanade.tachiyomi.data.backup.models import eu.kanade.tachiyomi.source.model.UpdateStrategy -import eu.kanade.tachiyomi.ui.reader.setting.ReadingModeType +import eu.kanade.tachiyomi.ui.reader.setting.ReadingMode import kotlinx.serialization.Serializable import kotlinx.serialization.protobuf.ProtoNumber import tachiyomi.data.StringListAndColumnAdapter @@ -134,7 +134,7 @@ data class BackupManga( favorite = manga.favorite, source = manga.source, dateAdded = manga.dateAdded, - viewer = (manga.viewerFlags.toInt() and ReadingModeType.MASK), + viewer = (manga.viewerFlags.toInt() and ReadingMode.MASK), viewer_flags = manga.viewerFlags.toInt(), chapterFlags = manga.chapterFlags.toInt(), updateStrategy = manga.updateStrategy, 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 68d505b29..92709582f 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 @@ -50,11 +50,11 @@ import com.google.android.material.elevation.SurfaceColors import com.google.android.material.transition.platform.MaterialContainerTransform import dev.chrisbanes.insetter.applyInsetter import eu.kanade.domain.base.BasePreferences -import eu.kanade.domain.manga.model.readingModeType +import eu.kanade.domain.manga.model.readingMode import eu.kanade.presentation.reader.BrightnessOverlay import eu.kanade.presentation.reader.ChapterListDialog import eu.kanade.presentation.reader.DisplayRefreshHost -import eu.kanade.presentation.reader.OrientationModeSelectDialog +import eu.kanade.presentation.reader.OrientationSelectDialog import eu.kanade.presentation.reader.PageIndicatorText import eu.kanade.presentation.reader.ReaderPageActionsDialog import eu.kanade.presentation.reader.ReadingModeSelectDialog @@ -76,10 +76,10 @@ import eu.kanade.tachiyomi.ui.reader.loader.HttpPageLoader import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter import eu.kanade.tachiyomi.ui.reader.model.ReaderPage import eu.kanade.tachiyomi.ui.reader.model.ViewerChapters -import eu.kanade.tachiyomi.ui.reader.setting.OrientationType +import eu.kanade.tachiyomi.ui.reader.setting.ReaderOrientation import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences import eu.kanade.tachiyomi.ui.reader.setting.ReaderSettingsScreenModel -import eu.kanade.tachiyomi.ui.reader.setting.ReadingModeType +import eu.kanade.tachiyomi.ui.reader.setting.ReadingMode import eu.kanade.tachiyomi.ui.reader.viewer.ReaderProgressIndicator import eu.kanade.tachiyomi.ui.reader.viewer.pager.PagerConfig import eu.kanade.tachiyomi.ui.reader.viewer.pager.PagerViewer @@ -376,8 +376,8 @@ class ReaderActivity : BaseActivity() { val cropBorderWebtoon by readerPreferences.cropBordersWebtoon().collectAsState() // SY --> val readingMode = viewModel.getMangaReadingMode() - val isPagerType = ReadingModeType.isPagerType(readingMode) - val isWebtoon = ReadingModeType.WEBTOON.flagValue == readingMode + val isPagerType = ReadingMode.isPagerType(readingMode) + val isWebtoon = ReadingMode.WEBTOON.flagValue == readingMode val cropBorderContinuousVertical by readerPreferences.cropBordersContinuousVertical().collectAsState() val cropEnabled = if (isPagerType) { cropBorderPaged @@ -429,14 +429,14 @@ class ReaderActivity : BaseActivity() { moveToPageIndex(it) }, - readingMode = ReadingModeType.fromPreference( + readingMode = ReadingMode.fromPreference( viewModel.getMangaReadingMode(resolveDefault = false), ), onClickReadingMode = viewModel::openReadingModeSelectDialog, - orientationMode = OrientationType.fromPreference( - viewModel.getMangaOrientationType(resolveDefault = false), + orientation = ReaderOrientation.fromPreference( + viewModel.getMangaOrientation(resolveDefault = false), ), - onClickOrientationMode = viewModel::openOrientationModeSelectDialog, + onClickOrientation = viewModel::openOrientationModeSelectDialog, cropEnabled = cropEnabled, onClickCropBorder = { val enabled = viewModel.toggleCropBorders() @@ -525,7 +525,7 @@ class ReaderActivity : BaseActivity() { ) } is ReaderViewModel.Dialog.OrientationModeSelect -> { - OrientationModeSelectDialog( + OrientationSelectDialog( onDismissRequest = onDismissRequest, screenModel = settingsScreenModel, onChange = { stringRes -> @@ -789,15 +789,15 @@ class ReaderActivity : BaseActivity() { */ private fun setManga(manga: Manga) { val prevViewer = viewModel.state.value.viewer - val newViewer = ReadingModeType.toViewer(viewModel.getMangaReadingMode(), this) + val newViewer = ReadingMode.toViewer(viewModel.getMangaReadingMode(), this) if (window.sharedElementEnterTransition is MaterialContainerTransform) { // Wait until transition is complete to avoid crash on API 26 window.sharedElementEnterTransition.doOnEnd { - setOrientation(viewModel.getMangaOrientationType()) + setOrientation(viewModel.getMangaOrientation()) } } else { - setOrientation(viewModel.getMangaOrientationType()) + setOrientation(viewModel.getMangaOrientation()) } // Destroy previous viewer if there was one @@ -817,8 +817,15 @@ class ReaderActivity : BaseActivity() { viewModel.state.value.lastShiftDoubleState?.let { newViewer.config.shiftDoublePage = it } } - val defaultReaderType = manga.defaultReaderType(manga.mangaType(sourceName = sourceManager.get(manga.source)?.name)) - if (readerPreferences.useAutoWebtoon().get() && manga.readingModeType.toInt() == ReadingModeType.DEFAULT.flagValue && defaultReaderType != null && defaultReaderType == ReadingModeType.WEBTOON.flagValue) { + val defaultReaderType = manga.defaultReaderType( + manga.mangaType(sourceName = sourceManager.get(manga.source)?.name) + ) + if ( + readerPreferences.useAutoWebtoon().get() && + manga.readingMode.toInt() == ReadingMode.DEFAULT.flagValue && + defaultReaderType != null && + defaultReaderType == ReadingMode.WEBTOON.flagValue + ) { readingModeToast?.cancel() readingModeToast = toast(resources.getString(R.string.eh_auto_webtoon_snack)) } else if (readerPreferences.showReadingMode().get()) { @@ -863,7 +870,7 @@ class ReaderActivity : BaseActivity() { private fun showReadingModeToast(mode: Int) { try { readingModeToast?.cancel() - readingModeToast = toast(ReadingModeType.fromPreference(mode).stringRes) + readingModeToast = toast(ReadingMode.fromPreference(mode).stringRes) } catch (e: ArrayIndexOutOfBoundsException) { logcat(LogPriority.ERROR) { "Unknown reading mode: $mode" } } @@ -1082,7 +1089,7 @@ class ReaderActivity : BaseActivity() { * Forces the user preferred [orientation] on the activity. */ private fun setOrientation(orientation: Int) { - val newOrientation = OrientationType.fromPreference(orientation) + val newOrientation = ReaderOrientation.fromPreference(orientation) if (newOrientation.flag != requestedOrientation) { requestedOrientation = newOrientation.flag } 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 780b13079..12d1529f8 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 @@ -11,8 +11,8 @@ import androidx.lifecycle.viewModelScope import eu.kanade.domain.base.BasePreferences import eu.kanade.domain.chapter.model.toDbChapter import eu.kanade.domain.manga.interactor.SetMangaViewerFlags -import eu.kanade.domain.manga.model.orientationType -import eu.kanade.domain.manga.model.readingModeType +import eu.kanade.domain.manga.model.readerOrientation +import eu.kanade.domain.manga.model.readingMode import eu.kanade.domain.track.interactor.TrackChapter import eu.kanade.domain.track.service.TrackPreferences import eu.kanade.domain.ui.UiPreferences @@ -34,9 +34,9 @@ import eu.kanade.tachiyomi.ui.reader.model.InsertPage import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter import eu.kanade.tachiyomi.ui.reader.model.ReaderPage import eu.kanade.tachiyomi.ui.reader.model.ViewerChapters -import eu.kanade.tachiyomi.ui.reader.setting.OrientationType +import eu.kanade.tachiyomi.ui.reader.setting.ReaderOrientation import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences -import eu.kanade.tachiyomi.ui.reader.setting.ReadingModeType +import eu.kanade.tachiyomi.ui.reader.setting.ReadingMode import eu.kanade.tachiyomi.ui.reader.viewer.Viewer import eu.kanade.tachiyomi.ui.reader.viewer.pager.PagerViewer import eu.kanade.tachiyomi.ui.reader.viewer.pager.R2LPagerViewer @@ -829,15 +829,15 @@ class ReaderViewModel @JvmOverloads constructor( fun getMangaReadingMode(resolveDefault: Boolean = true): Int { val default = readerPreferences.defaultReadingMode().get() val manga = manga ?: return default - val readingMode = ReadingModeType.fromPreference(manga.readingModeType.toInt()) + val readingMode = ReadingMode.fromPreference(manga.readingMode.toInt()) // SY --> return when { - resolveDefault && readingMode == ReadingModeType.DEFAULT && readerPreferences.useAutoWebtoon().get() -> { + resolveDefault && readingMode == ReadingMode.DEFAULT && readerPreferences.useAutoWebtoon().get() -> { manga.defaultReaderType(manga.mangaType(sourceName = sourceManager.get(manga.source)?.name)) ?: default } - resolveDefault && readingMode == ReadingModeType.DEFAULT -> default - else -> manga.readingModeType.toInt() + resolveDefault && readingMode == ReadingMode.DEFAULT -> default + else -> manga.readingMode.toInt() } // SY <-- } @@ -845,10 +845,10 @@ class ReaderViewModel @JvmOverloads constructor( /** * Updates the viewer position for the open manga. */ - fun setMangaReadingMode(readingModeType: ReadingModeType) { + fun setMangaReadingMode(readingMode: ReadingMode) { val manga = manga ?: return runBlocking(Dispatchers.IO) { - setMangaViewerFlags.awaitSetReadingMode(manga.id, readingModeType.flagValue.toLong()) + setMangaViewerFlags.awaitSetReadingMode(manga.id, readingMode.flagValue.toLong()) val currChapters = state.value.viewerChapters if (currChapters != null) { // Save current page @@ -869,22 +869,22 @@ class ReaderViewModel @JvmOverloads constructor( /** * Returns the orientation type used by this manga or the default one. */ - fun getMangaOrientationType(resolveDefault: Boolean = true): Int { + fun getMangaOrientation(resolveDefault: Boolean = true): Int { val default = readerPreferences.defaultOrientationType().get() - val orientation = OrientationType.fromPreference(manga?.orientationType?.toInt()) + val orientation = ReaderOrientation.fromPreference(manga?.readerOrientation?.toInt()) return when { - resolveDefault && orientation == OrientationType.DEFAULT -> default - else -> manga?.orientationType?.toInt() ?: default + resolveDefault && orientation == ReaderOrientation.DEFAULT -> default + else -> manga?.readerOrientation?.toInt() ?: default } } /** * Updates the orientation type for the open manga. */ - fun setMangaOrientationType(rotationType: OrientationType) { + fun setMangaOrientationType(orientation: ReaderOrientation) { val manga = manga ?: return viewModelScope.launchIO { - setMangaViewerFlags.awaitSetOrientation(manga.id, rotationType.flagValue.toLong()) + setMangaViewerFlags.awaitSetOrientation(manga.id, orientation.flagValue.toLong()) val currChapters = state.value.viewerChapters if (currChapters != null) { // Save current page @@ -897,7 +897,7 @@ class ReaderViewModel @JvmOverloads constructor( viewerChapters = currChapters, ) } - eventChannel.send(Event.SetOrientation(getMangaOrientationType())) + eventChannel.send(Event.SetOrientation(getMangaOrientation())) eventChannel.send(Event.ReloadViewerChapters) } } @@ -906,8 +906,8 @@ class ReaderViewModel @JvmOverloads constructor( // SY --> fun toggleCropBorders(): Boolean { val readingMode = getMangaReadingMode() - val isPagerType = ReadingModeType.isPagerType(readingMode) - val isWebtoon = ReadingModeType.WEBTOON.flagValue == readingMode + val isPagerType = ReadingMode.isPagerType(readingMode) + val isWebtoon = ReadingMode.WEBTOON.flagValue == readingMode return if (isPagerType) { readerPreferences.cropBorders().toggle() } else if (isWebtoon) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/OrientationType.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderOrientation.kt similarity index 91% rename from app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/OrientationType.kt rename to app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderOrientation.kt index c2edb39e9..c1d2e9b2d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/OrientationType.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderOrientation.kt @@ -5,7 +5,7 @@ import androidx.annotation.DrawableRes import androidx.annotation.StringRes import eu.kanade.tachiyomi.R -enum class OrientationType( +enum class ReaderOrientation( val flag: Int, @StringRes val stringRes: Int, @DrawableRes val iconRes: Int, @@ -58,6 +58,6 @@ enum class OrientationType( companion object { const val MASK = 0x00000038 - fun fromPreference(preference: Int?): OrientationType = entries.find { it.flagValue == preference } ?: DEFAULT + fun fromPreference(preference: Int?): ReaderOrientation = entries.find { it.flagValue == preference } ?: DEFAULT } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderPreferences.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderPreferences.kt index ae1bde147..0fb0ace4c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderPreferences.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderPreferences.kt @@ -37,12 +37,12 @@ class ReaderPreferences( fun defaultReadingMode() = preferenceStore.getInt( "pref_default_reading_mode_key", - ReadingModeType.RIGHT_TO_LEFT.flagValue, + ReadingMode.RIGHT_TO_LEFT.flagValue, ) fun defaultOrientationType() = preferenceStore.getInt( "pref_default_orientation_type_key", - OrientationType.FREE.flagValue, + ReaderOrientation.FREE.flagValue, ) fun webtoonDoubleTapZoomEnabled() = preferenceStore.getBoolean("pref_enable_double_tap_zoom_webtoon", true) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderSettingsScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderSettingsScreenModel.kt index 5014ba204..5f107c388 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderSettingsScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderSettingsScreenModel.kt @@ -14,8 +14,8 @@ import uy.kohesive.injekt.api.get class ReaderSettingsScreenModel( readerState: StateFlow, val hasDisplayCutout: Boolean, - val onChangeReadingMode: (ReadingModeType) -> Unit, - val onChangeOrientation: (OrientationType) -> Unit, + val onChangeReadingMode: (ReadingMode) -> Unit, + val onChangeOrientation: (ReaderOrientation) -> Unit, val preferences: ReaderPreferences = Injekt.get(), ) : ScreenModel { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReadingModeType.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReadingMode.kt similarity index 50% rename from app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReadingModeType.kt rename to app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReadingMode.kt index 4d5974ee5..d042795eb 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReadingModeType.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReadingMode.kt @@ -10,27 +10,59 @@ import eu.kanade.tachiyomi.ui.reader.viewer.pager.R2LPagerViewer import eu.kanade.tachiyomi.ui.reader.viewer.pager.VerticalPagerViewer import eu.kanade.tachiyomi.ui.reader.viewer.webtoon.WebtoonViewer -enum class ReadingModeType( +enum class ReadingMode( @StringRes val stringRes: Int, @DrawableRes val iconRes: Int, val flagValue: Int, + val direction: Direction? = null, + val type: ViewerType? = null, ) { DEFAULT(R.string.label_default, R.drawable.ic_reader_default_24dp, 0x00000000), - LEFT_TO_RIGHT(R.string.left_to_right_viewer, R.drawable.ic_reader_ltr_24dp, 0x00000001), - RIGHT_TO_LEFT(R.string.right_to_left_viewer, R.drawable.ic_reader_rtl_24dp, 0x00000002), - VERTICAL(R.string.vertical_viewer, R.drawable.ic_reader_vertical_24dp, 0x00000003), - WEBTOON(R.string.webtoon_viewer, R.drawable.ic_reader_webtoon_24dp, 0x00000004), - CONTINUOUS_VERTICAL(R.string.vertical_plus_viewer, R.drawable.ic_reader_continuous_vertical_24dp, 0x00000005), + LEFT_TO_RIGHT( + R.string.left_to_right_viewer, + R.drawable.ic_reader_ltr_24dp, + 0x00000001, + Direction.Horizontal, + ViewerType.Pager, + ), + RIGHT_TO_LEFT( + R.string.right_to_left_viewer, + R.drawable.ic_reader_rtl_24dp, + 0x00000002, + Direction.Horizontal, + ViewerType.Pager, + ), + VERTICAL( + R.string.vertical_viewer, + R.drawable.ic_reader_vertical_24dp, + 0x00000003, + Direction.Vertical, + ViewerType.Pager, + ), + WEBTOON( + R.string.webtoon_viewer, + R.drawable.ic_reader_webtoon_24dp, + 0x00000004, + Direction.Vertical, + ViewerType.Webtoon, + ), + CONTINUOUS_VERTICAL( + R.string.vertical_plus_viewer, + R.drawable.ic_reader_continuous_vertical_24dp, + 0x00000005, + Direction.Vertical, + ViewerType.Webtoon, + ), ; companion object { const val MASK = 0x00000007 - fun fromPreference(preference: Int?): ReadingModeType = entries.find { it.flagValue == preference } ?: DEFAULT + fun fromPreference(preference: Int?): ReadingMode = entries.find { it.flagValue == preference } ?: DEFAULT fun isPagerType(preference: Int): Boolean { val mode = fromPreference(preference) - return mode == LEFT_TO_RIGHT || mode == RIGHT_TO_LEFT || mode == VERTICAL + return mode.type is ViewerType.Pager } fun toViewer(preference: Int?, activity: ReaderActivity): Viewer { @@ -44,4 +76,14 @@ enum class ReadingModeType( } } } + + sealed interface Direction { + data object Horizontal : Direction + data object Vertical : Direction + } + + sealed interface ViewerType { + data object Pager : ViewerType + data object Webtoon : ViewerType + } } diff --git a/app/src/main/java/exh/EXHMigrations.kt b/app/src/main/java/exh/EXHMigrations.kt index 2a5655455..df3cfd6f7 100644 --- a/app/src/main/java/exh/EXHMigrations.kt +++ b/app/src/main/java/exh/EXHMigrations.kt @@ -17,7 +17,7 @@ import eu.kanade.tachiyomi.network.NetworkPreferences import eu.kanade.tachiyomi.network.PREF_DOH_CLOUDFLARE import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.online.all.NHentai -import eu.kanade.tachiyomi.ui.reader.setting.OrientationType +import eu.kanade.tachiyomi.ui.reader.setting.ReaderOrientation import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences import eu.kanade.tachiyomi.util.system.DeviceUtil import eu.kanade.tachiyomi.util.system.workManager @@ -267,12 +267,12 @@ object EXHMigrations { if (oldVersion under 17) { // Migrate Rotation and Viewer values to default values for viewer_flags val newOrientation = when (prefs.getInt("pref_rotation_type_key", 1)) { - 1 -> OrientationType.FREE.flagValue - 2 -> OrientationType.PORTRAIT.flagValue - 3 -> OrientationType.LANDSCAPE.flagValue - 4 -> OrientationType.LOCKED_PORTRAIT.flagValue - 5 -> OrientationType.LOCKED_LANDSCAPE.flagValue - else -> OrientationType.FREE.flagValue + 1 -> ReaderOrientation.FREE.flagValue + 2 -> ReaderOrientation.PORTRAIT.flagValue + 3 -> ReaderOrientation.LANDSCAPE.flagValue + 4 -> ReaderOrientation.LOCKED_PORTRAIT.flagValue + 5 -> ReaderOrientation.LOCKED_LANDSCAPE.flagValue + else -> ReaderOrientation.FREE.flagValue } // Reading mode flag and prefValue is the same value diff --git a/app/src/main/java/exh/util/MangaType.kt b/app/src/main/java/exh/util/MangaType.kt index 1f5d4611f..73eaf3974 100644 --- a/app/src/main/java/exh/util/MangaType.kt +++ b/app/src/main/java/exh/util/MangaType.kt @@ -2,7 +2,7 @@ package exh.util import android.content.Context import eu.kanade.tachiyomi.R -import eu.kanade.tachiyomi.ui.reader.setting.ReadingModeType +import eu.kanade.tachiyomi.ui.reader.setting.ReadingMode import tachiyomi.domain.manga.model.Manga import tachiyomi.domain.source.service.SourceManager import uy.kohesive.injekt.Injekt @@ -54,7 +54,7 @@ fun Manga.mangaType(sourceName: String? = Injekt.get().get(source */ fun Manga.defaultReaderType(type: MangaType = mangaType()): Int? { return if (type == MangaType.TYPE_MANHWA || type == MangaType.TYPE_WEBTOON) { - ReadingModeType.WEBTOON.flagValue + ReadingMode.WEBTOON.flagValue } else { null }