UI: remove code duplication in sort menu
This commit is contained in:
parent
41615be5ae
commit
481ba6e9d3
|
|
@ -83,7 +83,7 @@ fun ModelsManagementBottomBar(
|
||||||
BottomAppBar(
|
BottomAppBar(
|
||||||
actions = {
|
actions = {
|
||||||
if (selection.isActive) {
|
if (selection.isActive) {
|
||||||
// Multi-selection mode actions
|
/* Multi-selection mode actions */
|
||||||
IconButton(onClick = { selection.toggleAllSelection(true) }) {
|
IconButton(onClick = { selection.toggleAllSelection(true) }) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.Default.SelectAll,
|
imageVector = Icons.Default.SelectAll,
|
||||||
|
|
@ -111,8 +111,11 @@ fun ModelsManagementBottomBar(
|
||||||
MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.3f)
|
MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.3f)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// Default mode actions
|
/* Default mode actions */
|
||||||
|
|
||||||
|
// Sorting action
|
||||||
IconButton(onClick = { sorting.toggleMenu(true) }) {
|
IconButton(onClick = { sorting.toggleMenu(true) }) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.AutoMirrored.Filled.Sort,
|
imageVector = Icons.AutoMirrored.Filled.Sort,
|
||||||
|
|
@ -120,78 +123,35 @@ fun ModelsManagementBottomBar(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sort dropdown menu
|
// Sorting dropdown menu
|
||||||
DropdownMenu(
|
DropdownMenu(
|
||||||
expanded = sorting.isMenuVisible,
|
expanded = sorting.isMenuVisible,
|
||||||
onDismissRequest = { sorting.toggleMenu(false) }
|
onDismissRequest = { sorting.toggleMenu(false) }
|
||||||
) {
|
) {
|
||||||
|
val sortOptions = listOf(
|
||||||
|
Triple(ModelSortOrder.NAME_ASC, "Name (A-Z)", "Sort by name in ascending order"),
|
||||||
|
Triple(ModelSortOrder.NAME_DESC, "Name (Z-A)", "Sort by name in descending order"),
|
||||||
|
Triple(ModelSortOrder.SIZE_ASC, "Size (Smallest first)", "Sort by size in ascending order"),
|
||||||
|
Triple(ModelSortOrder.SIZE_DESC, "Size (Largest first)", "Sort by size in descending order"),
|
||||||
|
Triple(ModelSortOrder.LAST_USED, "Last used", "Sort by last used")
|
||||||
|
)
|
||||||
|
|
||||||
|
sortOptions.forEach { (order, label, description) ->
|
||||||
DropdownMenuItem(
|
DropdownMenuItem(
|
||||||
text = { Text("Name (A-Z)") },
|
text = { Text(label) },
|
||||||
trailingIcon = {
|
trailingIcon = {
|
||||||
if (sorting.currentOrder == ModelSortOrder.NAME_ASC)
|
if (sorting.currentOrder == order)
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.Default.Check,
|
imageVector = Icons.Default.Check,
|
||||||
contentDescription = "Sort by name in ascending order, selected"
|
contentDescription = "$description, selected"
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
onClick = {
|
onClick = { sorting.selectOrder(order) }
|
||||||
sorting.selectOrder(ModelSortOrder.NAME_ASC)
|
)
|
||||||
}
|
}
|
||||||
)
|
|
||||||
DropdownMenuItem(
|
|
||||||
text = { Text("Name (Z-A)") },
|
|
||||||
trailingIcon = {
|
|
||||||
if (sorting.currentOrder == ModelSortOrder.NAME_DESC)
|
|
||||||
Icon(
|
|
||||||
imageVector = Icons.Default.Check,
|
|
||||||
contentDescription = "Sort by name in descending order, selected"
|
|
||||||
)
|
|
||||||
},
|
|
||||||
onClick = {
|
|
||||||
sorting.selectOrder(ModelSortOrder.NAME_DESC)
|
|
||||||
}
|
|
||||||
)
|
|
||||||
DropdownMenuItem(
|
|
||||||
text = { Text("Size (Smallest first)") },
|
|
||||||
trailingIcon = {
|
|
||||||
if (sorting.currentOrder == ModelSortOrder.SIZE_ASC)
|
|
||||||
Icon(
|
|
||||||
imageVector = Icons.Default.Check,
|
|
||||||
contentDescription = "Sort by size in ascending order, selected"
|
|
||||||
)
|
|
||||||
},
|
|
||||||
onClick = {
|
|
||||||
sorting.selectOrder(ModelSortOrder.SIZE_ASC)
|
|
||||||
}
|
|
||||||
)
|
|
||||||
DropdownMenuItem(
|
|
||||||
text = { Text("Size (Largest first)") },
|
|
||||||
trailingIcon = {
|
|
||||||
if (sorting.currentOrder == ModelSortOrder.SIZE_DESC)
|
|
||||||
Icon(
|
|
||||||
imageVector = Icons.Default.Check,
|
|
||||||
contentDescription = "Sort by size in descending order, selected"
|
|
||||||
)
|
|
||||||
},
|
|
||||||
onClick = {
|
|
||||||
sorting.selectOrder(ModelSortOrder.SIZE_DESC)
|
|
||||||
}
|
|
||||||
)
|
|
||||||
DropdownMenuItem(
|
|
||||||
text = { Text("Last used") },
|
|
||||||
trailingIcon = {
|
|
||||||
if (sorting.currentOrder == ModelSortOrder.LAST_USED)
|
|
||||||
Icon(
|
|
||||||
imageVector = Icons.Default.Check,
|
|
||||||
contentDescription = "Sort by last used, selected"
|
|
||||||
)
|
|
||||||
},
|
|
||||||
onClick = {
|
|
||||||
sorting.selectOrder(ModelSortOrder.LAST_USED)
|
|
||||||
}
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Filtering action
|
||||||
IconButton(
|
IconButton(
|
||||||
onClick = filtering.onClick
|
onClick = filtering.onClick
|
||||||
) {
|
) {
|
||||||
|
|
@ -201,6 +161,7 @@ fun ModelsManagementBottomBar(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Selection action
|
||||||
IconButton(onClick = { selection.toggleMode(true) }) {
|
IconButton(onClick = { selection.toggleMode(true) }) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.Default.DeleteSweep,
|
imageVector = Icons.Default.DeleteSweep,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue