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.sortZToA = prefs.getBoolean("module_sort_z_to_a", false)
|
||||||
viewModel.sortSizeLowToHigh = prefs.getBoolean("module_sort_size_low_to_high", false)
|
viewModel.sortSizeLowToHigh = prefs.getBoolean("module_sort_size_low_to_high", false)
|
||||||
viewModel.sortSizeHighToLow = prefs.getBoolean("module_sort_size_high_to_low", 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) {
|
if (viewModel.moduleList.isEmpty() || viewModel.isNeedRefresh) {
|
||||||
viewModel.fetchModuleList()
|
viewModel.fetchModuleList()
|
||||||
}
|
}
|
||||||
@@ -233,11 +237,17 @@ fun ModuleScreen(navigator: DestinationsNavigator) {
|
|||||||
viewModel.sortZToA = false
|
viewModel.sortZToA = false
|
||||||
viewModel.sortSizeLowToHigh = false
|
viewModel.sortSizeLowToHigh = false
|
||||||
viewModel.sortSizeHighToLow = false
|
viewModel.sortSizeHighToLow = false
|
||||||
|
viewModel.sortEnabledFirst = false
|
||||||
|
viewModel.sortActionFirst = false
|
||||||
|
viewModel.sortWebUiFirst = false
|
||||||
prefs.edit()
|
prefs.edit()
|
||||||
.putBoolean("module_sort_a_to_z", viewModel.sortAToZ)
|
.putBoolean("module_sort_a_to_z", viewModel.sortAToZ)
|
||||||
.putBoolean("module_sort_z_to_a", false)
|
.putBoolean("module_sort_z_to_a", false)
|
||||||
.putBoolean("module_sort_size_low_to_high", false)
|
.putBoolean("module_sort_size_low_to_high", false)
|
||||||
.putBoolean("module_sort_size_high_to_low", 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()
|
.apply()
|
||||||
scope.launch {
|
scope.launch {
|
||||||
viewModel.fetchModuleList()
|
viewModel.fetchModuleList()
|
||||||
@@ -257,11 +267,17 @@ fun ModuleScreen(navigator: DestinationsNavigator) {
|
|||||||
viewModel.sortAToZ = false
|
viewModel.sortAToZ = false
|
||||||
viewModel.sortSizeLowToHigh = false
|
viewModel.sortSizeLowToHigh = false
|
||||||
viewModel.sortSizeHighToLow = false
|
viewModel.sortSizeHighToLow = false
|
||||||
|
viewModel.sortEnabledFirst = false
|
||||||
|
viewModel.sortActionFirst = false
|
||||||
|
viewModel.sortWebUiFirst = false
|
||||||
prefs.edit()
|
prefs.edit()
|
||||||
.putBoolean("module_sort_z_to_a", viewModel.sortZToA)
|
.putBoolean("module_sort_z_to_a", viewModel.sortZToA)
|
||||||
.putBoolean("module_sort_a_to_z", false)
|
.putBoolean("module_sort_a_to_z", false)
|
||||||
.putBoolean("module_sort_size_low_to_high", false)
|
.putBoolean("module_sort_size_low_to_high", false)
|
||||||
.putBoolean("module_sort_size_high_to_low", 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()
|
.apply()
|
||||||
scope.launch {
|
scope.launch {
|
||||||
viewModel.fetchModuleList()
|
viewModel.fetchModuleList()
|
||||||
@@ -281,11 +297,17 @@ fun ModuleScreen(navigator: DestinationsNavigator) {
|
|||||||
viewModel.sortAToZ = false
|
viewModel.sortAToZ = false
|
||||||
viewModel.sortZToA = false
|
viewModel.sortZToA = false
|
||||||
viewModel.sortSizeHighToLow = false
|
viewModel.sortSizeHighToLow = false
|
||||||
|
viewModel.sortEnabledFirst = false
|
||||||
|
viewModel.sortActionFirst = false
|
||||||
|
viewModel.sortWebUiFirst = false
|
||||||
prefs.edit()
|
prefs.edit()
|
||||||
.putBoolean("module_sort_size_low_to_high", viewModel.sortSizeLowToHigh)
|
.putBoolean("module_sort_size_low_to_high", viewModel.sortSizeLowToHigh)
|
||||||
.putBoolean("module_sort_a_to_z", false)
|
.putBoolean("module_sort_a_to_z", false)
|
||||||
.putBoolean("module_sort_z_to_a", false)
|
.putBoolean("module_sort_z_to_a", false)
|
||||||
.putBoolean("module_sort_size_high_to_low", 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()
|
.apply()
|
||||||
scope.launch {
|
scope.launch {
|
||||||
viewModel.fetchModuleList()
|
viewModel.fetchModuleList()
|
||||||
@@ -305,11 +327,104 @@ fun ModuleScreen(navigator: DestinationsNavigator) {
|
|||||||
viewModel.sortAToZ = false
|
viewModel.sortAToZ = false
|
||||||
viewModel.sortZToA = false
|
viewModel.sortZToA = false
|
||||||
viewModel.sortSizeLowToHigh = false
|
viewModel.sortSizeLowToHigh = false
|
||||||
|
viewModel.sortEnabledFirst = false
|
||||||
|
viewModel.sortActionFirst = false
|
||||||
|
viewModel.sortWebUiFirst = false
|
||||||
prefs.edit()
|
prefs.edit()
|
||||||
.putBoolean("module_sort_size_high_to_low", viewModel.sortSizeHighToLow)
|
.putBoolean("module_sort_size_high_to_low", viewModel.sortSizeHighToLow)
|
||||||
.putBoolean("module_sort_a_to_z", false)
|
.putBoolean("module_sort_a_to_z", false)
|
||||||
.putBoolean("module_sort_z_to_a", false)
|
.putBoolean("module_sort_z_to_a", false)
|
||||||
.putBoolean("module_sort_size_low_to_high", 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()
|
.apply()
|
||||||
scope.launch {
|
scope.launch {
|
||||||
viewModel.fetchModuleList()
|
viewModel.fetchModuleList()
|
||||||
|
|||||||
@@ -67,9 +67,15 @@ class ModuleViewModel : ViewModel() {
|
|||||||
var sortZToA by mutableStateOf(false)
|
var sortZToA by mutableStateOf(false)
|
||||||
var sortSizeLowToHigh by mutableStateOf(false)
|
var sortSizeLowToHigh by mutableStateOf(false)
|
||||||
var sortSizeHighToLow 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 moduleList by derivedStateOf {
|
||||||
val comparator = when {
|
val comparator = when {
|
||||||
|
sortWebUiFirst -> compareByDescending<ModuleInfo> { it.hasWebUi }
|
||||||
|
sortEnabledFirst -> compareByDescending<ModuleInfo> { it.enabled }
|
||||||
|
sortActionFirst -> compareByDescending<ModuleInfo> { it.hasActionScript }
|
||||||
sortAToZ -> compareBy<ModuleInfo> { it.name.lowercase() }
|
sortAToZ -> compareBy<ModuleInfo> { it.name.lowercase() }
|
||||||
sortZToA -> compareByDescending<ModuleInfo> { it.name.lowercase() }
|
sortZToA -> compareByDescending<ModuleInfo> { it.name.lowercase() }
|
||||||
sortSizeLowToHigh -> compareBy<ModuleInfo> { it.size }
|
sortSizeLowToHigh -> compareBy<ModuleInfo> { it.size }
|
||||||
|
|||||||
@@ -228,4 +228,7 @@
|
|||||||
<string name="home_superuser_count_plural">Superusers</string>
|
<string name="home_superuser_count_plural">Superusers</string>
|
||||||
<string name="home_module_count_singular">Module</string>
|
<string name="home_module_count_singular">Module</string>
|
||||||
<string name="home_module_count_plural">Modules</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>
|
</resources>
|
||||||
|
|||||||
Reference in New Issue
Block a user