@@ -33,14 +33,22 @@ class SettingsContainer(context: Context) {
3333 // show, but change will not do anything because another setting needs to be enabled first -> probably best
3434 fun filter (searchTerm : String ): List <Setting > {
3535 val term = searchTerm.lowercase()
36- val results = mutableSetOf<Setting >()
37- list.forEach { setting -> if (setting.title.lowercase().startsWith(term)) results.add(setting) }
38- list.forEach { setting -> if (setting.title.lowercase().split(' ' ).any { it.startsWith(term) }) results.add(setting) }
36+ val titleMatch = mutableListOf<Setting >()
37+ val titleWordMatch = mutableListOf<Setting >()
38+ val descriptionMatch = mutableListOf<Setting >()
39+
3940 list.forEach { setting ->
40- if (setting.description?.lowercase()?.split(' ' )?.any { it.startsWith(term) } == true )
41- results.add(setting)
41+ val titleLower = setting.titleLower
42+ if (titleLower.startsWith(term)) {
43+ titleMatch.add(setting)
44+ } else if (setting.titleWords.any { it.startsWith(term) }) {
45+ titleWordMatch.add(setting)
46+ } else if (setting.descriptionWords?.any { it.startsWith(term) } == true ) {
47+ descriptionMatch.add(setting)
48+ }
4249 }
43- return results.toList()
50+
51+ return titleMatch + titleWordMatch + descriptionMatch
4452 }
4553}
4654
@@ -53,7 +61,10 @@ class Setting(
5361 private val content : @Composable (Setting ) -> Unit
5462) {
5563 val title = context.getString(titleId)
64+ val titleLower = title.lowercase()
65+ val titleWords = titleLower.split(' ' )
5666 val description = descriptionId?.let { context.getString(it) }
67+ val descriptionWords = description?.lowercase()?.split(' ' )
5768
5869 @Composable
5970 fun Preference () {
0 commit comments