Skip to content

Commit e56ca49

Browse files
committed
fix: use proper sorting in keyboard language selection dialogs
Refs: #239
1 parent 2194ea4 commit e56ca49

4 files changed

Lines changed: 17 additions & 7 deletions

File tree

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1414

1515
### Fixed
1616
- Keyboard language management dialog now respects `Use English language` preference ([#238])
17+
- Fixed incorrect sorting in keyboard language selection dialog ([#239])
1718

1819
## [1.4.0] - 2025-08-22
1920
### Added
@@ -87,6 +88,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
8788
[#222]: https://github.com/FossifyOrg/Keyboard/issues/222
8889
[#230]: https://github.com/FossifyOrg/Keyboard/issues/230
8990
[#238]: https://github.com/FossifyOrg/Keyboard/issues/238
91+
[#239]: https://github.com/FossifyOrg/Keyboard/issues/239
9092

9193
[Unreleased]: https://github.com/FossifyOrg/Keyboard/compare/1.4.0...HEAD
9294
[1.4.0]: https://github.com/FossifyOrg/Keyboard/compare/1.3.0...1.4.0

app/src/main/kotlin/org/fossify/keyboard/adapters/ManageKeyboardLanguagesAdapter.kt

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,13 @@ import android.view.ViewGroup
66
import androidx.recyclerview.widget.RecyclerView
77
import org.fossify.commons.views.MyAppCompatCheckbox
88
import org.fossify.keyboard.R
9-
import org.fossify.keyboard.extensions.getKeyboardLanguageText
109
import org.fossify.keyboard.helpers.Config
1110

11+
typealias LanguageItem = Pair<Int, String>
12+
1213
internal class ManageKeyboardLanguagesAdapter(
1314
private val config: Config,
14-
private var languagesList: List<Int>,
15+
private var languagesList: List<LanguageItem>,
1516
) : RecyclerView.Adapter<ManageKeyboardLanguagesAdapter.MyViewHolder>() {
1617
private val selectedLanguages = config.selectedLanguages
1718

@@ -28,14 +29,14 @@ internal class ManageKeyboardLanguagesAdapter(
2829
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
2930
val item = languagesList[position]
3031
holder.languageCheckboxItem.apply {
31-
text = context.getKeyboardLanguageText(item)
32-
isChecked = selectedLanguages.contains(item)
32+
text = item.second
33+
isChecked = selectedLanguages.contains(item.first)
3334

3435
setOnClickListener {
3536
if (isChecked) {
36-
selectedLanguages.add(item)
37+
selectedLanguages.add(item.first)
3738
} else {
38-
selectedLanguages.remove(item)
39+
selectedLanguages.remove(item.first)
3940
}
4041
}
4142
}

app/src/main/kotlin/org/fossify/keyboard/dialogs/ManageKeyboardLanguagesDialog.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import org.fossify.keyboard.R
77
import org.fossify.keyboard.adapters.ManageKeyboardLanguagesAdapter
88
import org.fossify.keyboard.databinding.DialogManageKeyboardLanguagesBinding
99
import org.fossify.keyboard.extensions.config
10+
import org.fossify.keyboard.extensions.getKeyboardLanguageText
1011
import org.fossify.keyboard.helpers.SUPPORTED_LANGUAGES
1112

1213
class ManageKeyboardLanguagesDialog(
@@ -15,7 +16,11 @@ class ManageKeyboardLanguagesDialog(
1516
) {
1617
init {
1718
val binding = DialogManageKeyboardLanguagesBinding.inflate(activity.layoutInflater)
18-
val adapter = ManageKeyboardLanguagesAdapter(activity.config, SUPPORTED_LANGUAGES)
19+
val languageItems = SUPPORTED_LANGUAGES.map {
20+
it to activity.getKeyboardLanguageText(it)
21+
}.sortedBy { it.second }
22+
23+
val adapter = ManageKeyboardLanguagesAdapter(activity.config, languageItems)
1924
binding.keyboardLanguageList.adapter = adapter
2025

2126
activity.getAlertDialogBuilder()

app/src/main/kotlin/org/fossify/keyboard/extensions/Context.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,8 @@ fun Context.getKeyboardLanguagesRadioItems(): ArrayList<RadioItem> {
270270
}
271271

272272
return selectedLanguagesRadioItems
273+
.sortedBy { it.title }
274+
.toMutableList() as ArrayList<RadioItem>
273275
}
274276

275277
fun Context.getKeyboardLanguageText(language: Int): String {

0 commit comments

Comments
 (0)