settings code cleanup
This commit is contained in:
parent
2a2393aaf9
commit
152c1f2cea
2 changed files with 56 additions and 43 deletions
|
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue