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

View File

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