UI: polish sort order menu

This commit is contained in:
Han Yin 2025-04-14 15:26:13 -07:00
parent 760d66c97d
commit a3ebdac58f
1 changed files with 45 additions and 8 deletions

View File

@ -14,6 +14,7 @@ import androidx.compose.foundation.lazy.items
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.Sort import androidx.compose.material.icons.automirrored.filled.Sort
import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.filled.Add
import androidx.compose.material.icons.filled.Check
import androidx.compose.material.icons.filled.ClearAll import androidx.compose.material.icons.filled.ClearAll
import androidx.compose.material.icons.filled.Close import androidx.compose.material.icons.filled.Close
import androidx.compose.material.icons.filled.Delete import androidx.compose.material.icons.filled.Delete
@ -63,8 +64,9 @@ fun ModelsManagementScreen(
onBackPressed: () -> Unit, onBackPressed: () -> Unit,
viewModel: ModelsManagementViewModel = hiltViewModel() viewModel: ModelsManagementViewModel = hiltViewModel()
) { ) {
val sortedModels by viewModel.sortedModels.collectAsState()
val storageMetrics by viewModel.storageMetrics.collectAsState() val storageMetrics by viewModel.storageMetrics.collectAsState()
val sortedModels by viewModel.sortedModels.collectAsState()
val sortOrder by viewModel.sortOrder.collectAsState()
// UI: menu states // UI: menu states
var showSortMenu by remember { mutableStateOf(false) } var showSortMenu by remember { mutableStateOf(false) }
@ -143,6 +145,13 @@ fun ModelsManagementScreen(
) { ) {
DropdownMenuItem( DropdownMenuItem(
text = { Text("Name (A-Z)") }, text = { Text("Name (A-Z)") },
trailingIcon = {
if (sortOrder == ModelSortOrder.NAME_ASC)
Icon(
imageVector = Icons.Default.Check,
contentDescription = "Sort by name in ascending order, selected"
)
},
onClick = { onClick = {
viewModel.setSortOrder(ModelSortOrder.NAME_ASC) viewModel.setSortOrder(ModelSortOrder.NAME_ASC)
showSortMenu = false showSortMenu = false
@ -150,27 +159,55 @@ fun ModelsManagementScreen(
) )
DropdownMenuItem( DropdownMenuItem(
text = { Text("Name (Z-A)") }, text = { Text("Name (Z-A)") },
trailingIcon = {
if (sortOrder == ModelSortOrder.NAME_DESC)
Icon(
imageVector = Icons.Default.Check,
contentDescription = "Sort by name in descending order, selected"
)
},
onClick = { onClick = {
viewModel.setSortOrder(ModelSortOrder.NAME_DESC) viewModel.setSortOrder(ModelSortOrder.NAME_DESC)
showSortMenu = false showSortMenu = false
} }
) )
DropdownMenuItem(
text = { Text("Size (Largest first)") },
onClick = {
viewModel.setSortOrder(ModelSortOrder.SIZE_DESC)
showSortMenu = false
}
)
DropdownMenuItem( DropdownMenuItem(
text = { Text("Size (Smallest first)") }, text = { Text("Size (Smallest first)") },
trailingIcon = {
if (sortOrder == ModelSortOrder.SIZE_ASC)
Icon(
imageVector = Icons.Default.Check,
contentDescription = "Sort by size in ascending order, selected"
)
},
onClick = { onClick = {
viewModel.setSortOrder(ModelSortOrder.SIZE_ASC) viewModel.setSortOrder(ModelSortOrder.SIZE_ASC)
showSortMenu = false showSortMenu = false
} }
) )
DropdownMenuItem(
text = { Text("Size (Largest first)") },
trailingIcon = {
if (sortOrder == ModelSortOrder.SIZE_DESC)
Icon(
imageVector = Icons.Default.Check,
contentDescription = "Sort by size in descending order, selected"
)
},
onClick = {
viewModel.setSortOrder(ModelSortOrder.SIZE_DESC)
showSortMenu = false
}
)
DropdownMenuItem( DropdownMenuItem(
text = { Text("Last used") }, text = { Text("Last used") },
trailingIcon = {
if (sortOrder == ModelSortOrder.LAST_USED)
Icon(
imageVector = Icons.Default.Check,
contentDescription = "Sort by last used, selected"
)
},
onClick = { onClick = {
viewModel.setSortOrder(ModelSortOrder.LAST_USED) viewModel.setSortOrder(ModelSortOrder.LAST_USED)
showSortMenu = false showSortMenu = false