From cd399ea82fde7280e808b2f75b63ea9d2d60776c Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 8 Sep 2026 18:45:28 +0000 Subject: [PATCH] Swap Settings and Manage in navigation Settings moves onto the bottom navigation bar in place of Manage, and the home screen's top-right icon now opens Manage. A Manage link is added as the first item in the Settings screen so it stays reachable from there too. Home stays highlighted on the bottom bar while Manage is open, mirroring the previous relationship between Home and Settings. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01DCYXJekQkV1DcZLtAcmnyf --- .../java/com/mapgie/goflo/MainActivity.kt | 15 +++++----- .../goflo/ui/screens/home/HomeScreen.kt | 8 ++--- .../ui/screens/settings/SettingsScreen.kt | 29 ++++++++++++++----- .../unreleased/settings-manage-nav-swap.json | 8 +++++ 4 files changed, 41 insertions(+), 19 deletions(-) create mode 100644 changelog/unreleased/settings-manage-nav-swap.json diff --git a/app/src/main/java/com/mapgie/goflo/MainActivity.kt b/app/src/main/java/com/mapgie/goflo/MainActivity.kt index dcf83f2..ff1f9c5 100644 --- a/app/src/main/java/com/mapgie/goflo/MainActivity.kt +++ b/app/src/main/java/com/mapgie/goflo/MainActivity.kt @@ -15,7 +15,7 @@ import androidx.compose.material.icons.filled.BarChart import androidx.compose.material.icons.filled.Dashboard import androidx.compose.material.icons.filled.DateRange import androidx.compose.material.icons.filled.Home -import androidx.compose.material.icons.outlined.Tune +import androidx.compose.material.icons.filled.Settings import android.graphics.Color as AndroidColor import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.Icon @@ -238,7 +238,7 @@ private fun MainNavHost(app: GoFloApplication, currentTheme: AppTheme, pendingCa NavigationBar { NavigationBarItem( colors = navItemColors, - selected = currentRoute == Screen.Home.route || currentRoute == Screen.Settings.route, + selected = currentRoute == Screen.Home.route || currentRoute == Screen.Manage.route, onClick = { navController.navigate(Screen.Home.route) { popUpTo(navController.graph.findStartDestination().id) { saveState = true } launchSingleTop = true; restoreState = true @@ -280,13 +280,13 @@ private fun MainNavHost(app: GoFloApplication, currentTheme: AppTheme, pendingCa ) NavigationBarItem( colors = navItemColors, - selected = currentRoute == Screen.Manage.route, - onClick = { navController.navigate(Screen.Manage.route) { + selected = currentRoute == Screen.Settings.route, + onClick = { navController.navigate(Screen.Settings.route) { popUpTo(navController.graph.findStartDestination().id) { saveState = true } launchSingleTop = true; restoreState = true } }, - icon = { Icon(Icons.Outlined.Tune, contentDescription = "Manage") }, - label = { Text("Manage") } + icon = { Icon(Icons.Default.Settings, contentDescription = "Settings") }, + label = { Text("Settings") } ) } } @@ -372,7 +372,8 @@ private fun MainNavHost(app: GoFloApplication, currentTheme: AppTheme, pendingCa }, onNavigateToLicenses = { navController.navigate(Screen.Licenses.route) }, onNavigateToPrivacy = { navController.navigate(Screen.Privacy.route) }, - onNavigateToManageCategories = { navController.navigate(Screen.ManageCategories.route) } + onNavigateToManageCategories = { navController.navigate(Screen.ManageCategories.route) }, + onNavigateToManage = { navController.navigate(Screen.Manage.route) } ) } diff --git a/app/src/main/java/com/mapgie/goflo/ui/screens/home/HomeScreen.kt b/app/src/main/java/com/mapgie/goflo/ui/screens/home/HomeScreen.kt index 2c16f6e..814ba99 100644 --- a/app/src/main/java/com/mapgie/goflo/ui/screens/home/HomeScreen.kt +++ b/app/src/main/java/com/mapgie/goflo/ui/screens/home/HomeScreen.kt @@ -27,7 +27,7 @@ import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.filled.Close import androidx.compose.material.icons.filled.DateRange import androidx.compose.material.icons.outlined.HelpOutline -import androidx.compose.material.icons.filled.Settings +import androidx.compose.material.icons.outlined.Tune import androidx.compose.material3.AlertDialog import androidx.compose.material3.IconButton import androidx.compose.material3.Card @@ -192,10 +192,10 @@ fun HomeScreen( } }, actions = { - IconButton(onClick = { onNavigate(Screen.Settings.route) }) { + IconButton(onClick = { onNavigate(Screen.Manage.route) }) { Icon( - imageVector = Icons.Default.Settings, - contentDescription = "Settings", + imageVector = Icons.Outlined.Tune, + contentDescription = "Manage", tint = MaterialTheme.colorScheme.onPrimaryContainer ) } diff --git a/app/src/main/java/com/mapgie/goflo/ui/screens/settings/SettingsScreen.kt b/app/src/main/java/com/mapgie/goflo/ui/screens/settings/SettingsScreen.kt index 335e198..83ec78c 100644 --- a/app/src/main/java/com/mapgie/goflo/ui/screens/settings/SettingsScreen.kt +++ b/app/src/main/java/com/mapgie/goflo/ui/screens/settings/SettingsScreen.kt @@ -312,7 +312,8 @@ fun SettingsScreen( onNavigateToPinSetup: (changing: Boolean) -> Unit, onNavigateToLicenses: () -> Unit, onNavigateToPrivacy: () -> Unit, - onNavigateToManageCategories: () -> Unit = {} + onNavigateToManageCategories: () -> Unit = {}, + onNavigateToManage: () -> Unit = {} ) { val context = LocalContext.current val prefs by viewModel.prefs.collectAsState() @@ -607,13 +608,14 @@ fun SettingsScreen( when (currentSubScreen) { SettingsSubScreen.NONE -> SettingsMainList( - security = security, - currentTheme = currentTheme, - scrollState = mainListScrollState, - onBack = onBack, - onNavigateTo = { currentSubScreen = it }, - onOpenDiscord = { openUrl(context, "https://discord.gg/xphnQCZeYq") }, - onOpenSupport = { openUrl(context, "https://github.com/sponsors/mapgie") } + security = security, + currentTheme = currentTheme, + scrollState = mainListScrollState, + onBack = onBack, + onNavigateTo = { currentSubScreen = it }, + onNavigateToManage = onNavigateToManage, + onOpenDiscord = { openUrl(context, "https://discord.gg/xphnQCZeYq") }, + onOpenSupport = { openUrl(context, "https://github.com/sponsors/mapgie") } ) SettingsSubScreen.CYCLE -> CycleSubScreen( prefs = prefs, @@ -690,6 +692,7 @@ private fun SettingsMainList( scrollState: ScrollState, onBack: () -> Unit, onNavigateTo: (SettingsSubScreen) -> Unit, + onNavigateToManage: () -> Unit, onOpenDiscord: () -> Unit, onOpenSupport: () -> Unit, ) { @@ -754,6 +757,16 @@ private fun SettingsMainList( } } + // ── MANAGE ──────────────────────────────────────────────────── + SettingsNavItem( + title = "Manage", + subtitle = "Tracking modes, categories, cycle, and reminders", + icon = Icons.Outlined.Tune, + onClick = onNavigateToManage + ) + + HorizontalDivider(modifier = Modifier.padding(horizontal = 16.dp)) + // ── PERSONALISATION ─────────────────────────────────────────── SettingsSectionHeader("Personalisation") SettingsNavItem( diff --git a/changelog/unreleased/settings-manage-nav-swap.json b/changelog/unreleased/settings-manage-nav-swap.json new file mode 100644 index 0000000..457ee91 --- /dev/null +++ b/changelog/unreleased/settings-manage-nav-swap.json @@ -0,0 +1,8 @@ +{ + "bump": "minor", + "changed": [ + "Settings now has its own spot on the bottom navigation bar", + "The home screen's top-right icon now opens Manage", + "Manage is now the first item in the Settings screen" + ] +}