diff --git a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/settings/SettingsModels.kt b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/settings/SettingsModels.kt index 4b931d528..bc5108bc1 100644 --- a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/settings/SettingsModels.kt +++ b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/settings/SettingsModels.kt @@ -1,6 +1,7 @@ package com.nuvio.app.features.settings import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.rounded.AccountCircle import androidx.compose.material.icons.rounded.Settings import androidx.compose.ui.graphics.vector.ImageVector @@ -8,6 +9,7 @@ internal enum class SettingsCategory( val label: String, val icon: ImageVector, ) { + Account("Account", Icons.Rounded.AccountCircle), General("General", Icons.Rounded.Settings), } diff --git a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/settings/SettingsRootPage.kt b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/settings/SettingsRootPage.kt index 73acfc317..2deb25dbe 100644 --- a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/settings/SettingsRootPage.kt +++ b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/settings/SettingsRootPage.kt @@ -17,70 +17,76 @@ internal fun LazyListScope.settingsRootContent( onIntegrationsClick: () -> Unit, onAccountClick: () -> Unit, onSwitchProfileClick: (() -> Unit)? = null, + showAccountSection: Boolean = true, + showGeneralSection: Boolean = true, ) { - item { - SettingsSection( - title = "ACCOUNT", - isTablet = isTablet, - ) { - SettingsGroup(isTablet = isTablet) { - if (onSwitchProfileClick != null) { + if (showAccountSection) { + item { + SettingsSection( + title = "ACCOUNT", + isTablet = isTablet, + ) { + SettingsGroup(isTablet = isTablet) { + if (onSwitchProfileClick != null) { + SettingsNavigationRow( + title = "Switch Profile", + description = "Change to a different profile.", + icon = Icons.Rounded.People, + isTablet = isTablet, + onClick = onSwitchProfileClick, + ) + SettingsGroupDivider(isTablet = isTablet) + } SettingsNavigationRow( - title = "Switch Profile", - description = "Change to a different profile.", - icon = Icons.Rounded.People, + title = "Account", + description = "Manage your account, sign out, or delete.", + icon = Icons.Rounded.AccountCircle, isTablet = isTablet, - onClick = onSwitchProfileClick, + onClick = onAccountClick, ) - SettingsGroupDivider(isTablet = isTablet) } - SettingsNavigationRow( - title = "Account", - description = "Manage your account, sign out, or delete.", - icon = Icons.Rounded.AccountCircle, - isTablet = isTablet, - onClick = onAccountClick, - ) } } } - item { - SettingsSection( - title = "GENERAL", - isTablet = isTablet, - ) { - SettingsGroup(isTablet = isTablet) { - SettingsNavigationRow( - title = "Playback", - description = "Control player behavior and viewing defaults.", - icon = Icons.Rounded.PlayArrow, - isTablet = isTablet, - onClick = onPlaybackClick, - ) - SettingsGroupDivider(isTablet = isTablet) - SettingsNavigationRow( - title = "Appearance", - description = "Tune home presentation and visual preferences.", - icon = Icons.Rounded.Palette, - isTablet = isTablet, - onClick = onAppearanceClick, - ) - SettingsGroupDivider(isTablet = isTablet) - SettingsNavigationRow( - title = "Content & Discovery", - description = "Manage addons and discovery sources.", - icon = Icons.Rounded.Extension, - isTablet = isTablet, - onClick = onContentDiscoveryClick, - ) - SettingsGroupDivider(isTablet = isTablet) - SettingsNavigationRow( - title = "Integrations", - description = "Connect TMDB, Trakt, and MDBList services.", - icon = Icons.Rounded.Link, - isTablet = isTablet, - onClick = onIntegrationsClick, - ) + if (showGeneralSection) { + item { + SettingsSection( + title = "GENERAL", + isTablet = isTablet, + ) { + SettingsGroup(isTablet = isTablet) { + SettingsNavigationRow( + title = "Playback", + description = "Control player behavior and viewing defaults.", + icon = Icons.Rounded.PlayArrow, + isTablet = isTablet, + onClick = onPlaybackClick, + ) + SettingsGroupDivider(isTablet = isTablet) + SettingsNavigationRow( + title = "Appearance", + description = "Tune home presentation and visual preferences.", + icon = Icons.Rounded.Palette, + isTablet = isTablet, + onClick = onAppearanceClick, + ) + SettingsGroupDivider(isTablet = isTablet) + SettingsNavigationRow( + title = "Content & Discovery", + description = "Manage addons and discovery sources.", + icon = Icons.Rounded.Extension, + isTablet = isTablet, + onClick = onContentDiscoveryClick, + ) + SettingsGroupDivider(isTablet = isTablet) + SettingsNavigationRow( + title = "Integrations", + description = "Connect TMDB, Trakt, and MDBList services.", + icon = Icons.Rounded.Link, + isTablet = isTablet, + onClick = onIntegrationsClick, + ) + } } } } diff --git a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/settings/SettingsScreen.kt b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/settings/SettingsScreen.kt index 666637b11..7c187398e 100644 --- a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/settings/SettingsScreen.kt +++ b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/settings/SettingsScreen.kt @@ -300,12 +300,19 @@ private fun TabletSettingsScreen( HorizontalDivider(color = MaterialTheme.colorScheme.outlineVariant) Spacer(modifier = Modifier.height(10.dp)) - SettingsSidebarItem( - label = activeCategory.label, - icon = activeCategory.icon, - selected = true, - onClick = { selectedCategory = activeCategory.name }, - ) + SettingsCategory.entries.forEach { category -> + SettingsSidebarItem( + label = category.label, + icon = category.icon, + selected = category == activeCategory, + onClick = { + selectedCategory = category.name + if (page != SettingsPage.Root) { + onPageChange(SettingsPage.Root) + } + }, + ) + } } } @@ -336,6 +343,8 @@ private fun TabletSettingsScreen( onIntegrationsClick = { onPageChange(SettingsPage.Integrations) }, onAccountClick = onAccountClick, onSwitchProfileClick = onSwitchProfile, + showAccountSection = activeCategory == SettingsCategory.Account, + showGeneralSection = activeCategory == SettingsCategory.General, ) SettingsPage.Playback -> playbackSettingsContent( isTablet = true,