diff --git a/src/main/java/Controller.java b/src/main/java/Controller.java index 1366912..9617b77 100644 --- a/src/main/java/Controller.java +++ b/src/main/java/Controller.java @@ -40,6 +40,7 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import java.util.Map; +import java.util.NoSuchElementException; import java.util.Objects; public class Controller { @@ -118,6 +119,18 @@ public class Controller { unlockAll_disableDlcTextArea(); } + private void emptyFields() { + creamApiDllAppliedIcon.setGlyphName("TIMES"); + creamApiConfigExists.setGlyphName("TIMES"); + appId_textfield.setText(""); + dlc_textarea.setText(""); + game_name_textfield.setText(""); + extra_protection_checkbox.setSelected(false); + offline_checkbox.setSelected(false); + unlock_all_checkbox.setSelected(false); + unlockAll_disableDlcTextArea(); + } + private void fix_dlc_textarea_prompt_text() { dlc_textarea.setPromptText("List of DLC...\r0000 = DLC Name"); } @@ -154,9 +167,13 @@ public class Controller { try { config.read(); read(); + updateIndicators(); if (!silent) { state_label.setText("Successfully reset all fields!"); } + } catch (NoSuchElementException e) { + System.err.println("Error reading cream_api.ini! " + + "This can be ignored if setting up CreamAPI for the first time."); } catch (NullPointerException e) { System.err.println("Can't fill out fields, no configuration file set!"); if (!silent) { @@ -165,6 +182,34 @@ public class Controller { } } + private void updateIndicators() { + try { + boolean is64Bit = false; + if (!steamApiPathString.isEmpty()) { + Path dllPath = Paths.get(steamApiPathString); + if (dllPath.endsWith("steam_api64.dll")) { + is64Bit = true; + } + InputStream is = Files.newInputStream(dllPath); + String md5 = DigestUtils.md5Hex(is); + boolean isSameFile = Objects.equals(md5, handler.getDllMd5(is64Bit)); + if (isSameFile) { + creamApiDllAppliedIcon.setGlyphName("CHECK"); + } else { + creamApiDllAppliedIcon.setGlyphName("TIMES"); + } + Path configPath = Paths.get(config.getPath()); + if (Files.exists(configPath) && Files.size(configPath) != 0L) { + creamApiConfigExists.setGlyphName("CHECK"); + } else { + creamApiConfigExists.setGlyphName("TIMES"); + } + } + } catch (IOException e) { + System.err.println("No file found, could not update visual indicators!"); + } + } + public void save() { Service s = new Service() { @Override @@ -280,15 +325,16 @@ public class Controller { final File file = chooser.showOpenDialog(path_button.getScene().getWindow()); try { config.setConfig(file.getParent() + "\\cream_api.ini"); - path_textfield.setText(file.getParent()); - steamApiPathString = file.getAbsolutePath(); - reset(true); - state_label.setText("Ready."); } catch (ConfigurationException | IOException e) { e.printStackTrace(); } catch (NullPointerException e) { System.err.println("Could not set config file location! Did you cancel the file chooser?"); } + path_textfield.setText(file.getParent()); + steamApiPathString = file.getAbsolutePath(); + emptyFields(); + reset(true); + state_label.setText("Ready."); } /** diff --git a/src/main/java/util/CreamApiConfig.java b/src/main/java/util/CreamApiConfig.java index 6355e54..45a9ef9 100644 --- a/src/main/java/util/CreamApiConfig.java +++ b/src/main/java/util/CreamApiConfig.java @@ -29,6 +29,11 @@ public class CreamApiConfig { private static final Configurations CONFIGS = new Configurations(); private INIConfiguration config; + + public String getPath() { + return path; + } + private String path = "cream_api.ini"; private Integer appId; private String language; @@ -57,6 +62,9 @@ public class CreamApiConfig { try { read(); + } catch (NoSuchElementException e) { + System.err.println("Error reading cream_api.ini! " + + "This can be ignored if setting up CreamAPI for the first time."); } catch (NullPointerException e) { System.err.println("Can't fill out fields, no configuration file set!"); } @@ -69,22 +77,17 @@ public class CreamApiConfig { return configInstance; } - public void read() throws NullPointerException { - try { - appId = config.getInt("steam.appid"); - language = config.getString("steam.language"); - if (language == null) { - language = "english"; - } - unlockAll = config.getBoolean("steam.unlockall"); - extraProtection = config.getBoolean("steam.extraprotection"); - forceOffline = config.getBoolean("steam.forceoffline"); - final SubnodeConfiguration dlc_section = config.getSection("dlc"); - dlc_section.getKeys().forEachRemaining(k -> dlc.put(Integer.parseInt(k), dlc_section.getString(k))); - } catch (NoSuchElementException e) { - System.err.println("Error reading cream_api.ini! " + - "This can be ignored if setting up CreamAPI for the first time."); + public void read() throws NullPointerException, NoSuchElementException { + appId = config.getInt("steam.appid"); + language = config.getString("steam.language"); + if (language == null) { + language = "english"; } + unlockAll = config.getBoolean("steam.unlockall"); + extraProtection = config.getBoolean("steam.extraprotection"); + forceOffline = config.getBoolean("steam.forceoffline"); + final SubnodeConfiguration dlc_section = config.getSection("dlc"); + dlc_section.getKeys().forEachRemaining(k -> dlc.put(Integer.parseInt(k), dlc_section.getString(k))); } public void sync() throws ConfigurationException { diff --git a/src/main/resources/mainWindow.fxml b/src/main/resources/mainWindow.fxml index 6e916ce..a3355a6 100644 --- a/src/main/resources/mainWindow.fxml +++ b/src/main/resources/mainWindow.fxml @@ -104,7 +104,7 @@ - +