Add CJK font setting and dowloader for mobile port

This commit is contained in:
Lyu Zong-Hong
2021-03-05 20:25:07 +09:00
parent e175ad2d65
commit 9ae07284d8
12 changed files with 160 additions and 3 deletions

View File

@@ -60,7 +60,28 @@ public class SettingsPage extends TabPage<SettingsScreen> {
FLanguage.getAllLanguages()) {
@Override
public void valueChanged(String newValue) {
// if the new locale needs to use CJK font, disallow change if UI_CJK_FONT is not set yet
ForgePreferences prefs = FModel.getPreferences();
if (prefs.getPref(FPref.UI_CJK_FONT).equals("") &&
(newValue.equals("zh-CN") || newValue.equals("ja-JP"))) {
String message = "Please download CJK font (from \"Files\"), and set it before change language.";
if (newValue.equals("ja-JP")) {
message += "\nJapanese please use \"ipaexg\".";
}
FOptionPane.showMessageDialog(message, "Please set CJK Font");
return;
}
FLanguage.changeLanguage(newValue);
FOptionPane.showConfirmDialog(localizer.getMessage("lblRestartForgeDescription"), localizer.getMessage("lblRestartForge"), localizer.getMessage("lblRestart"), localizer.getMessage("lblLater"), new Callback<Boolean>() {
@Override
public void run(Boolean result) {
if (result) {
Forge.restart(true);
}
}
});
}
}, 0);
lstSettings.addItem(new CustomSelectSetting(FPref.UI_SKIN, localizer.getMessage("lblTheme"),
@@ -71,6 +92,26 @@ public class SettingsPage extends TabPage<SettingsScreen> {
FSkin.changeSkin(newValue);
}
}, 0);
lstSettings.addItem(new CustomSelectSetting(FPref.UI_CJK_FONT, localizer.getMessage("lblCJKFont"),
localizer.getMessage("nlCJKFont"),
FSkinFont.getAllCJKFonts()) {
@Override
public void valueChanged(String newValue) {
ForgePreferences prefs = FModel.getPreferences();
if (newValue.equals("None")) {
// If locale needs to use CJK fonts, disallow change to None
String locale = prefs.getPref(FPref.UI_LANGUAGE);
if (locale.equals("zh-CN") || locale.equals("ja-JP")) {
return;
}
newValue = "";
}
if (newValue.equals(prefs.getPref(FPref.UI_CJK_FONT))) {
return;
}
super.valueChanged(newValue);
}
}, 0);
lstSettings.addItem(new BooleanSetting(FPref.UI_LANDSCAPE_MODE,
localizer.getMessage("lblLandscapeMode"),
localizer.getMessage("nlLandscapeMode")) {
@@ -592,10 +633,10 @@ public class SettingsPage extends TabPage<SettingsScreen> {
lstOptions.setListItemRenderer(new FList.DefaultListItemRenderer<String>() {
@Override
public boolean tap(Integer index, String value, float x, float y, int count) {
Forge.back();
if (!value.equals(currentValue)) {
valueChanged(value);
}
Forge.back();
return true;
}