From 152c1f2ceaea92c5c03fb8ea154c617d2a20c400 Mon Sep 17 00:00:00 2001 From: sspanak Date: Thu, 4 Apr 2024 10:31:10 +0300 Subject: [PATCH] settings code cleanup --- .../preferences/settings/SettingsInput.java | 67 ++++++++----------- .../tt9/preferences/settings/Validators.java | 32 +++++++-- 2 files changed, 56 insertions(+), 43 deletions(-) diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsInput.java b/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsInput.java index 3b466f1b..a1030866 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsInput.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsInput.java @@ -3,16 +3,16 @@ package io.github.sspanak.tt9.preferences.settings; import android.content.Context; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import java.util.Set; -import io.github.sspanak.tt9.ime.modes.InputMode; import io.github.sspanak.tt9.languages.LanguageCollection; import io.github.sspanak.tt9.util.Logger; class SettingsInput extends SettingsHotkeys { + private final String LOG_TAG = SettingsInput.class.getSimpleName(); + SettingsInput(Context context) { super(context); } @@ -28,13 +28,6 @@ class SettingsInput extends SettingsHotkeys { } - public Set getEnabledLanguagesIdsAsStrings() { - return prefs.getStringSet("pref_languages", new HashSet<>(Collections.singletonList( - String.valueOf(LanguageCollection.getDefault(context).getId()) - ))); - } - - public void saveEnabledLanguageIds(ArrayList languageIds) { Set idsAsStrings = new HashSet<>(); for (int langId : languageIds) { @@ -45,11 +38,18 @@ class SettingsInput extends SettingsHotkeys { } + public Set getEnabledLanguagesIdsAsStrings() { + return prefs.getStringSet("pref_languages", new HashSet<>(Collections.singletonList( + String.valueOf(LanguageCollection.getDefault(context).getId()) + ))); + } + + public void saveEnabledLanguageIds(Set languageIds) { Set validLanguageIds = new HashSet<>(); for (String langId : languageIds) { - if (!Validators.validateSavedLanguage(context, Integer.parseInt(langId), "saveEnabledLanguageIds")){ + if (!Validators.validateInputLanguage(context, Integer.parseInt(langId), "saveEnabledLanguageIds")){ continue; } @@ -57,7 +57,7 @@ class SettingsInput extends SettingsHotkeys { } 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; } @@ -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() { return prefs.getInt("pref_input_language", LanguageCollection.getDefault(context).getId()); } public void saveInputLanguage(int language) { - if (Validators.validateSavedLanguage(context, language, "saveInputLanguage")){ + if (Validators.validateInputLanguage(context, language, "saveInputLanguage")){ prefsEditor.putInt("pref_input_language", language); prefsEditor.apply(); } @@ -99,21 +80,29 @@ class SettingsInput extends SettingsHotkeys { 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) { - boolean isModeValid = Validators.isIntInList( - mode, - new ArrayList<>(Arrays.asList(InputMode.MODE_123, InputMode.MODE_PREDICTIVE, InputMode.MODE_ABC)), - "saveInputMode", - "Not saving invalid input mode: " + mode - ); - + boolean isModeValid = Validators.validateInputMode(mode, LOG_TAG, "Not saving invalid input mode: " + mode); if (isModeValid) { prefsEditor.putInt("pref_input_mode", mode); 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(); + } + } } diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/settings/Validators.java b/app/src/main/java/io/github/sspanak/tt9/preferences/settings/Validators.java index ee77a23e..92f8668b 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/settings/Validators.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/settings/Validators.java @@ -3,16 +3,37 @@ package io.github.sspanak.tt9.preferences.settings; import android.content.Context; 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.util.Logger; 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 validInputModes = new ArrayList<>(Arrays.asList( + InputMode.MODE_123, + InputMode.MODE_PREDICTIVE, + InputMode.MODE_ABC + )); + + private static final ArrayList validTextCases = new ArrayList<>(Arrays.asList( + InputMode.CASE_LOWER, + InputMode.CASE_UPPER, + InputMode.CASE_CAPITALIZE + )); + static boolean doesLanguageExist(Context context, int langId) { 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)) { Logger.w(logTag, "Not saving invalid language with ID: " + langId); return false; @@ -21,9 +42,12 @@ class Validators { return true; } - @SuppressWarnings("SameParameterValue") - static boolean isIntInList(int number, ArrayList list, String logTag, String logMsg) { - if (!list.contains(number)) { + static boolean validateTextCase(int textCase, String logTag, String logMsg) { + return Validators.isIntInList(textCase, validTextCases, logTag, logMsg); + } + + private static boolean isIntInList(int number, ArrayList list, String logTag, String logMsg) { + if (list == null || !list.contains(number)) { Logger.w(logTag, logMsg); return false; }