|
|
@ -10,7 +10,6 @@ import androidx.compose.runtime.remember
|
|
|
|
import androidx.compose.ui.res.stringResource
|
|
|
|
import androidx.compose.ui.res.stringResource
|
|
|
|
import eu.kanade.domain.manga.model.orientationType
|
|
|
|
import eu.kanade.domain.manga.model.orientationType
|
|
|
|
import eu.kanade.domain.manga.model.readingModeType
|
|
|
|
import eu.kanade.domain.manga.model.readingModeType
|
|
|
|
import eu.kanade.presentation.util.collectAsState
|
|
|
|
|
|
|
|
import eu.kanade.tachiyomi.R
|
|
|
|
import eu.kanade.tachiyomi.R
|
|
|
|
import eu.kanade.tachiyomi.ui.reader.setting.OrientationType
|
|
|
|
import eu.kanade.tachiyomi.ui.reader.setting.OrientationType
|
|
|
|
import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences
|
|
|
|
import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences
|
|
|
@ -22,6 +21,7 @@ import tachiyomi.presentation.core.components.CheckboxItem
|
|
|
|
import tachiyomi.presentation.core.components.HeadingItem
|
|
|
|
import tachiyomi.presentation.core.components.HeadingItem
|
|
|
|
import tachiyomi.presentation.core.components.SettingsChipRow
|
|
|
|
import tachiyomi.presentation.core.components.SettingsChipRow
|
|
|
|
import tachiyomi.presentation.core.components.SliderItem
|
|
|
|
import tachiyomi.presentation.core.components.SliderItem
|
|
|
|
|
|
|
|
import tachiyomi.presentation.core.util.collectAsState
|
|
|
|
import java.text.NumberFormat
|
|
|
|
import java.text.NumberFormat
|
|
|
|
|
|
|
|
|
|
|
|
private val readingModeOptions = ReadingModeType.entries.map { it.stringRes to it }
|
|
|
|
private val readingModeOptions = ReadingModeType.entries.map { it.stringRes to it }
|
|
|
@ -98,70 +98,44 @@ private fun ColumnScope.PagerViewerSettings(screenModel: ReaderSettingsScreenMod
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
val cropBorders by screenModel.preferences.cropBorders().collectAsState()
|
|
|
|
|
|
|
|
CheckboxItem(
|
|
|
|
CheckboxItem(
|
|
|
|
label = stringResource(R.string.pref_crop_borders),
|
|
|
|
label = stringResource(R.string.pref_crop_borders),
|
|
|
|
checked = cropBorders,
|
|
|
|
pref = screenModel.preferences.cropBorders(),
|
|
|
|
onClick = {
|
|
|
|
|
|
|
|
screenModel.togglePreference(ReaderPreferences::cropBorders)
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
val landscapeZoom by screenModel.preferences.landscapeZoom().collectAsState()
|
|
|
|
|
|
|
|
CheckboxItem(
|
|
|
|
CheckboxItem(
|
|
|
|
label = stringResource(R.string.pref_landscape_zoom),
|
|
|
|
label = stringResource(R.string.pref_landscape_zoom),
|
|
|
|
checked = landscapeZoom,
|
|
|
|
pref = screenModel.preferences.landscapeZoom(),
|
|
|
|
onClick = {
|
|
|
|
|
|
|
|
screenModel.togglePreference(ReaderPreferences::landscapeZoom)
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
val navigateToPan by screenModel.preferences.navigateToPan().collectAsState()
|
|
|
|
|
|
|
|
CheckboxItem(
|
|
|
|
CheckboxItem(
|
|
|
|
label = stringResource(R.string.pref_navigate_pan),
|
|
|
|
label = stringResource(R.string.pref_navigate_pan),
|
|
|
|
checked = navigateToPan,
|
|
|
|
pref = screenModel.preferences.navigateToPan(),
|
|
|
|
onClick = {
|
|
|
|
|
|
|
|
screenModel.togglePreference(ReaderPreferences::navigateToPan)
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
val dualPageSplitPaged by screenModel.preferences.dualPageSplitPaged().collectAsState()
|
|
|
|
val dualPageSplitPaged by screenModel.preferences.dualPageSplitPaged().collectAsState()
|
|
|
|
CheckboxItem(
|
|
|
|
CheckboxItem(
|
|
|
|
label = stringResource(R.string.pref_dual_page_split),
|
|
|
|
label = stringResource(R.string.pref_dual_page_split),
|
|
|
|
checked = dualPageSplitPaged,
|
|
|
|
pref = screenModel.preferences.dualPageSplitPaged(),
|
|
|
|
onClick = {
|
|
|
|
|
|
|
|
screenModel.togglePreference(ReaderPreferences::dualPageSplitPaged)
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
if (dualPageSplitPaged) {
|
|
|
|
if (dualPageSplitPaged) {
|
|
|
|
val dualPageInvertPaged by screenModel.preferences.dualPageInvertPaged().collectAsState()
|
|
|
|
|
|
|
|
CheckboxItem(
|
|
|
|
CheckboxItem(
|
|
|
|
label = stringResource(R.string.pref_dual_page_invert),
|
|
|
|
label = stringResource(R.string.pref_dual_page_invert),
|
|
|
|
checked = dualPageInvertPaged,
|
|
|
|
pref = screenModel.preferences.dualPageInvertPaged(),
|
|
|
|
onClick = {
|
|
|
|
|
|
|
|
screenModel.togglePreference(ReaderPreferences::dualPageInvertPaged)
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
)
|
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
val dualPageRotateToFit by screenModel.preferences.dualPageRotateToFit().collectAsState()
|
|
|
|
val dualPageRotateToFit by screenModel.preferences.dualPageRotateToFit().collectAsState()
|
|
|
|
CheckboxItem(
|
|
|
|
CheckboxItem(
|
|
|
|
label = stringResource(R.string.pref_page_rotate),
|
|
|
|
label = stringResource(R.string.pref_page_rotate),
|
|
|
|
checked = dualPageRotateToFit,
|
|
|
|
pref = screenModel.preferences.dualPageRotateToFit(),
|
|
|
|
onClick = {
|
|
|
|
|
|
|
|
screenModel.togglePreference(ReaderPreferences::dualPageRotateToFit)
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
if (dualPageRotateToFit) {
|
|
|
|
if (dualPageRotateToFit) {
|
|
|
|
val dualPageRotateToFitInvert by screenModel.preferences.dualPageRotateToFitInvert().collectAsState()
|
|
|
|
|
|
|
|
CheckboxItem(
|
|
|
|
CheckboxItem(
|
|
|
|
label = stringResource(R.string.pref_page_rotate_invert),
|
|
|
|
label = stringResource(R.string.pref_page_rotate_invert),
|
|
|
|
checked = dualPageRotateToFitInvert,
|
|
|
|
pref = screenModel.preferences.dualPageRotateToFitInvert(),
|
|
|
|
onClick = {
|
|
|
|
|
|
|
|
screenModel.togglePreference(ReaderPreferences::dualPageRotateToFitInvert)
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
)
|
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -193,55 +167,34 @@ private fun ColumnScope.WebtoonViewerSettings(screenModel: ReaderSettingsScreenM
|
|
|
|
},
|
|
|
|
},
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
val cropBordersWebtoon by screenModel.preferences.cropBordersWebtoon().collectAsState()
|
|
|
|
|
|
|
|
CheckboxItem(
|
|
|
|
CheckboxItem(
|
|
|
|
label = stringResource(R.string.pref_crop_borders),
|
|
|
|
label = stringResource(R.string.pref_crop_borders),
|
|
|
|
checked = cropBordersWebtoon,
|
|
|
|
pref = screenModel.preferences.cropBordersWebtoon(),
|
|
|
|
onClick = {
|
|
|
|
|
|
|
|
screenModel.togglePreference(ReaderPreferences::cropBordersWebtoon)
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
val dualPageSplitWebtoon by screenModel.preferences.dualPageSplitWebtoon().collectAsState()
|
|
|
|
val dualPageSplitWebtoon by screenModel.preferences.dualPageSplitWebtoon().collectAsState()
|
|
|
|
CheckboxItem(
|
|
|
|
CheckboxItem(
|
|
|
|
label = stringResource(R.string.pref_dual_page_split),
|
|
|
|
label = stringResource(R.string.pref_dual_page_split),
|
|
|
|
checked = dualPageSplitWebtoon,
|
|
|
|
pref = screenModel.preferences.dualPageSplitWebtoon(),
|
|
|
|
onClick = {
|
|
|
|
|
|
|
|
screenModel.togglePreference(ReaderPreferences::dualPageSplitWebtoon)
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
if (dualPageSplitWebtoon) {
|
|
|
|
if (dualPageSplitWebtoon) {
|
|
|
|
val dualPageInvertWebtoon by screenModel.preferences.dualPageInvertWebtoon()
|
|
|
|
|
|
|
|
.collectAsState()
|
|
|
|
|
|
|
|
CheckboxItem(
|
|
|
|
CheckboxItem(
|
|
|
|
label = stringResource(R.string.pref_dual_page_invert),
|
|
|
|
label = stringResource(R.string.pref_dual_page_invert),
|
|
|
|
checked = dualPageInvertWebtoon,
|
|
|
|
pref = screenModel.preferences.dualPageInvertWebtoon(),
|
|
|
|
onClick = {
|
|
|
|
|
|
|
|
screenModel.togglePreference(ReaderPreferences::dualPageInvertWebtoon)
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
)
|
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (!isReleaseBuildType) {
|
|
|
|
if (!isReleaseBuildType) {
|
|
|
|
val longStripSplitWebtoon by screenModel.preferences.longStripSplitWebtoon()
|
|
|
|
|
|
|
|
.collectAsState()
|
|
|
|
|
|
|
|
CheckboxItem(
|
|
|
|
CheckboxItem(
|
|
|
|
label = stringResource(R.string.pref_long_strip_split),
|
|
|
|
label = stringResource(R.string.pref_long_strip_split),
|
|
|
|
checked = longStripSplitWebtoon,
|
|
|
|
pref = screenModel.preferences.longStripSplitWebtoon(),
|
|
|
|
onClick = {
|
|
|
|
|
|
|
|
screenModel.togglePreference(ReaderPreferences::longStripSplitWebtoon)
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
)
|
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
val webtoonDoubleTapZoomEnabled by screenModel.preferences.webtoonDoubleTapZoomEnabled().collectAsState()
|
|
|
|
|
|
|
|
CheckboxItem(
|
|
|
|
CheckboxItem(
|
|
|
|
label = stringResource(R.string.pref_double_tap_zoom),
|
|
|
|
label = stringResource(R.string.pref_double_tap_zoom),
|
|
|
|
checked = webtoonDoubleTapZoomEnabled,
|
|
|
|
pref = screenModel.preferences.webtoonDoubleTapZoomEnabled(),
|
|
|
|
onClick = {
|
|
|
|
|
|
|
|
screenModel.togglePreference(ReaderPreferences::webtoonDoubleTapZoomEnabled)
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
)
|
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|