1
0
Fork 0

settings code cleanup

This commit is contained in:
sspanak 2024-04-04 10:31:10 +03:00 committed by Dimo Karaivanov
parent 2a2393aaf9
commit 152c1f2cea
2 changed files with 56 additions and 43 deletions

View file

@ -3,16 +3,16 @@ package io.github.sspanak.tt9.preferences.settings;
import android.content.Context; import android.content.Context;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
import io.github.sspanak.tt9.ime.modes.InputMode;
import io.github.sspanak.tt9.languages.LanguageCollection; import io.github.sspanak.tt9.languages.LanguageCollection;
import io.github.sspanak.tt9.util.Logger; import io.github.sspanak.tt9.util.Logger;
class SettingsInput extends SettingsHotkeys { class SettingsInput extends SettingsHotkeys {
private final String LOG_TAG = SettingsInput.class.getSimpleName();
SettingsInput(Context context) { super(context); } SettingsInput(Context context) { super(context); }
@ -28,13 +28,6 @@ class SettingsInput extends SettingsHotkeys {
} }
public Set<String> getEnabledLanguagesIdsAsStrings() {
return prefs.getStringSet("pref_languages", new HashSet<>(Collections.singletonList(
String.valueOf(LanguageCollection.getDefault(context).getId())
)));
}
public void saveEnabledLanguageIds(ArrayList<Integer> languageIds) { public void saveEnabledLanguageIds(ArrayList<Integer> languageIds) {
Set<String> idsAsStrings = new HashSet<>(); Set<String> idsAsStrings = new HashSet<>();
for (int langId : languageIds) { for (int langId : languageIds) {
@ -45,11 +38,18 @@ class SettingsInput extends SettingsHotkeys {
} }
public Set<String> getEnabledLanguagesIdsAsStrings() {
return prefs.getStringSet("pref_languages", new HashSet<>(Collections.singletonList(
String.valueOf(LanguageCollection.getDefault(context).getId())
)));
}
public void saveEnabledLanguageIds(Set<String> languageIds) { public void saveEnabledLanguageIds(Set<String> languageIds) {
Set<String> validLanguageIds = new HashSet<>(); Set<String> validLanguageIds = new HashSet<>();
for (String langId : languageIds) { for (String langId : languageIds) {
if (!Validators.validateSavedLanguage(context, Integer.parseInt(langId), "saveEnabledLanguageIds")){ if (!Validators.validateInputLanguage(context, Integer.parseInt(langId), "saveEnabledLanguageIds")){
continue; continue;
} }
@ -57,7 +57,7 @@ class SettingsInput extends SettingsHotkeys {
} }
if (validLanguageIds.isEmpty()) { if (validLanguageIds.isEmpty()) {
Logger.w("saveEnabledLanguageIds", "Refusing to save an empty language list"); Logger.w(LOG_TAG, "Refusing to save an empty language list");
return; return;
} }
@ -66,32 +66,13 @@ class SettingsInput extends SettingsHotkeys {
} }
public int getTextCase() {
return prefs.getInt("pref_text_case", InputMode.CASE_LOWER);
}
public void saveTextCase(int textCase) {
boolean isTextCaseValid = Validators.isIntInList(
textCase,
new ArrayList<>(Arrays.asList(InputMode.CASE_CAPITALIZE, InputMode.CASE_LOWER, InputMode.CASE_UPPER)),
"saveTextCase",
"Not saving invalid text case: " + textCase
);
if (isTextCaseValid) {
prefsEditor.putInt("pref_text_case", textCase);
prefsEditor.apply();
}
}
public int getInputLanguage() { public int getInputLanguage() {
return prefs.getInt("pref_input_language", LanguageCollection.getDefault(context).getId()); return prefs.getInt("pref_input_language", LanguageCollection.getDefault(context).getId());
} }
public void saveInputLanguage(int language) { public void saveInputLanguage(int language) {
if (Validators.validateSavedLanguage(context, language, "saveInputLanguage")){ if (Validators.validateInputLanguage(context, language, "saveInputLanguage")){
prefsEditor.putInt("pref_input_language", language); prefsEditor.putInt("pref_input_language", language);
prefsEditor.apply(); prefsEditor.apply();
} }
@ -99,21 +80,29 @@ class SettingsInput extends SettingsHotkeys {
public int getInputMode() { public int getInputMode() {
return prefs.getInt("pref_input_mode", InputMode.MODE_PREDICTIVE); return prefs.getInt("pref_input_mode", Validators.DEFAULT_INPUT_MODE);
} }
public void saveInputMode(int mode) { public void saveInputMode(int mode) {
boolean isModeValid = Validators.isIntInList( boolean isModeValid = Validators.validateInputMode(mode, LOG_TAG, "Not saving invalid input mode: " + mode);
mode,
new ArrayList<>(Arrays.asList(InputMode.MODE_123, InputMode.MODE_PREDICTIVE, InputMode.MODE_ABC)),
"saveInputMode",
"Not saving invalid input mode: " + mode
);
if (isModeValid) { if (isModeValid) {
prefsEditor.putInt("pref_input_mode", mode); prefsEditor.putInt("pref_input_mode", mode);
prefsEditor.apply(); prefsEditor.apply();
} }
} }
public int getTextCase() {
return prefs.getInt("pref_text_case", Validators.DEFAULT_TEXT_CASE);
}
public void saveTextCase(int textCase) {
boolean isTextCaseValid = Validators.validateTextCase(textCase, LOG_TAG,"Not saving invalid text case: " + textCase);
if (isTextCaseValid) {
prefsEditor.putInt("pref_text_case", textCase);
prefsEditor.apply();
}
}
} }

View file

@ -3,16 +3,37 @@ package io.github.sspanak.tt9.preferences.settings;
import android.content.Context; import android.content.Context;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import io.github.sspanak.tt9.ime.modes.InputMode;
import io.github.sspanak.tt9.languages.LanguageCollection; import io.github.sspanak.tt9.languages.LanguageCollection;
import io.github.sspanak.tt9.util.Logger; import io.github.sspanak.tt9.util.Logger;
class Validators { class Validators {
public static final int DEFAULT_INPUT_MODE = InputMode.MODE_PREDICTIVE;
public static final int DEFAULT_TEXT_CASE = InputMode.CASE_LOWER;
private static final ArrayList<Integer> validInputModes = new ArrayList<>(Arrays.asList(
InputMode.MODE_123,
InputMode.MODE_PREDICTIVE,
InputMode.MODE_ABC
));
private static final ArrayList<Integer> validTextCases = new ArrayList<>(Arrays.asList(
InputMode.CASE_LOWER,
InputMode.CASE_UPPER,
InputMode.CASE_CAPITALIZE
));
static boolean doesLanguageExist(Context context, int langId) { static boolean doesLanguageExist(Context context, int langId) {
return LanguageCollection.getLanguage(context, langId) != null; return LanguageCollection.getLanguage(context, langId) != null;
} }
static boolean validateSavedLanguage(Context context, int langId, String logTag) { static boolean validateInputMode(int mode, String logTag, String logMsg) {
return Validators.isIntInList(mode, validInputModes, logTag, logMsg);
}
static boolean validateInputLanguage(Context context, int langId, String logTag) {
if (!doesLanguageExist(context, langId)) { if (!doesLanguageExist(context, langId)) {
Logger.w(logTag, "Not saving invalid language with ID: " + langId); Logger.w(logTag, "Not saving invalid language with ID: " + langId);
return false; return false;
@ -21,9 +42,12 @@ class Validators {
return true; return true;
} }
@SuppressWarnings("SameParameterValue") static boolean validateTextCase(int textCase, String logTag, String logMsg) {
static boolean isIntInList(int number, ArrayList<Integer> list, String logTag, String logMsg) { return Validators.isIntInList(textCase, validTextCases, logTag, logMsg);
if (!list.contains(number)) { }
private static boolean isIntInList(int number, ArrayList<Integer> list, String logTag, String logMsg) {
if (list == null || !list.contains(number)) {
Logger.w(logTag, logMsg); Logger.w(logTag, logMsg);
return false; return false;
} }