From 198cb4f90ad4f91f6520727c3124d05cbc1075b2 Mon Sep 17 00:00:00 2001 From: Peter Date: Sat, 27 Jul 2019 10:17:30 +0200 Subject: [PATCH] Android: Add Language selector in Settings --- .../src/forge/assets/FLanguage.java | 42 +++++++++++++++++++ .../forge/screens/settings/SettingsPage.java | 9 ++++ 2 files changed, 51 insertions(+) create mode 100644 forge-gui-mobile/src/forge/assets/FLanguage.java diff --git a/forge-gui-mobile/src/forge/assets/FLanguage.java b/forge-gui-mobile/src/forge/assets/FLanguage.java new file mode 100644 index 00000000000..728ca8cf0be --- /dev/null +++ b/forge-gui-mobile/src/forge/assets/FLanguage.java @@ -0,0 +1,42 @@ +package forge.assets; + +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.files.FileHandle; +import forge.model.FModel; +import forge.properties.ForgeConstants; +import forge.properties.ForgePreferences; +import forge.properties.ForgePreferences.FPref; + +import java.util.ArrayList; +import java.util.List; + +public class FLanguage { + + public static void changeLanguage(final String languageName) { + final ForgePreferences prefs = FModel.getPreferences(); + if (languageName.equals(prefs.getPref(FPref.UI_LANGUAGE))) { return; } + + //save language preference + prefs.setPref(FPref.UI_LANGUAGE, languageName); + prefs.save(); + } + + /** + * Gets the languages. + * + * @return the languages + */ + public static Iterable getAllLanguages() { + final List allLanguages = new ArrayList(); + + final FileHandle dir = Gdx.files.absolute(ForgeConstants.LANG_DIR); + for (FileHandle languageFile : dir.list()) { + String languageName = languageFile.name(); + if (!languageName.endsWith(".properties")) { continue; } + allLanguages.add(languageName.replace(".properties", "")); + } + + return allLanguages; + } + +} diff --git a/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java b/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java index f13dafbc3b2..760b93ce9bc 100644 --- a/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java +++ b/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java @@ -6,6 +6,7 @@ import forge.Graphics; import forge.MulliganDefs; import forge.StaticData; import forge.ai.AiProfileUtil; +import forge.assets.FLanguage; import forge.assets.FSkin; import forge.assets.FSkinColor; import forge.assets.FSkinFont; @@ -48,6 +49,14 @@ public class SettingsPage extends TabPage { lstSettings.addGroup("Sound Options"); //General Settings + lstSettings.addItem(new CustomSelectSetting(FPref.UI_LANGUAGE, "Language", + "Select Language (Excluded Game part. Still a work in progress) (RESTART REQUIRED)", + FLanguage.getAllLanguages()) { + @Override + public void valueChanged(String newValue) { + FLanguage.changeLanguage(newValue); + } + }, 0); lstSettings.addItem(new CustomSelectSetting(FPref.UI_SKIN, "Theme", "Sets the theme that determines how display components are skinned.", FSkin.getAllSkins()) {