Skip to content

Commit 9646907

Browse files
committed
Refactored language constants to a single enum
1 parent 763ea43 commit 9646907

File tree

4 files changed

+76
-68
lines changed

4 files changed

+76
-68
lines changed

app/src/main/kotlin/com/simplemobiletools/keyboard/extensions/Context.kt

Lines changed: 3 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -149,40 +149,9 @@ fun Context.setupKeyboardDialogStuff(
149149
}
150150

151151
fun Context.getKeyboardLanguages(): ArrayList<RadioItem> {
152-
return arrayListOf(
153-
RadioItem(LANGUAGE_BENGALI, getKeyboardLanguageText(LANGUAGE_BENGALI)),
154-
RadioItem(LANGUAGE_BULGARIAN, getKeyboardLanguageText(LANGUAGE_BULGARIAN)),
155-
RadioItem(LANGUAGE_ENGLISH_QWERTY, getKeyboardLanguageText(LANGUAGE_ENGLISH_QWERTY)),
156-
RadioItem(LANGUAGE_ENGLISH_QWERTZ, getKeyboardLanguageText(LANGUAGE_ENGLISH_QWERTZ)),
157-
RadioItem(LANGUAGE_ENGLISH_DVORAK, getKeyboardLanguageText(LANGUAGE_ENGLISH_DVORAK)),
158-
RadioItem(LANGUAGE_FRENCH, getKeyboardLanguageText(LANGUAGE_FRENCH)),
159-
RadioItem(LANGUAGE_GERMAN, getKeyboardLanguageText(LANGUAGE_GERMAN)),
160-
RadioItem(LANGUAGE_GREEK, getKeyboardLanguageText(LANGUAGE_GREEK)),
161-
RadioItem(LANGUAGE_LITHUANIAN, getKeyboardLanguageText(LANGUAGE_LITHUANIAN)),
162-
RadioItem(LANGUAGE_ROMANIAN, getKeyboardLanguageText(LANGUAGE_ROMANIAN)),
163-
RadioItem(LANGUAGE_RUSSIAN, getKeyboardLanguageText(LANGUAGE_RUSSIAN)),
164-
RadioItem(LANGUAGE_SLOVENIAN, getKeyboardLanguageText(LANGUAGE_SLOVENIAN)),
165-
RadioItem(LANGUAGE_SPANISH, getKeyboardLanguageText(LANGUAGE_SPANISH)),
166-
RadioItem(LANGUAGE_TURKISH_Q, getKeyboardLanguageText(LANGUAGE_TURKISH_Q)),
167-
)
152+
val languages = Language.values().map { RadioItem(it.ordinal, it.getName(this)) }
153+
return ArrayList(languages)
168154
}
169155

170-
fun Context.getKeyboardLanguageText(language: Int): String {
171-
return when (language) {
172-
LANGUAGE_BENGALI -> getString(R.string.translation_bengali)
173-
LANGUAGE_BULGARIAN -> getString(R.string.translation_bulgarian)
174-
LANGUAGE_ENGLISH_DVORAK -> "${getString(R.string.translation_english)} (DVORAK)"
175-
LANGUAGE_ENGLISH_QWERTZ -> "${getString(R.string.translation_english)} (QWERTZ)"
176-
LANGUAGE_FRENCH -> getString(R.string.translation_french)
177-
LANGUAGE_GERMAN -> getString(R.string.translation_german)
178-
LANGUAGE_GREEK -> getString(R.string.translation_greek)
179-
LANGUAGE_LITHUANIAN -> getString(R.string.translation_lithuanian)
180-
LANGUAGE_ROMANIAN -> getString(R.string.translation_romanian)
181-
LANGUAGE_RUSSIAN -> getString(R.string.translation_russian)
182-
LANGUAGE_SLOVENIAN -> getString(R.string.translation_slovenian)
183-
LANGUAGE_SPANISH -> getString(R.string.translation_spanish)
184-
LANGUAGE_TURKISH_Q -> "${getString(R.string.translation_turkish)} (Q)"
185-
else -> "${getString(R.string.translation_english)} (QWERTY)"
186-
}
187-
}
156+
fun Context.getKeyboardLanguageText(language: Int) = Language.getKeyboardName(this, language)
188157

app/src/main/kotlin/com/simplemobiletools/keyboard/helpers/Config.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@ class Config(context: Context) : BaseConfig(context) {
4444
private fun getDefaultLanguage(): Int {
4545
val conf = context.resources.configuration
4646
return if (conf.locale.toString().toLowerCase(Locale.getDefault()).startsWith("ru_")) {
47-
LANGUAGE_RUSSIAN
47+
Language.RUSSIAN.ordinal
4848
} else {
49-
LANGUAGE_ENGLISH_QWERTY
49+
Language.ENGLISH_QWERTY.ordinal
5050
}
5151
}
5252
}

app/src/main/kotlin/com/simplemobiletools/keyboard/helpers/Constants.kt

Lines changed: 70 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
package com.simplemobiletools.keyboard.helpers
22

3+
import android.content.Context
4+
import androidx.annotation.StringRes
5+
import com.simplemobiletools.keyboard.R
6+
37
const val SHIFT_OFF = 0
48
const val SHIFT_ON_ONE_CHAR = 1
59
const val SHIFT_ON_PERMANENT = 2
@@ -21,20 +25,72 @@ const val SHOW_NUMBERS_ROW = "show_numbers_row"
2125
const val ITEM_SECTION_LABEL = 0
2226
const val ITEM_CLIP = 1
2327

24-
const val LANGUAGE_ENGLISH_QWERTY = 0
25-
const val LANGUAGE_RUSSIAN = 1
26-
const val LANGUAGE_FRENCH = 2
27-
const val LANGUAGE_ENGLISH_QWERTZ = 3
28-
const val LANGUAGE_SPANISH = 4
29-
const val LANGUAGE_GERMAN = 5
30-
const val LANGUAGE_ENGLISH_DVORAK = 6
31-
const val LANGUAGE_ROMANIAN = 7
32-
const val LANGUAGE_SLOVENIAN = 8
33-
const val LANGUAGE_BULGARIAN = 9
34-
const val LANGUAGE_TURKISH_Q = 10
35-
const val LANGUAGE_LITHUANIAN = 11
36-
const val LANGUAGE_BENGALI = 12
37-
const val LANGUAGE_GREEK = 13
28+
enum class Language(@StringRes private val stringRes: Int, private val layout: Int) {
29+
ENGLISH_QWERTY(
30+
R.string.translation_english, R.xml.keys_letters_english_qwerty
31+
),
32+
RUSSIAN(
33+
R.string.translation_russian, R.xml.keys_letters_russian
34+
),
35+
FRENCH(
36+
R.string.translation_french, R.xml.keys_letters_french
37+
),
38+
ENGLISH_QWERTZ(
39+
R.string.translation_english, R.xml.keys_letters_english_qwertz
40+
),
41+
SPANISH(
42+
R.string.translation_spanish, R.string.translation_spanish
43+
),
44+
GERMAN(
45+
R.string.translation_german, R.xml.keys_letters_german
46+
),
47+
ENGLISH_DVORAK(
48+
R.string.translation_english, R.xml.keys_letters_english_dvorak
49+
),
50+
ROMANIAN(
51+
R.string.translation_romanian, R.xml.keys_letters_romanian
52+
),
53+
SLOVENIAN(
54+
R.string.translation_slovenian, R.xml.keys_letters_slovenian
55+
),
56+
BULGARIAN(
57+
R.string.translation_bulgarian, R.xml.keys_letters_bulgarian
58+
),
59+
TURKISH_Q(
60+
R.string.translation_turkish, R.xml.keys_letters_turkish_q
61+
),
62+
LITHUANIAN(
63+
R.string.translation_lithuanian, R.xml.keys_letters_lithuanian
64+
),
65+
BENGALI(
66+
R.string.translation_bengali, R.xml.keys_letters_bengali
67+
),
68+
GREEK(
69+
R.string.translation_greek, R.xml.keys_letters_greek
70+
);
71+
72+
fun getName(context: Context): String {
73+
with(context) {
74+
return when (val language = this@Language) {
75+
ENGLISH_DVORAK -> "${getString(language.stringRes)} (DVORAK)"
76+
ENGLISH_QWERTY -> "${getString(language.stringRes)} (QWERTY)"
77+
ENGLISH_QWERTZ -> "${getString(language.stringRes)} (QWERTZ)"
78+
else -> getString(language.stringRes)
79+
}
80+
}
81+
}
82+
83+
companion object {
84+
fun getKeyboardLayout(keyboardLanguage: Int): Int {
85+
return Language.values().getOrElse(keyboardLanguage) { ENGLISH_QWERTY }.layout
86+
}
87+
88+
fun getKeyboardName(context: Context, language: Int): String {
89+
return Language.values().getOrElse(language) { ENGLISH_QWERTY }.getName(context)
90+
}
91+
}
92+
93+
}
3894

3995
// keyboard height multiplier options
4096
const val KEYBOARD_HEIGHT_MULTIPLIER_SMALL = 1

app/src/main/kotlin/com/simplemobiletools/keyboard/services/SimpleKeyboardIME.kt

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -270,24 +270,7 @@ class SimpleKeyboardIME : InputMethodService(), MyKeyboardView.OnKeyboardActionL
270270
}
271271
}
272272

273-
private fun getKeyboardLayoutXML(): Int {
274-
return when (baseContext.config.keyboardLanguage) {
275-
LANGUAGE_BENGALI -> R.xml.keys_letters_bengali
276-
LANGUAGE_BULGARIAN -> R.xml.keys_letters_bulgarian
277-
LANGUAGE_ENGLISH_DVORAK -> R.xml.keys_letters_english_dvorak
278-
LANGUAGE_ENGLISH_QWERTZ -> R.xml.keys_letters_english_qwertz
279-
LANGUAGE_FRENCH -> R.xml.keys_letters_french
280-
LANGUAGE_GERMAN -> R.xml.keys_letters_german
281-
LANGUAGE_GREEK -> R.xml.keys_letters_greek
282-
LANGUAGE_LITHUANIAN -> R.xml.keys_letters_lithuanian
283-
LANGUAGE_ROMANIAN -> R.xml.keys_letters_romanian
284-
LANGUAGE_RUSSIAN -> R.xml.keys_letters_russian
285-
LANGUAGE_SLOVENIAN -> R.xml.keys_letters_slovenian
286-
LANGUAGE_SPANISH -> R.xml.keys_letters_spanish_qwerty
287-
LANGUAGE_TURKISH_Q -> R.xml.keys_letters_turkish_q
288-
else -> R.xml.keys_letters_english_qwerty
289-
}
290-
}
273+
private fun getKeyboardLayoutXML() = Language.getKeyboardLayout(baseContext.config.keyboardLanguage)
291274

292275
override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) {
293276
keyboardView?.setupKeyboard()

0 commit comments

Comments
 (0)