From 31859fbf9d6fa834360582e3261f4bd88e51a5b6 Mon Sep 17 00:00:00 2001 From: sspanak Date: Tue, 1 Oct 2024 11:56:49 +0300 Subject: [PATCH] regression: fixed 0-key chars corruption when the saved list was empty --- .../PreferenceSentencePunctuationList.java | 3 ++- .../PreferenceSpecialCharList.java | 4 +++- .../settings/SettingsPunctuation.java | 21 ++++++++++++------- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/punctuation/PreferenceSentencePunctuationList.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/punctuation/PreferenceSentencePunctuationList.java index b890a3df..522e1818 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/punctuation/PreferenceSentencePunctuationList.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/punctuation/PreferenceSentencePunctuationList.java @@ -7,6 +7,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import io.github.sspanak.tt9.R; +import io.github.sspanak.tt9.preferences.settings.SettingsStore; public class PreferenceSentencePunctuationList extends AbstractPreferenceCharList { public static final String NAME = "punctuation_order_sentence"; @@ -35,7 +36,7 @@ public class PreferenceSentencePunctuationList extends AbstractPreferenceCharLis public boolean validateCurrentChars() { StringBuilder missingCharList = new StringBuilder(); - for (char c : getSettings().mandatoryPunctuation) { + for (char c : SettingsStore.MANDATORY_PUNCTUATION) { if (currentChars.indexOf(c) == -1) { missingCharList.append(" ").append(c).append(","); } diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/punctuation/PreferenceSpecialCharList.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/punctuation/PreferenceSpecialCharList.java index b844e0a8..d7bb96e2 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/punctuation/PreferenceSpecialCharList.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/punctuation/PreferenceSpecialCharList.java @@ -6,6 +6,8 @@ import android.util.AttributeSet; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import io.github.sspanak.tt9.preferences.settings.SettingsStore; + public class PreferenceSpecialCharList extends AbstractPreferenceCharList { public static final String NAME = "punctuation_order_special_chars"; @@ -23,7 +25,7 @@ public class PreferenceSpecialCharList extends AbstractPreferenceCharList { @NonNull @Override protected char[] getMandatoryChars() { - return getSettings().mandatorySpecialChars; + return SettingsStore.MANDATORY_SPECIAL_CHARS; } @Override diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsPunctuation.java b/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsPunctuation.java index 8612757c..13752a20 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsPunctuation.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsPunctuation.java @@ -9,23 +9,26 @@ import java.util.ArrayList; import io.github.sspanak.tt9.languages.Language; class SettingsPunctuation extends SettingsInput { + private final static String KEY_PREFIX_PUNCTUATION = "pref_punctuation_"; + private final static String KEY_PREFIX_SPECIAL = "pref_special_chars_"; + public final static char[] MANDATORY_PUNCTUATION = new char[] {'\'', '"', '-'}; + public final static char[] MANDATORY_SPECIAL_CHARS = new char[] {' ', '\n'}; + + SettingsPunctuation(Context context) { super(context); } - public final char[] mandatoryPunctuation = new char[] {'\'', '"', '-'}; - public final char[] mandatorySpecialChars = new char[] {' ', '\n'}; - - public void savePunctuation(@NonNull Language language, @NonNull String punctuation) { - prefsEditor.putString("pref_punctuation_" + language.getId(), punctuation); + prefsEditor.putString(KEY_PREFIX_PUNCTUATION + language.getId(), punctuation); prefsEditor.apply(); } public void saveSpecialChars(@NonNull Language language, @NonNull String specialChars) { - prefsEditor.putString("pref_special_chars_" + language.getId(), specialChars); + String safeChars = specialChars.replace("\n", "⏎"); + prefsEditor.putString(KEY_PREFIX_SPECIAL + language.getId(), safeChars); prefsEditor.apply(); } @@ -47,7 +50,7 @@ class SettingsPunctuation extends SettingsInput { } return getCharsAsList( - prefs.getString("pref_punctuation_" + language.getId(), null), + prefs.getString(KEY_PREFIX_PUNCTUATION + language.getId(), null), language.getKeyCharacters(1) ); } @@ -59,8 +62,10 @@ class SettingsPunctuation extends SettingsInput { return new ArrayList<>(); } + String safeChars = prefs.getString(KEY_PREFIX_SPECIAL + language.getId(), null); + return getCharsAsList( - prefs.getString("pref_special_chars_" + language.getId(), null), + safeChars == null ? null : safeChars.replace("⏎", "\n"), language.getKeyCharacters(0) ); }