You've already forked KernelSU-Next
mirror of
https://github.com/KernelSU-Next/KernelSU-Next.git
synced 2025-08-27 23:46:34 +00:00
manager: added more module list sort options ( enabled, action and webui)
This commit is contained in:
@@ -150,6 +150,10 @@ fun ModuleScreen(navigator: DestinationsNavigator) {
|
||||
viewModel.sortZToA = prefs.getBoolean("module_sort_z_to_a", false)
|
||||
viewModel.sortSizeLowToHigh = prefs.getBoolean("module_sort_size_low_to_high", false)
|
||||
viewModel.sortSizeHighToLow = prefs.getBoolean("module_sort_size_high_to_low", false)
|
||||
viewModel.sortEnabledFirst = prefs.getBoolean("module_sort_enabled_first", false)
|
||||
viewModel.sortActionFirst = prefs.getBoolean("module_sort_action_first", false)
|
||||
viewModel.sortWebUiFirst = prefs.getBoolean("module_sort_webui_first", false)
|
||||
|
||||
if (viewModel.moduleList.isEmpty() || viewModel.isNeedRefresh) {
|
||||
viewModel.fetchModuleList()
|
||||
}
|
||||
@@ -233,11 +237,17 @@ fun ModuleScreen(navigator: DestinationsNavigator) {
|
||||
viewModel.sortZToA = false
|
||||
viewModel.sortSizeLowToHigh = false
|
||||
viewModel.sortSizeHighToLow = false
|
||||
viewModel.sortEnabledFirst = false
|
||||
viewModel.sortActionFirst = false
|
||||
viewModel.sortWebUiFirst = false
|
||||
prefs.edit()
|
||||
.putBoolean("module_sort_a_to_z", viewModel.sortAToZ)
|
||||
.putBoolean("module_sort_z_to_a", false)
|
||||
.putBoolean("module_sort_size_low_to_high", false)
|
||||
.putBoolean("module_sort_size_high_to_low", false)
|
||||
.putBoolean("module_sort_enabled_first", false)
|
||||
.putBoolean("module_sort_action_first", false)
|
||||
.putBoolean("module_sort_webui_first", false)
|
||||
.apply()
|
||||
scope.launch {
|
||||
viewModel.fetchModuleList()
|
||||
@@ -257,11 +267,17 @@ fun ModuleScreen(navigator: DestinationsNavigator) {
|
||||
viewModel.sortAToZ = false
|
||||
viewModel.sortSizeLowToHigh = false
|
||||
viewModel.sortSizeHighToLow = false
|
||||
viewModel.sortEnabledFirst = false
|
||||
viewModel.sortActionFirst = false
|
||||
viewModel.sortWebUiFirst = false
|
||||
prefs.edit()
|
||||
.putBoolean("module_sort_z_to_a", viewModel.sortZToA)
|
||||
.putBoolean("module_sort_a_to_z", false)
|
||||
.putBoolean("module_sort_size_low_to_high", false)
|
||||
.putBoolean("module_sort_size_high_to_low", false)
|
||||
.putBoolean("module_sort_enabled_first", false)
|
||||
.putBoolean("module_sort_action_first", false)
|
||||
.putBoolean("module_sort_webui_first", false)
|
||||
.apply()
|
||||
scope.launch {
|
||||
viewModel.fetchModuleList()
|
||||
@@ -281,11 +297,17 @@ fun ModuleScreen(navigator: DestinationsNavigator) {
|
||||
viewModel.sortAToZ = false
|
||||
viewModel.sortZToA = false
|
||||
viewModel.sortSizeHighToLow = false
|
||||
viewModel.sortEnabledFirst = false
|
||||
viewModel.sortActionFirst = false
|
||||
viewModel.sortWebUiFirst = false
|
||||
prefs.edit()
|
||||
.putBoolean("module_sort_size_low_to_high", viewModel.sortSizeLowToHigh)
|
||||
.putBoolean("module_sort_a_to_z", false)
|
||||
.putBoolean("module_sort_z_to_a", false)
|
||||
.putBoolean("module_sort_size_high_to_low", false)
|
||||
.putBoolean("module_sort_enabled_first", false)
|
||||
.putBoolean("module_sort_action_first", false)
|
||||
.putBoolean("module_sort_webui_first", false)
|
||||
.apply()
|
||||
scope.launch {
|
||||
viewModel.fetchModuleList()
|
||||
@@ -305,11 +327,104 @@ fun ModuleScreen(navigator: DestinationsNavigator) {
|
||||
viewModel.sortAToZ = false
|
||||
viewModel.sortZToA = false
|
||||
viewModel.sortSizeLowToHigh = false
|
||||
viewModel.sortEnabledFirst = false
|
||||
viewModel.sortActionFirst = false
|
||||
viewModel.sortWebUiFirst = false
|
||||
prefs.edit()
|
||||
.putBoolean("module_sort_size_high_to_low", viewModel.sortSizeHighToLow)
|
||||
.putBoolean("module_sort_a_to_z", false)
|
||||
.putBoolean("module_sort_z_to_a", false)
|
||||
.putBoolean("module_sort_size_low_to_high", false)
|
||||
.putBoolean("module_sort_enabled_first", false)
|
||||
.putBoolean("module_sort_action_first", false)
|
||||
.putBoolean("module_sort_webui_first", false)
|
||||
.apply()
|
||||
scope.launch {
|
||||
viewModel.fetchModuleList()
|
||||
}
|
||||
}
|
||||
)
|
||||
DropdownMenuItem(
|
||||
text = {
|
||||
Text(stringResource(R.string.module_sort_enabled_first))
|
||||
},
|
||||
trailingIcon = {
|
||||
Checkbox(checked = viewModel.sortEnabledFirst, onCheckedChange = null)
|
||||
},
|
||||
onClick = {
|
||||
viewModel.sortEnabledFirst = !viewModel.sortEnabledFirst
|
||||
viewModel.sortAToZ = false
|
||||
viewModel.sortZToA = false
|
||||
viewModel.sortSizeLowToHigh = false
|
||||
viewModel.sortSizeHighToLow = false
|
||||
viewModel.sortActionFirst = false
|
||||
viewModel.sortWebUiFirst = false
|
||||
prefs.edit()
|
||||
.putBoolean("module_sort_enabled_first", viewModel.sortEnabledFirst)
|
||||
.putBoolean("module_sort_a_to_z", false)
|
||||
.putBoolean("module_sort_z_to_a", false)
|
||||
.putBoolean("module_sort_size_low_to_high", false)
|
||||
.putBoolean("module_sort_size_high_to_low", false)
|
||||
.putBoolean("module_sort_action_first", false)
|
||||
.putBoolean("module_sort_webui_first", false)
|
||||
.apply()
|
||||
scope.launch {
|
||||
viewModel.fetchModuleList()
|
||||
}
|
||||
}
|
||||
)
|
||||
DropdownMenuItem(
|
||||
text = {
|
||||
Text(stringResource(R.string.module_sort_action_first))
|
||||
},
|
||||
trailingIcon = {
|
||||
Checkbox(checked = viewModel.sortActionFirst, onCheckedChange = null)
|
||||
},
|
||||
onClick = {
|
||||
viewModel.sortActionFirst = !viewModel.sortActionFirst
|
||||
viewModel.sortAToZ = false
|
||||
viewModel.sortZToA = false
|
||||
viewModel.sortSizeLowToHigh = false
|
||||
viewModel.sortSizeHighToLow = false
|
||||
viewModel.sortEnabledFirst = false
|
||||
viewModel.sortWebUiFirst = false
|
||||
prefs.edit()
|
||||
.putBoolean("module_sort_action_first", viewModel.sortActionFirst)
|
||||
.putBoolean("module_sort_a_to_z", false)
|
||||
.putBoolean("module_sort_z_to_a", false)
|
||||
.putBoolean("module_sort_size_low_to_high", false)
|
||||
.putBoolean("module_sort_size_high_to_low", false)
|
||||
.putBoolean("module_sort_enabled_first", false)
|
||||
.putBoolean("module_sort_webui_first", false)
|
||||
.apply()
|
||||
scope.launch {
|
||||
viewModel.fetchModuleList()
|
||||
}
|
||||
}
|
||||
)
|
||||
DropdownMenuItem(
|
||||
text = {
|
||||
Text(stringResource(R.string.module_sort_webui_first))
|
||||
},
|
||||
trailingIcon = {
|
||||
Checkbox(checked = viewModel.sortWebUiFirst, onCheckedChange = null)
|
||||
},
|
||||
onClick = {
|
||||
viewModel.sortWebUiFirst = !viewModel.sortWebUiFirst
|
||||
viewModel.sortAToZ = false
|
||||
viewModel.sortZToA = false
|
||||
viewModel.sortSizeLowToHigh = false
|
||||
viewModel.sortSizeHighToLow = false
|
||||
viewModel.sortEnabledFirst = false
|
||||
viewModel.sortActionFirst = false
|
||||
prefs.edit()
|
||||
.putBoolean("module_sort_webui_first", viewModel.sortWebUiFirst)
|
||||
.putBoolean("module_sort_a_to_z", false)
|
||||
.putBoolean("module_sort_z_to_a", false)
|
||||
.putBoolean("module_sort_size_low_to_high", false)
|
||||
.putBoolean("module_sort_size_high_to_low", false)
|
||||
.putBoolean("module_sort_enabled_first", false)
|
||||
.putBoolean("module_sort_action_first", false)
|
||||
.apply()
|
||||
scope.launch {
|
||||
viewModel.fetchModuleList()
|
||||
|
||||
@@ -67,9 +67,15 @@ class ModuleViewModel : ViewModel() {
|
||||
var sortZToA by mutableStateOf(false)
|
||||
var sortSizeLowToHigh by mutableStateOf(false)
|
||||
var sortSizeHighToLow by mutableStateOf(false)
|
||||
var sortEnabledFirst by mutableStateOf(false)
|
||||
var sortActionFirst by mutableStateOf(false)
|
||||
var sortWebUiFirst by mutableStateOf(false)
|
||||
|
||||
val moduleList by derivedStateOf {
|
||||
val comparator = when {
|
||||
sortWebUiFirst -> compareByDescending<ModuleInfo> { it.hasWebUi }
|
||||
sortEnabledFirst -> compareByDescending<ModuleInfo> { it.enabled }
|
||||
sortActionFirst -> compareByDescending<ModuleInfo> { it.hasActionScript }
|
||||
sortAToZ -> compareBy<ModuleInfo> { it.name.lowercase() }
|
||||
sortZToA -> compareByDescending<ModuleInfo> { it.name.lowercase() }
|
||||
sortSizeLowToHigh -> compareBy<ModuleInfo> { it.size }
|
||||
|
||||
@@ -228,4 +228,7 @@
|
||||
<string name="home_superuser_count_plural">Superusers</string>
|
||||
<string name="home_module_count_singular">Module</string>
|
||||
<string name="home_module_count_plural">Modules</string>
|
||||
<string name="module_sort_enabled_first">Sort (Enabled first)</string>
|
||||
<string name="module_sort_action_first">Sort (Action first)</string>
|
||||
<string name="module_sort_webui_first">Sort (WebUI first)</string>
|
||||
</resources>
|
||||
|
||||
Reference in New Issue
Block a user