diff --git a/src/main/java/Controller.java b/src/main/java/Controller.java
index f3d69b8..32b9294 100644
--- a/src/main/java/Controller.java
+++ b/src/main/java/Controller.java
@@ -13,11 +13,13 @@
* .
*/
+import de.jensd.fx.glyphs.fontawesome.FontAwesomeIconView;
import javafx.beans.value.ChangeListener;
import javafx.collections.FXCollections;
import javafx.concurrent.Service;
import javafx.concurrent.Task;
import javafx.fxml.FXML;
+import javafx.scene.paint.Color;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
@@ -40,12 +42,20 @@ import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.util.List;
import java.util.Map;
+import java.util.NoSuchElementException;
import java.util.Objects;
public class Controller {
private static final String REGEX = "(?steam_api(?:64)?.dll)$";
+ public Label creamApiDllApplied;
+ public Label creamApiConfigExists;
+ public FontAwesomeIconView creamApiDllAppliedIcon;
+ public FontAwesomeIconView creamApiConfigExistsIcon;
private CreamApiDllHandler handler = null;
+ private boolean is64Bit;
+ private boolean isSameFile;
+
{
try {
handler = CreamApiDllHandler.getInstance();
@@ -102,7 +112,6 @@ public class Controller {
generate_tooltips();
fix_dlc_textarea_prompt_text();
reset(true);
- state_label.setText("Ready.");
}
private void read() {
@@ -117,6 +126,18 @@ public class Controller {
unlockAll_disableDlcTextArea();
}
+ private void emptyFields() {
+ creamApiDllAppliedIcon.setGlyphName("TIMES");
+ creamApiConfigExistsIcon.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");
}
@@ -148,7 +169,7 @@ public class Controller {
if (silent) {
state_label.setText("");
} else {
- state_label.setText("Resetting fields...");
+ state_label.setText("Resetting fields...");
}
try {
config.read();
@@ -156,12 +177,60 @@ public class Controller {
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) {
state_label.setText("Could not reset fields, no configuration file set!");
}
}
+ updateIndicators();
+ }
+
+ private void updateIndicators() {
+ Color colorSuccess = Color.web("#43A047");
+ Color colorFailure = Color.web("#E53935");
+ try {
+ 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);
+ isSameFile = Objects.equals(md5, handler.getDllMd5(is64Bit));
+ if (isSameFile) {
+ creamApiDllApplied.setTextFill(colorSuccess);
+ creamApiDllAppliedIcon.setFill(colorSuccess);
+ creamApiDllAppliedIcon.setGlyphName("CHECK");
+ } else {
+ creamApiDllApplied.setTextFill(colorFailure);
+ creamApiDllAppliedIcon.setFill(colorFailure);
+ creamApiDllAppliedIcon.setGlyphName("TIMES");
+ }
+ Path configPath = Paths.get(config.getPath());
+ if (Files.exists(configPath) && Files.size(configPath) > 0L) {
+ creamApiConfigExists.setTextFill(colorSuccess);
+ creamApiConfigExistsIcon.setFill(colorSuccess);
+ creamApiConfigExistsIcon.setGlyphName("CHECK");
+ } else {
+ creamApiConfigExists.setTextFill(colorFailure);
+ creamApiConfigExistsIcon.setFill(colorFailure);
+ creamApiConfigExistsIcon.setGlyphName("TIMES");
+ }
+ }
+ } catch (Exception e) {
+ System.err.println("Error! Resetting visual indicators!");
+ creamApiDllApplied.setTextFill(colorFailure);
+ creamApiDllAppliedIcon.setFill(colorFailure);
+ creamApiDllAppliedIcon.setGlyphName("TIMES");
+ creamApiConfigExists.setTextFill(colorFailure);
+ creamApiConfigExistsIcon.setFill(colorFailure);
+ creamApiConfigExistsIcon.setGlyphName("TIMES");
+ }
}
public void save() {
@@ -187,6 +256,7 @@ public class Controller {
System.err.println("No configuration file set!");
cancel();
}
+ updateIndicators();
return null;
}
};
@@ -301,15 +371,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.");
}
/**
@@ -320,31 +391,25 @@ public class Controller {
* @throws IOException If file is missing or not accessible/modifiable.
*/
private void setUpCreamApi() throws IOException {
- boolean is64Bit = false;
- if (!steamApiPathString.isEmpty()) {
- Path path = Paths.get(steamApiPathString);
- if (path.endsWith("steam_api64.dll")) {
- is64Bit = true;
- }
- copyDllFile(is64Bit, path);
- findAdditionalDll(is64Bit, path);
- }
+ Path path = Paths.get(steamApiPathString);
+ copyDllFile(path, isSameFile);
+ findAdditionalDll(path);
}
- private void findAdditionalDll(boolean is64Bit, Path path) throws IOException {
+ private void findAdditionalDll(Path path) throws IOException {
String secondDllString = is64Bit ? "\\steam_api.dll" : "\\steam_api64.dll";
Path dir = path.getParent();
Path secondDll = Paths.get(dir.toString() + secondDllString);
if (Files.exists(secondDll)) {
System.out.println("Alternative DLL found!");
- copyDllFile(!is64Bit, secondDll);
+ InputStream is = Files.newInputStream(secondDll);
+ String md5 = DigestUtils.md5Hex(is);
+ boolean isSameFile1 = Objects.equals(md5, handler.getDllMd5(!is64Bit));
+ copyDllFile(secondDll, isSameFile1);
}
}
- private void copyDllFile(boolean is64Bit, Path path) throws IOException {
- InputStream is = Files.newInputStream(path);
- String md5 = DigestUtils.md5Hex(is);
- boolean isSameFile = Objects.equals(md5, handler.getDllMd5(is64Bit));
+ private void copyDllFile(Path path, boolean isSameFile) throws IOException {
if (!isSameFile) {
String pathOrigString = steamApiPathString;
pathOrigString =
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 ebb2d7c..a0d4fdc 100644
--- a/src/main/resources/mainWindow.fxml
+++ b/src/main/resources/mainWindow.fxml
@@ -8,9 +8,11 @@
+
+
-
-
+
+
+
+
@@ -86,9 +89,58 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
\ No newline at end of file