fix: add navigation to Logs screen from Settings and Lists screens

This commit is contained in:
2025-10-26 17:29:56 +01:00
parent f401409517
commit e073a6ffda
3 changed files with 36 additions and 40 deletions
@@ -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") {
@@ -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 AZ"
PreferencesManager.SORT_NAME_DESC -> "Name ZA"
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 (AZ)", PreferencesManager.SORT_NAME_ASC)
ItemOption("Name (ZA)", 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 (AZ)") },
onClick = { prefs.setSortOrder(PreferencesManager.SORT_NAME_ASC); expanded = false },
)
DropdownMenuItem(
text = { Text("Name (ZA)") },
onClick = { prefs.setSortOrder(PreferencesManager.SORT_NAME_DESC); expanded = false },
)
}
}
}
@@ -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(