mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 02:38:02 +00:00
Refresh skins and fonts list after download them
This commit is contained in:
@@ -446,6 +446,15 @@ public class FSkin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static Iterable<String> getAllSkins() {
|
public static Iterable<String> getAllSkins() {
|
||||||
|
if (allSkins != null) {
|
||||||
|
allSkins.clear();
|
||||||
|
allSkins.add("Default"); //init default
|
||||||
|
final Array<String> skinDirectoryNames = getSkinDirectoryNames();
|
||||||
|
for (final String skinDirectoryName : skinDirectoryNames) {
|
||||||
|
allSkins.add(WordUtil.capitalize(skinDirectoryName.replace('_', ' ')));
|
||||||
|
}
|
||||||
|
allSkins.sort();
|
||||||
|
}
|
||||||
return allSkins;
|
return allSkins;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ import forge.util.LineReader;
|
|||||||
import forge.util.TextBounds;
|
import forge.util.TextBounds;
|
||||||
import forge.util.Utils;
|
import forge.util.Utils;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
@@ -87,8 +86,13 @@ public class FSkinFont {
|
|||||||
|
|
||||||
//delete all cached font files
|
//delete all cached font files
|
||||||
public static void deleteCachedFiles() {
|
public static void deleteCachedFiles() {
|
||||||
FileUtil.deleteDirectory(new File(ForgeConstants.FONTS_DIR));
|
final FileHandle dir = Gdx.files.absolute(ForgeConstants.FONTS_DIR);
|
||||||
FileUtil.ensureDirectoryExists(ForgeConstants.FONTS_DIR);
|
for (FileHandle fontFile : dir.list()) {
|
||||||
|
String name = fontFile.name();
|
||||||
|
if (name.endsWith(".fnt") || name.endsWith(".png")) {
|
||||||
|
fontFile.delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void updateAll() {
|
public static void updateAll() {
|
||||||
|
|||||||
@@ -91,6 +91,10 @@ public class FilesPage extends TabPage<SettingsScreen> {
|
|||||||
protected GuiDownloadService createService() {
|
protected GuiDownloadService createService() {
|
||||||
return new GuiDownloadSkins();
|
return new GuiDownloadSkins();
|
||||||
}
|
}
|
||||||
|
@Override
|
||||||
|
protected void finishCallback() {
|
||||||
|
SettingsScreen.getSettingsScreen().getSettingsPage().refreshSkinsList();
|
||||||
|
}
|
||||||
}, 0);
|
}, 0);
|
||||||
lstItems.addItem(new OptionContentDownloader(localizer.getMessage("btnDownloadCJKFonts"),
|
lstItems.addItem(new OptionContentDownloader(localizer.getMessage("btnDownloadCJKFonts"),
|
||||||
localizer.getMessage("lblDownloadCJKFonts"),
|
localizer.getMessage("lblDownloadCJKFonts"),
|
||||||
@@ -112,6 +116,10 @@ public class FilesPage extends TabPage<SettingsScreen> {
|
|||||||
}
|
}
|
||||||
return categories;
|
return categories;
|
||||||
}
|
}
|
||||||
|
@Override
|
||||||
|
protected void finishCallback() {
|
||||||
|
SettingsScreen.getSettingsScreen().getSettingsPage().refreshCJKFontsList();
|
||||||
|
}
|
||||||
}, 0);
|
}, 0);
|
||||||
//storage locations
|
//storage locations
|
||||||
final StorageOption cardPicsOption = new StorageOption(localizer.getMessage("lblCardPicsLocation"), ForgeProfileProperties.getCardPicsDir()) {
|
final StorageOption cardPicsOption = new StorageOption(localizer.getMessage("lblCardPicsLocation"), ForgeProfileProperties.getCardPicsDir()) {
|
||||||
@@ -201,9 +209,19 @@ public class FilesPage extends TabPage<SettingsScreen> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void select() {
|
public void select() {
|
||||||
new GuiDownloader(createService()).show();
|
new GuiDownloader(createService(), new Callback<Boolean>() {
|
||||||
|
@Override
|
||||||
|
public void run(Boolean finished) {
|
||||||
|
if (finished) {
|
||||||
|
finishCallback();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).show();
|
||||||
}
|
}
|
||||||
protected abstract GuiDownloadService createService();
|
protected abstract GuiDownloadService createService();
|
||||||
|
|
||||||
|
protected void finishCallback() {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private abstract class OptionContentDownloader extends FilesItem {
|
private abstract class OptionContentDownloader extends FilesItem {
|
||||||
@@ -222,11 +240,21 @@ public class FilesPage extends TabPage<SettingsScreen> {
|
|||||||
public void run(String result) {
|
public void run(String result) {
|
||||||
final String url = categories.get(result);
|
final String url = categories.get(result);
|
||||||
final String name = url.substring(url.lastIndexOf("/") + 1);
|
final String name = url.substring(url.lastIndexOf("/") + 1);
|
||||||
new GuiDownloader(new GuiDownloadZipService(name, name, url, ForgeConstants.FONTS_DIR, null, null)).show();
|
new GuiDownloader(new GuiDownloadZipService(name, name, url, ForgeConstants.FONTS_DIR, null, null), new Callback<Boolean>() {
|
||||||
|
@Override
|
||||||
|
public void run(Boolean finished) {
|
||||||
|
if (finished) {
|
||||||
|
finishCallback();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).show();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
protected abstract Map<String, String> getCategories();
|
protected abstract Map<String, String> getCategories();
|
||||||
|
|
||||||
|
protected void finishCallback() {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private abstract class StorageOption extends FilesItem {
|
private abstract class StorageOption extends FilesItem {
|
||||||
|
|||||||
@@ -37,6 +37,8 @@ import java.util.List;
|
|||||||
|
|
||||||
public class SettingsPage extends TabPage<SettingsScreen> {
|
public class SettingsPage extends TabPage<SettingsScreen> {
|
||||||
private final FGroupList<Setting> lstSettings = add(new FGroupList<>());
|
private final FGroupList<Setting> lstSettings = add(new FGroupList<>());
|
||||||
|
private final CustomSelectSetting settingSkins;
|
||||||
|
private final CustomSelectSetting settingCJKFonts;
|
||||||
|
|
||||||
public SettingsPage() {
|
public SettingsPage() {
|
||||||
super(Localizer.getInstance().getMessage("lblSettings"), Forge.hdbuttons ? FSkinImage.HDPREFERENCE : FSkinImage.SETTINGS);
|
super(Localizer.getInstance().getMessage("lblSettings"), Forge.hdbuttons ? FSkinImage.HDPREFERENCE : FSkinImage.SETTINGS);
|
||||||
@@ -84,15 +86,16 @@ public class SettingsPage extends TabPage<SettingsScreen> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}, 0);
|
}, 0);
|
||||||
lstSettings.addItem(new CustomSelectSetting(FPref.UI_SKIN, localizer.getMessage("lblTheme"),
|
settingSkins = new CustomSelectSetting(FPref.UI_SKIN, localizer.getMessage("lblTheme"),
|
||||||
localizer.getMessage("nlTheme"),
|
localizer.getMessage("nlTheme"),
|
||||||
FSkin.getAllSkins()) {
|
FSkin.getAllSkins()) {
|
||||||
@Override
|
@Override
|
||||||
public void valueChanged(String newValue) {
|
public void valueChanged(String newValue) {
|
||||||
FSkin.changeSkin(newValue);
|
FSkin.changeSkin(newValue);
|
||||||
}
|
}
|
||||||
}, 0);
|
};
|
||||||
lstSettings.addItem(new CustomSelectSetting(FPref.UI_CJK_FONT, localizer.getMessage("lblCJKFont"),
|
lstSettings.addItem(settingSkins, 0);
|
||||||
|
settingCJKFonts = new CustomSelectSetting(FPref.UI_CJK_FONT, localizer.getMessage("lblCJKFont"),
|
||||||
localizer.getMessage("nlCJKFont"),
|
localizer.getMessage("nlCJKFont"),
|
||||||
FSkinFont.getAllCJKFonts()) {
|
FSkinFont.getAllCJKFonts()) {
|
||||||
@Override
|
@Override
|
||||||
@@ -111,7 +114,8 @@ public class SettingsPage extends TabPage<SettingsScreen> {
|
|||||||
}
|
}
|
||||||
super.valueChanged(newValue);
|
super.valueChanged(newValue);
|
||||||
}
|
}
|
||||||
}, 0);
|
};
|
||||||
|
lstSettings.addItem(settingCJKFonts, 0);
|
||||||
lstSettings.addItem(new BooleanSetting(FPref.UI_LANDSCAPE_MODE,
|
lstSettings.addItem(new BooleanSetting(FPref.UI_LANDSCAPE_MODE,
|
||||||
localizer.getMessage("lblLandscapeMode"),
|
localizer.getMessage("lblLandscapeMode"),
|
||||||
localizer.getMessage("nlLandscapeMode")) {
|
localizer.getMessage("nlLandscapeMode")) {
|
||||||
@@ -549,6 +553,14 @@ public class SettingsPage extends TabPage<SettingsScreen> {
|
|||||||
7);*/
|
7);*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void refreshSkinsList() {
|
||||||
|
settingSkins.updateOptions(FSkin.getAllSkins());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void refreshCJKFontsList() {
|
||||||
|
settingCJKFonts.updateOptions(FSkinFont.getAllCJKFonts());
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void doLayout(float width, float height) {
|
protected void doLayout(float width, float height) {
|
||||||
lstSettings.setBounds(0, 0, width, height);
|
lstSettings.setBounds(0, 0, width, height);
|
||||||
@@ -618,6 +630,15 @@ public class SettingsPage extends TabPage<SettingsScreen> {
|
|||||||
FModel.getPreferences().save();
|
FModel.getPreferences().save();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void updateOptions(Iterable<String> options0) {
|
||||||
|
options.clear();
|
||||||
|
if (options0 != null) {
|
||||||
|
for (String option : options0) {
|
||||||
|
options.add(option);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void select() {
|
public void select() {
|
||||||
Forge.openScreen(new CustomSelectScreen());
|
Forge.openScreen(new CustomSelectScreen());
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ public class SettingsScreen extends TabPageScreen<SettingsScreen> {
|
|||||||
|
|
||||||
private static boolean fromHomeScreen;
|
private static boolean fromHomeScreen;
|
||||||
private static SettingsScreen settingsScreen; //keep settings screen around so scroll positions maintained
|
private static SettingsScreen settingsScreen; //keep settings screen around so scroll positions maintained
|
||||||
|
private final SettingsPage settingsPage;
|
||||||
|
|
||||||
public static void show(boolean fromHomeScreen0) {
|
public static void show(boolean fromHomeScreen0) {
|
||||||
if (settingsScreen == null) {
|
if (settingsScreen == null) {
|
||||||
@@ -40,6 +41,14 @@ public class SettingsScreen extends TabPageScreen<SettingsScreen> {
|
|||||||
return insets;
|
return insets;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public SettingsPage getSettingsPage() {
|
||||||
|
return settingsPage;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SettingsScreen getSettingsScreen() {
|
||||||
|
return settingsScreen;
|
||||||
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
private SettingsScreen() {
|
private SettingsScreen() {
|
||||||
super(new TabHeader<SettingsScreen>(new TabPage[] {
|
super(new TabHeader<SettingsScreen>(new TabPage[] {
|
||||||
@@ -51,6 +60,7 @@ public class SettingsScreen extends TabPageScreen<SettingsScreen> {
|
|||||||
return !fromHomeScreen; //don't show back button if launched from home screen
|
return !fromHomeScreen; //don't show back button if launched from home screen
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
settingsPage = (SettingsPage) tabPages[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
public FScreen getLandscapeBackdropScreen() {
|
public FScreen getLandscapeBackdropScreen() {
|
||||||
|
|||||||
Reference in New Issue
Block a user