From e073a6ffdaf5e3c6804551366d6ff3db17b7e169 Mon Sep 17 00:00:00 2001 From: gabriel20xx Date: Sun, 26 Oct 2025 17:29:56 +0100 Subject: [PATCH] fix: add navigation to Logs screen from Settings and Lists screens --- .../app/ui/navigation/AppNavigation.kt | 1 + .../collabtable/app/ui/screens/ListsScreen.kt | 70 ++++++++----------- .../app/ui/screens/SettingsScreen.kt | 5 ++ 3 files changed, 36 insertions(+), 40 deletions(-) diff --git a/CollabTableAndroid/app/src/main/java/com/collabtable/app/ui/navigation/AppNavigation.kt b/CollabTableAndroid/app/src/main/java/com/collabtable/app/ui/navigation/AppNavigation.kt index df68076..888ad40 100644 --- a/CollabTableAndroid/app/src/main/java/com/collabtable/app/ui/navigation/AppNavigation.kt +++ b/CollabTableAndroid/app/src/main/java/com/collabtable/app/ui/navigation/AppNavigation.kt @@ -72,6 +72,7 @@ fun AppNavigation() { composable("settings") { SettingsScreen( onNavigateBack = { navController.popBackStack() }, + onNavigateToLogs = { navController.navigate("logs") }, onLeaveServer = { // Navigate back to server setup and clear entire back stack navController.navigate("server_setup") { diff --git a/CollabTableAndroid/app/src/main/java/com/collabtable/app/ui/screens/ListsScreen.kt b/CollabTableAndroid/app/src/main/java/com/collabtable/app/ui/screens/ListsScreen.kt index 2d03832..ac6d852 100644 --- a/CollabTableAndroid/app/src/main/java/com/collabtable/app/ui/screens/ListsScreen.kt +++ b/CollabTableAndroid/app/src/main/java/com/collabtable/app/ui/screens/ListsScreen.kt @@ -32,6 +32,8 @@ import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.DropdownMenu +import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Scaffold import androidx.compose.material3.Text @@ -90,12 +92,6 @@ fun ListsScreen( val context = LocalContext.current val prefsLocal = remember { PreferencesManager.getInstance(context) } ConnectionStatusAction(prefs = prefsLocal) - IconButton(onClick = { viewModel.manualSync() }) { - Icon(Icons.Default.Refresh, contentDescription = "Sync") - } - IconButton(onClick = onNavigateToLogs) { - Icon(Icons.Default.List, contentDescription = "Logs") - } SortMenu(prefs = prefs) IconButton(onClick = onNavigateToSettings) { Icon( @@ -408,44 +404,38 @@ private fun RenameListDialog( @Composable private fun SortMenu(prefs: PreferencesManager) { - val context = LocalContext.current - var expanded by remember { mutableStateOf(false) } val currentOrder by prefs.sortOrder.collectAsState(initial = prefs.getSortOrder()) + var expanded by remember { mutableStateOf(false) } + + val label = when (currentOrder) { + PreferencesManager.SORT_UPDATED_DESC -> "Updated ↓" + PreferencesManager.SORT_UPDATED_ASC -> "Updated ↑" + PreferencesManager.SORT_NAME_ASC -> "Name A–Z" + PreferencesManager.SORT_NAME_DESC -> "Name Z–A" + else -> "Sort" + } Box { - IconButton(onClick = { expanded = true }) { - Icon(Icons.Default.Sort, contentDescription = "Sort") + TextButton(onClick = { expanded = true }) { + Text(label) } - androidx.compose.material3.DropdownMenu( - expanded = expanded, - onDismissRequest = { expanded = false }, - ) { - @Composable - fun ItemOption( - label: String, - value: String, - ) { - androidx.compose.material3.DropdownMenuItem( - text = { - Row(verticalAlignment = Alignment.CenterVertically) { - Text(label) - if (currentOrder == value) { - Spacer(modifier = Modifier.weight(1f)) - Text("✓") - } - } - }, - onClick = { - prefs.setSortOrder(value) - expanded = false - }, - ) - } - - ItemOption("Updated (newest first)", PreferencesManager.SORT_UPDATED_DESC) - ItemOption("Updated (oldest first)", PreferencesManager.SORT_UPDATED_ASC) - ItemOption("Name (A–Z)", PreferencesManager.SORT_NAME_ASC) - ItemOption("Name (Z–A)", PreferencesManager.SORT_NAME_DESC) + DropdownMenu(expanded = expanded, onDismissRequest = { expanded = false }) { + DropdownMenuItem( + text = { Text("Updated (newest first)") }, + onClick = { prefs.setSortOrder(PreferencesManager.SORT_UPDATED_DESC); expanded = false }, + ) + DropdownMenuItem( + text = { Text("Updated (oldest first)") }, + onClick = { prefs.setSortOrder(PreferencesManager.SORT_UPDATED_ASC); expanded = false }, + ) + DropdownMenuItem( + text = { Text("Name (A–Z)") }, + onClick = { prefs.setSortOrder(PreferencesManager.SORT_NAME_ASC); expanded = false }, + ) + DropdownMenuItem( + text = { Text("Name (Z–A)") }, + onClick = { prefs.setSortOrder(PreferencesManager.SORT_NAME_DESC); expanded = false }, + ) } } } diff --git a/CollabTableAndroid/app/src/main/java/com/collabtable/app/ui/screens/SettingsScreen.kt b/CollabTableAndroid/app/src/main/java/com/collabtable/app/ui/screens/SettingsScreen.kt index 75a260a..3eeb739 100644 --- a/CollabTableAndroid/app/src/main/java/com/collabtable/app/ui/screens/SettingsScreen.kt +++ b/CollabTableAndroid/app/src/main/java/com/collabtable/app/ui/screens/SettingsScreen.kt @@ -16,6 +16,7 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.ArrowBack import androidx.compose.material.icons.filled.DarkMode import androidx.compose.material.icons.filled.LightMode +import androidx.compose.material.icons.filled.List import androidx.compose.material.icons.filled.SettingsBrightness import androidx.compose.material3.AlertDialog import androidx.compose.material3.Button @@ -71,6 +72,7 @@ import android.net.Uri fun SettingsScreen( onNavigateBack: () -> Unit, onLeaveServer: () -> Unit = {}, + onNavigateToLogs: () -> Unit = {}, ) { val context = LocalContext.current val preferencesManager = remember { PreferencesManager.getInstance(context) } @@ -144,6 +146,9 @@ fun SettingsScreen( }, actions = { ConnectionStatusAction(prefs = preferencesManager) + IconButton(onClick = onNavigateToLogs) { + Icon(Icons.Default.List, contentDescription = "Logs") + } }, colors = TopAppBarDefaults.topAppBarColors(