diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/AppearanceScreen.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/AppearanceScreen.java index f1782182..a8baaf39 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/AppearanceScreen.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/AppearanceScreen.java @@ -1,6 +1,13 @@ package io.github.sspanak.tt9.preferences.screens.appearance; +import androidx.preference.MultiSelectListPreference; + +import java.util.ArrayList; +import java.util.Set; + import io.github.sspanak.tt9.R; +import io.github.sspanak.tt9.languages.Language; +import io.github.sspanak.tt9.languages.LanguageCollection; import io.github.sspanak.tt9.preferences.PreferencesActivity; import io.github.sspanak.tt9.preferences.items.ItemDropDown; import io.github.sspanak.tt9.preferences.items.ItemSwitch; @@ -20,6 +27,7 @@ public class AppearanceScreen extends BaseScreenFragment { createMainSection(); createHacksSection(); resetFontSize(true); + populateHiddenLanguages(); } private void createMainSection() { @@ -80,4 +88,32 @@ public class AppearanceScreen extends BaseScreenFragment { item.populate().enableClickHandler(); } } + + private void populateHiddenLanguages() { + MultiSelectListPreference hiddenLanguagesPref = findPreference("pref_hidden_languages"); + if (hiddenLanguagesPref == null) + return; + + ArrayList allLanguages = LanguageCollection.getAll(true); + if (allLanguages.isEmpty()) + return; + + Set hiddenLanguages = activity.getSettings().getHiddenLanguages(); + hiddenLanguages.addAll(activity.getSettings().getEnabledLanguageIds()); + ArrayList languageOrder = new ArrayList<>(hiddenLanguages); + + String[] entries = new String[languageOrder.size()]; + for (Language lang : allLanguages) { + int idx = languageOrder.indexOf(lang.getId()); + if (idx != -1) + entries[idx] = lang.getName(); + } + + String[] entryValues = new String[languageOrder.size()]; + for (int i = 0; i < languageOrder.size(); ++i) + entryValues[i] = String.valueOf(languageOrder.get(i)); + + hiddenLanguagesPref.setEntries(entries); + hiddenLanguagesPref.setEntryValues(entryValues); + } } diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsUI.java b/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsUI.java index 80083125..c2f20f1d 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsUI.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsUI.java @@ -6,6 +6,9 @@ import android.view.Gravity; import androidx.appcompat.app.AppCompatDelegate; +import java.util.HashSet; +import java.util.Set; + import io.github.sspanak.tt9.BuildConfig; import io.github.sspanak.tt9.R; import io.github.sspanak.tt9.util.Logger; @@ -157,6 +160,17 @@ public class SettingsUI extends SettingsTyping { prefsEditor.apply(); } + public Set getHiddenLanguages() { + HashSet out = new HashSet<>(); + Set hiddenLanguages = prefs.getStringSet("pref_hidden_languages", null); + + if (hiddenLanguages != null) + for (String v : hiddenLanguages) + out.add(Integer.parseInt(v)); + + return out; + } + public int getMainViewLayout() { return getStringifiedInt("pref_layout_type", DEFAULT_LAYOUT); } diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyNumber2to9.java b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyNumber2to9.java index 23586c1b..c2dbb6db 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyNumber2to9.java +++ b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyNumber2to9.java @@ -1,12 +1,16 @@ package io.github.sspanak.tt9.ui.main.keys; import android.content.Context; +import android.content.SharedPreferences; import android.util.AttributeSet; import androidx.annotation.NonNull; +import androidx.preference.PreferenceManager; import java.util.ArrayList; +import java.util.Arrays; import java.util.Locale; +import java.util.Set; import io.github.sspanak.tt9.ime.TraditionalT9; import io.github.sspanak.tt9.ime.modes.InputMode; @@ -36,6 +40,9 @@ public class SoftKeyNumber2to9 extends SoftKeyNumber { @Override protected String getTitle() { if (tt9 != null && !tt9.isInputModeNumeric()) { + Language language = tt9.getLanguage(); + if (language != null && tt9.getSettings().getHiddenLanguages().contains(language.getId())) + return getLocalizedNumber(getNumber(getId())); return getKeyChars(tt9, getNumber(getId())); } else { return getLocalizedNumber(getNumber(getId())); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b310e0d3..47ff84a1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -277,4 +277,8 @@ No Internet connection Voice input is not available Recalculate Bottom Padding + + + Hide letters + Hide letters from keyboard for specified languages diff --git a/app/src/main/res/xml/prefs_screen_appearance.xml b/app/src/main/res/xml/prefs_screen_appearance.xml index 583a506c..1b47e8a2 100644 --- a/app/src/main/res/xml/prefs_screen_appearance.xml +++ b/app/src/main/res/xml/prefs_screen_appearance.xml @@ -24,6 +24,12 @@ app:title="@string/pref_drag_resize" app:summary="@string/pref_drag_resize_summary" /> + +