FIX: Navigation using Breadcrumbs

This commit is contained in:
sebastian 2025-05-10 11:45:52 +02:00
parent 828a4e0fd3
commit b9fe9cf184
2 changed files with 72 additions and 56 deletions

View File

@ -4,10 +4,10 @@
<selectionStates> <selectionStates>
<SelectionState runConfigName="app"> <SelectionState runConfigName="app">
<option name="selectionMode" value="DROPDOWN" /> <option name="selectionMode" value="DROPDOWN" />
<DropdownSelection timestamp="2025-05-10T09:28:03.000292036Z"> <DropdownSelection timestamp="2025-05-10T09:35:55.287804256Z">
<Target type="DEFAULT_BOOT"> <Target type="DEFAULT_BOOT">
<handle> <handle>
<DeviceId pluginId="PhysicalDevice" identifier="serial=R52N50NLGRT" /> <DeviceId pluginId="LocalEmulator" identifier="path=/home/sebastian/.android/avd/Pixel_9.avd" />
</handle> </handle>
</Target> </Target>
</DropdownSelection> </DropdownSelection>

View File

@ -112,27 +112,35 @@ fun CollectionBreadcrumbs(
.padding(8.dp), .padding(8.dp),
verticalAlignment = Alignment.CenterVertically verticalAlignment = Alignment.CenterVertically
) { ) {
Text( BreadcrumbItem(label = "Start", onClick = { onNavigateTo(-1) })
text = "Start",
modifier = Modifier
.clickable { onNavigateTo(-1) }
.padding(horizontal = 4.dp),
style = MaterialTheme.typography.labelLarge
)
path.forEachIndexed { index, collection -> path.forEachIndexed { index, collection ->
Text(" / ", style = MaterialTheme.typography.labelLarge) Text(" / ", style = MaterialTheme.typography.labelLarge)
Text(
text = collection.name, BreadcrumbItem(label = collection.name, onClick = {
modifier = Modifier Log.d("Breadcrumb", "BreadcrumbItem " + collection.name + " was clicked")
.clickable { onNavigateTo(index) } onNavigateTo(index)
.padding(horizontal = 4.dp), })
style = MaterialTheme.typography.labelLarge
)
} }
} }
} }
@Composable
private fun BreadcrumbItem(label: String, onClick: () -> Unit) {
Box(
modifier = Modifier
.padding(horizontal = 4.dp)
.clickable(onClick = {
Log.d("Individual Breadcrumb", "A simple test " + label)
onClick()
})
) {
Text(
text = label,
style = MaterialTheme.typography.labelLarge,
)
}
}
@Composable @Composable
fun NotesScreen( fun NotesScreen(
@ -184,22 +192,27 @@ fun NotesScreen(
content = { innerPadding -> content = { innerPadding ->
val path by viewModel.pathStack.collectAsState() val path by viewModel.pathStack.collectAsState()
BackHandler(enabled = path.isNotEmpty()) { BackHandler(enabled = path.isNotEmpty()) {
viewModel.navigateUp() viewModel.navigateUp()
} }
Column(
modifier = Modifier
.fillMaxSize()
.padding(innerPadding)
) {
// Breadcrumbs sichtbar & klickbar machen
CollectionBreadcrumbs( CollectionBreadcrumbs(
path = path, path = path,
onNavigateTo = { index -> onNavigateTo = { index ->
Log.d("NoteBrowser", "Navigate to: $index")
if (index == -1) viewModel.loadContentForParent(null) if (index == -1) viewModel.loadContentForParent(null)
else viewModel.navigateToLevel(index) else viewModel.navigateToLevel(index)
} }
) )
LazyColumn( LazyColumn {
modifier = Modifier
.fillMaxSize()
.padding(innerPadding)
) {
item { item {
Text( Text(
"Ordner", "Ordner",
@ -212,7 +225,9 @@ fun NotesScreen(
ListItem( ListItem(
headlineContent = { Text(collection.name) }, headlineContent = { Text(collection.name) },
modifier = Modifier modifier = Modifier
.clickable { viewModel.loadContentForParent(collection.id, collection) } .clickable {
viewModel.loadContentForParent(collection.id, collection)
}
.padding(horizontal = 8.dp) .padding(horizontal = 8.dp)
) )
} }
@ -232,11 +247,12 @@ fun NotesScreen(
supportingContent = { supportingContent = {
note.composer?.let { Text(it) } note.composer?.let { Text(it) }
}, },
modifier = Modifier modifier = Modifier.padding(horizontal = 8.dp)
.padding(horizontal = 8.dp)
) )
} }
} }
}
if (showDialog) { if (showDialog) {