manager: pin the selected items to the top of the groups and capabilities list (#1285)

This commit is contained in:
Mufanc 2024-01-15 20:31:59 +08:00 committed by GitHub
parent e934bfb648
commit 1637864636
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -191,14 +191,19 @@ fun GroupsPanel(selected: List<Groups>, closeSelection: (selection: Set<Groups>)
var showDialog by remember { mutableStateOf(false) }
if (showDialog) {
val groups = Groups.values().sortedWith(compareBy<Groups> {
val groups = Groups.values().sortedWith(
compareBy<Groups> { if (selected.contains(it)) 0 else 1 }
.then(compareBy {
when (it) {
Groups.ROOT -> 0
Groups.SYSTEM -> 1
Groups.SHELL -> 2
else -> Int.MAX_VALUE
}
}.then(compareBy { it.name }))
})
.then(compareBy { it.name })
)
val options = groups.map { value ->
ListOption(
titleText = value.display,
@ -264,7 +269,10 @@ fun CapsPanel(
var showDialog by remember { mutableStateOf(false) }
if (showDialog) {
val caps = Capabilities.values().sortedBy { it.name }
val caps = Capabilities.values().sortedWith(
compareBy<Capabilities> { if (selected.contains(it)) 0 else 1 }
.then(compareBy { it.name })
)
val options = caps.map { value ->
ListOption(
titleText = value.display,