|
|
@ -15,6 +15,7 @@ import cafe.adriel.voyager.navigator.currentOrThrow
|
|
|
|
import eu.kanade.presentation.more.settings.screen.SettingsAppearanceScreen
|
|
|
|
import eu.kanade.presentation.more.settings.screen.SettingsAppearanceScreen
|
|
|
|
import eu.kanade.presentation.more.settings.screen.SettingsDataScreen
|
|
|
|
import eu.kanade.presentation.more.settings.screen.SettingsDataScreen
|
|
|
|
import eu.kanade.presentation.more.settings.screen.SettingsMainScreen
|
|
|
|
import eu.kanade.presentation.more.settings.screen.SettingsMainScreen
|
|
|
|
|
|
|
|
import eu.kanade.presentation.more.settings.screen.SettingsTrackingScreen
|
|
|
|
import eu.kanade.presentation.more.settings.screen.about.AboutScreen
|
|
|
|
import eu.kanade.presentation.more.settings.screen.about.AboutScreen
|
|
|
|
import eu.kanade.presentation.util.DefaultNavigatorScreenTransition
|
|
|
|
import eu.kanade.presentation.util.DefaultNavigatorScreenTransition
|
|
|
|
import eu.kanade.presentation.util.LocalBackPress
|
|
|
|
import eu.kanade.presentation.util.LocalBackPress
|
|
|
@ -22,9 +23,8 @@ import eu.kanade.presentation.util.Screen
|
|
|
|
import eu.kanade.presentation.util.isTabletUi
|
|
|
|
import eu.kanade.presentation.util.isTabletUi
|
|
|
|
import tachiyomi.presentation.core.components.TwoPanelBox
|
|
|
|
import tachiyomi.presentation.core.components.TwoPanelBox
|
|
|
|
|
|
|
|
|
|
|
|
class SettingsScreen private constructor(
|
|
|
|
class SettingsScreen(
|
|
|
|
val toDataAndStorage: Boolean,
|
|
|
|
private val destination: Destination = Destination.Main,
|
|
|
|
val toAbout: Boolean,
|
|
|
|
|
|
|
|
) : Screen() {
|
|
|
|
) : Screen() {
|
|
|
|
|
|
|
|
|
|
|
|
@Composable
|
|
|
|
@Composable
|
|
|
@ -32,12 +32,11 @@ class SettingsScreen private constructor(
|
|
|
|
val parentNavigator = LocalNavigator.currentOrThrow
|
|
|
|
val parentNavigator = LocalNavigator.currentOrThrow
|
|
|
|
if (!isTabletUi()) {
|
|
|
|
if (!isTabletUi()) {
|
|
|
|
Navigator(
|
|
|
|
Navigator(
|
|
|
|
screen = if (toDataAndStorage) {
|
|
|
|
screen = when (destination) {
|
|
|
|
SettingsDataScreen
|
|
|
|
Destination.Main -> SettingsMainScreen
|
|
|
|
} else if (toAbout) {
|
|
|
|
Destination.About -> AboutScreen
|
|
|
|
AboutScreen
|
|
|
|
Destination.DataAndStorage -> SettingsDataScreen
|
|
|
|
} else {
|
|
|
|
Destination.Tracking -> SettingsTrackingScreen
|
|
|
|
SettingsMainScreen
|
|
|
|
|
|
|
|
},
|
|
|
|
},
|
|
|
|
content = {
|
|
|
|
content = {
|
|
|
|
val pop: () -> Unit = {
|
|
|
|
val pop: () -> Unit = {
|
|
|
@ -54,12 +53,11 @@ class SettingsScreen private constructor(
|
|
|
|
)
|
|
|
|
)
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
Navigator(
|
|
|
|
Navigator(
|
|
|
|
screen = if (toDataAndStorage) {
|
|
|
|
screen = when (destination) {
|
|
|
|
SettingsDataScreen
|
|
|
|
Destination.Main -> SettingsAppearanceScreen
|
|
|
|
} else if (toAbout) {
|
|
|
|
Destination.About -> AboutScreen
|
|
|
|
AboutScreen
|
|
|
|
Destination.DataAndStorage -> SettingsDataScreen
|
|
|
|
} else {
|
|
|
|
Destination.Tracking -> SettingsTrackingScreen
|
|
|
|
SettingsAppearanceScreen
|
|
|
|
|
|
|
|
},
|
|
|
|
},
|
|
|
|
) {
|
|
|
|
) {
|
|
|
|
val insets = WindowInsets.systemBars.only(WindowInsetsSides.Horizontal)
|
|
|
|
val insets = WindowInsets.systemBars.only(WindowInsetsSides.Horizontal)
|
|
|
@ -78,11 +76,10 @@ class SettingsScreen private constructor(
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
companion object {
|
|
|
|
sealed interface Destination {
|
|
|
|
fun toMainScreen() = SettingsScreen(toDataAndStorage = false, toAbout = false)
|
|
|
|
data object Main : Destination
|
|
|
|
|
|
|
|
data object About : Destination
|
|
|
|
fun toDataAndStorageScreen() = SettingsScreen(toDataAndStorage = true, toAbout = false)
|
|
|
|
data object DataAndStorage : Destination
|
|
|
|
|
|
|
|
data object Tracking : Destination
|
|
|
|
fun toAboutScreen() = SettingsScreen(toDataAndStorage = false, toAbout = true)
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|