From 525262ebfe273106d75d29342beec2df914dbd6a Mon Sep 17 00:00:00 2001 From: Dmitry Isaenko Date: Fri, 14 Jun 2019 05:06:26 +0300 Subject: [PATCH] v0.4.1: Language could be selected by user manually. Minor changes to CSS. --- src/main/java/nsusbloader/AppPreferences.java | 4 + .../Controllers/SettingsController.java | 37 ++++- src/main/java/nsusbloader/NSLMain.java | 2 +- src/main/resources/SettingsTab.fxml | 146 ++++++++++-------- src/main/resources/locale.properties | 2 + src/main/resources/locale_fra.properties | 1 + src/main/resources/locale_ita.properties | 17 +- src/main/resources/locale_kor.properties | 3 +- src/main/resources/locale_por.properties | 3 +- src/main/resources/locale_rus.properties | 2 + src/main/resources/locale_ukr.properties | 4 +- src/main/resources/res/app_light.css | 1 + 12 files changed, 142 insertions(+), 80 deletions(-) diff --git a/src/main/java/nsusbloader/AppPreferences.java b/src/main/java/nsusbloader/AppPreferences.java index b82d73f..8ca7cc5 100644 --- a/src/main/java/nsusbloader/AppPreferences.java +++ b/src/main/java/nsusbloader/AppPreferences.java @@ -1,5 +1,6 @@ package nsusbloader; +import java.util.Locale; import java.util.prefs.Preferences; public class AppPreferences { @@ -105,4 +106,7 @@ public class AppPreferences { public boolean getTfXCI(){return preferences.getBoolean("TF_XCI", false);} public void setTfXCI(boolean prop){ preferences.putBoolean("TF_XCI", prop); } + + public String getLanguage(){return preferences.get("USR_LANG", Locale.getDefault().getISO3Language());} + public void setLanguage(String langStr){preferences.put("USR_LANG", langStr);} } diff --git a/src/main/java/nsusbloader/Controllers/SettingsController.java b/src/main/java/nsusbloader/Controllers/SettingsController.java index 51caa83..96429fa 100644 --- a/src/main/java/nsusbloader/Controllers/SettingsController.java +++ b/src/main/java/nsusbloader/Controllers/SettingsController.java @@ -1,6 +1,8 @@ package nsusbloader.Controllers; import javafx.application.HostServices; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; import javafx.concurrent.Task; import javafx.fxml.FXML; import javafx.fxml.Initializable; @@ -11,9 +13,10 @@ import nsusbloader.AppPreferences; import nsusbloader.ServiceWindow; import nsusbloader.ModelControllers.UpdatesChecker; +import javax.security.auth.callback.Callback; +import java.io.File; import java.net.URL; -import java.util.List; -import java.util.ResourceBundle; +import java.util.*; public class SettingsController implements Initializable { @@ -48,6 +51,11 @@ public class SettingsController implements Initializable { @FXML private CheckBox tfXciSpprtCb; + @FXML + private Button langBtn; + @FXML + private ChoiceBox langCB; + private HostServices hs; @Override @@ -179,6 +187,31 @@ public class SettingsController implements Initializable { updates.start(); }); tfXciSpprtCb.setSelected(AppPreferences.getInstance().getTfXCI()); + + // Language settings area + URL resourceURL = this.getClass().getResource("/"); + String[] filesList = new File(resourceURL.getFile()).list(); // Screw it. This WON'T produce NullPointerException + + ObservableList langCBObsList = FXCollections.observableArrayList(); + langCBObsList.add("eng"); + + for (String jarFileName : filesList) + if (jarFileName.startsWith("locale_")) + langCBObsList.add(jarFileName.substring(7, 10)); + + langCB.setItems(langCBObsList); + if (langCBObsList.contains(AppPreferences.getInstance().getLanguage())) + langCB.getSelectionModel().select(AppPreferences.getInstance().getLanguage()); + else + langCB.getSelectionModel().select("eng"); + + langBtn.setOnAction(e->{ + AppPreferences.getInstance().setLanguage(langCB.getSelectionModel().getSelectedItem()); + ServiceWindow.getInfoNotification("", + ResourceBundle.getBundle("locale", new Locale(langCB.getSelectionModel().getSelectedItem())) + .getString("windowBodyRestartToApplyLang")); + }); + } public boolean getExpertModeSelected(){ return expertModeCb.isSelected(); } diff --git a/src/main/java/nsusbloader/NSLMain.java b/src/main/java/nsusbloader/NSLMain.java index 5e7aa9c..73b6fcd 100644 --- a/src/main/java/nsusbloader/NSLMain.java +++ b/src/main/java/nsusbloader/NSLMain.java @@ -18,7 +18,7 @@ public class NSLMain extends Application { FXMLLoader loader = new FXMLLoader(getClass().getResource("/NSLMain.fxml")); - Locale userLocale = new Locale(Locale.getDefault().getISO3Language()); // NOTE: user locale based on ISO3 Language codes + Locale userLocale = new Locale(AppPreferences.getInstance().getLanguage()); // NOTE: user locale based on ISO3 Language codes ResourceBundle rb = ResourceBundle.getBundle("locale", userLocale); loader.setResources(rb); diff --git a/src/main/resources/SettingsTab.fxml b/src/main/resources/SettingsTab.fxml index d4c2e9f..0b8de91 100644 --- a/src/main/resources/SettingsTab.fxml +++ b/src/main/resources/SettingsTab.fxml @@ -3,8 +3,10 @@ + + @@ -12,84 +14,96 @@ - - - + + + + - - - - - - - + - + - - - - - - + + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +