rlease 0.3.3 #7
|
@ -27,7 +27,6 @@ import java.io.IOException;
|
|||
import java.net.URL;
|
||||
import java.nio.channels.Channels;
|
||||
import java.nio.channels.ReadableByteChannel;
|
||||
import java.util.Optional;
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
|
||||
|
@ -36,18 +35,18 @@ import org.apache.logging.log4j.Logger;
|
|||
|
||||
import com.cemu_UI.controller.CloudController;
|
||||
import com.cemu_UI.controller.XMLController;
|
||||
import com.cemu_UI.uiElements.JFXOkayCancelAlert;
|
||||
|
||||
import javafx.application.Application;
|
||||
import javafx.beans.value.ChangeListener;
|
||||
import javafx.beans.value.ObservableValue;
|
||||
import javafx.fxml.FXMLLoader;
|
||||
import javafx.stage.DirectoryChooser;
|
||||
import javafx.stage.Stage;
|
||||
import javafx.scene.Scene;
|
||||
import javafx.scene.control.Alert;
|
||||
import javafx.scene.control.ButtonType;
|
||||
import javafx.scene.control.Alert.AlertType;
|
||||
import javafx.scene.layout.AnchorPane;
|
||||
import javafx.stage.DirectoryChooser;
|
||||
import javafx.stage.Stage;
|
||||
|
||||
public class Main extends Application {
|
||||
|
||||
|
@ -106,11 +105,12 @@ public class Main extends Application {
|
|||
if (Main.class.getResourceAsStream("/client_secret.json") == null) {
|
||||
LOGGER.error("client_secret is missing!!!!!");
|
||||
|
||||
Alert alert = new Alert(AlertType.ERROR);
|
||||
alert.setTitle("cemu_UI");
|
||||
alert.setHeaderText("Error");
|
||||
alert.setContentText("client_secret is missing! Please contact the maintainer. \nIf you compiled cemu_UI by yourself see: \nhttps://git.mosad.xyz/Seil0/cemu_UI/wiki/Documantation");
|
||||
alert.showAndWait();
|
||||
JFXOkayCancelAlert noCSAlert = new JFXOkayCancelAlert("Error",
|
||||
"client_secret is missing! Please contact the maintainer. \nIf you compiled cemu_UI by yourself see: \nhttps://git.mosad.xyz/Seil0/cemu_UI/wiki/Documantation",
|
||||
"-fx-button-type: RAISED; -fx-background-color: #00a8cc; -fx-text-fill: BLACK;", primaryStage);
|
||||
noCSAlert.setOkayAction(e -> {});
|
||||
noCSAlert.setCancelAction(e -> {});
|
||||
noCSAlert.showAndWait();
|
||||
}
|
||||
|
||||
if (!XMLController.getDirCemuUI().exists()) {
|
||||
|
@ -181,33 +181,35 @@ public class Main extends Application {
|
|||
}
|
||||
|
||||
private void firstStart() {
|
||||
Alert alert = new Alert(AlertType.CONFIRMATION); // new alert with file-chooser
|
||||
alert.setTitle("cemu_UI");
|
||||
alert.setHeaderText("cemu installation");
|
||||
alert.setContentText("please select your cemu installation");
|
||||
|
||||
Optional<ButtonType> result = alert.showAndWait();
|
||||
if (result.get() == ButtonType.OK) {
|
||||
JFXOkayCancelAlert cemuInstallAlert = new JFXOkayCancelAlert("cemu installation",
|
||||
"please select your cemu installation",
|
||||
"-fx-button-type: RAISED; -fx-background-color: #00a8cc; -fx-text-fill: BLACK;", primaryStage);
|
||||
cemuInstallAlert.setOkayAction(e -> {
|
||||
DirectoryChooser directoryChooser = new DirectoryChooser();
|
||||
File selectedDirectory = directoryChooser.showDialog(primaryStage);
|
||||
XMLController.setCemuPath(selectedDirectory.getAbsolutePath());
|
||||
} else {
|
||||
});
|
||||
cemuInstallAlert.setCancelAction(e -> {
|
||||
XMLController.setCemuPath(null);
|
||||
}
|
||||
LOGGER.info("Action canceld by user!");
|
||||
});
|
||||
cemuInstallAlert.showAndWait();
|
||||
|
||||
Alert alert2 = new Alert(AlertType.CONFIRMATION); // new alert with file-chooser
|
||||
alert2.setTitle("cemu_UI");
|
||||
alert2.setHeaderText("rom directory");
|
||||
alert2.setContentText("please select your rom directory");
|
||||
|
||||
Optional<ButtonType> result2 = alert2.showAndWait();
|
||||
if (result2.get() == ButtonType.OK) {
|
||||
JFXOkayCancelAlert romDirectoryAlert = new JFXOkayCancelAlert("rom directory",
|
||||
"please select your rom directory",
|
||||
"-fx-button-type: RAISED; -fx-background-color: #00a8cc; -fx-text-fill: BLACK;", primaryStage);
|
||||
romDirectoryAlert.setOkayAction(e -> {
|
||||
DirectoryChooser directoryChooser = new DirectoryChooser();
|
||||
File selectedDirectory = directoryChooser.showDialog(primaryStage);
|
||||
XMLController.setRomDirectoryPath(selectedDirectory.getAbsolutePath());
|
||||
} else {
|
||||
});
|
||||
romDirectoryAlert.setCancelAction(e -> {
|
||||
XMLController.setRomDirectoryPath(null);
|
||||
}
|
||||
LOGGER.info("Action canceld by user!");
|
||||
});
|
||||
romDirectoryAlert.showAndWait();
|
||||
|
||||
}
|
||||
|
||||
private void initActions() {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* cemu_UI
|
||||
*
|
||||
* Copyright 2017-2018 <@Seil0>
|
||||
* Copyright 2017-2019 <@Seil0>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -18,6 +18,7 @@
|
|||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
* MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
package com.cemu_UI.application;
|
||||
|
||||
import java.awt.Graphics2D;
|
||||
|
@ -89,6 +90,7 @@ import javafx.scene.image.ImageView;
|
|||
import javafx.scene.input.MouseButton;
|
||||
import javafx.scene.input.MouseEvent;
|
||||
import javafx.scene.layout.AnchorPane;
|
||||
import javafx.scene.layout.FlowPane;
|
||||
import javafx.scene.layout.HBox;
|
||||
import javafx.scene.layout.VBox;
|
||||
import javafx.scene.paint.Color;
|
||||
|
@ -141,6 +143,8 @@ public class MainWindowController {
|
|||
@FXML private AnchorPane settingsAnchorPane;
|
||||
@FXML private AnchorPane smmdbAnchorPane;
|
||||
|
||||
@FXML private FlowPane gamesFlowPane;
|
||||
|
||||
@FXML private ScrollPane mainScrollPane;
|
||||
@FXML private ScrollPane settingsScrollPane;
|
||||
@FXML private ScrollPane smmdbScrollPane;
|
||||
|
@ -375,30 +379,19 @@ public class MainWindowController {
|
|||
LOGGER.info("remove " + selectedGameTitle + "(" + selectedGameTitleID + ")");
|
||||
String headingText = bundle.getString("removeHeadingText") + " \"" + selectedGameTitle + "\"";
|
||||
String bodyText = bundle.getString("removeBodyText") + " " + selectedGameTitle + " ?";
|
||||
EventHandler<ActionEvent> okayAction = new EventHandler<ActionEvent>() {
|
||||
@Override
|
||||
public void handle(ActionEvent event) {
|
||||
|
||||
JFXOkayCancelAlert removeGameAlert = new JFXOkayCancelAlert(headingText,
|
||||
bodyText, dialogBtnStyle, primaryStage);
|
||||
removeGameAlert.setOkayAction(e -> {
|
||||
try {
|
||||
games.remove(selectedUIDataIndex); // remove game form games-list
|
||||
dbController.removeGame(selectedGameTitleID); // remove game from database
|
||||
refreshUIData(); // refresh all games at gamesAnchorPane (UI)
|
||||
} catch (Exception e) {
|
||||
LOGGER.error("error while removing ROM from database!", e);
|
||||
} catch (Exception ex) {
|
||||
LOGGER.error("error while removing ROM from database!", ex);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
EventHandler<ActionEvent> cancelAction = new EventHandler<ActionEvent>() {
|
||||
@Override
|
||||
public void handle(ActionEvent event) {
|
||||
LOGGER.info("Action canceld by user!");
|
||||
}
|
||||
};
|
||||
|
||||
JFXOkayCancelAlert removeGameAlert = new JFXOkayCancelAlert(headingText,
|
||||
bodyText, dialogBtnStyle, primaryStage);
|
||||
removeGameAlert.setOkayAction(okayAction);
|
||||
removeGameAlert.setCancelAction(cancelAction);
|
||||
});
|
||||
removeGameAlert.setCancelAction(e -> LOGGER.info("Action canceld by user!"));
|
||||
removeGameAlert.showAndWait();
|
||||
} catch (Exception e) {
|
||||
LOGGER.error("error while removing " + selectedGameTitle + "(" + selectedGameTitleID + ")", e);
|
||||
|
@ -587,54 +580,34 @@ public class MainWindowController {
|
|||
}
|
||||
});
|
||||
|
||||
helpLbl.setOnMouseClicked(new EventHandler<MouseEvent>() {
|
||||
@Override
|
||||
public void handle(MouseEvent mouseEvent) {
|
||||
if (mouseEvent.getButton().equals(MouseButton.PRIMARY)) {
|
||||
helpLbl.setOnMouseClicked(e -> {
|
||||
if (e.getButton().equals(MouseButton.PRIMARY)) {
|
||||
Main.getMain().getHostServices().showDocument("https://git.mosad.xyz/Seil0/cemu_UI/issues/3");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
languageChoisBox.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener<Number>() {
|
||||
@Override
|
||||
public void changed(ObservableValue<? extends Number> ov, Number value, Number new_value) {
|
||||
String language = languageChoisBox.getItems().get((int) new_value).toString();
|
||||
languageChoisBox.getSelectionModel().selectedIndexProperty().addListener((e, oldValue, newValue) -> {
|
||||
String language = languageChoisBox.getItems().get((int) newValue).toString();
|
||||
language = language.substring(language.length() - 6, language.length() - 1); // reading only en_US from
|
||||
// English (en_US)
|
||||
XMLController.setUsrLocal(language);
|
||||
setUILanguage();
|
||||
xmlController.saveSettings();
|
||||
}
|
||||
});
|
||||
|
||||
branchChoisBox.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener<Number>() {
|
||||
@Override
|
||||
public void changed(ObservableValue<? extends Number> ov, Number value, Number new_value) {
|
||||
if (branchChoisBox.getItems().get((int) new_value).toString() == "beta") {
|
||||
branchChoisBox.getSelectionModel().selectedIndexProperty().addListener((e, oldValue, newValue) -> {
|
||||
if (branchChoisBox.getItems().get((int) newValue).toString() == "beta") {
|
||||
XMLController.setUseBeta(true);
|
||||
} else {
|
||||
XMLController.setUseBeta(false);
|
||||
}
|
||||
xmlController.saveSettings();
|
||||
}
|
||||
});
|
||||
|
||||
licensesLbl.setOnMouseClicked(new EventHandler<MouseEvent>() {
|
||||
@Override
|
||||
public void handle(MouseEvent mouseEvent) {
|
||||
if(mouseEvent.getButton().equals(MouseButton.PRIMARY)){
|
||||
licensesLbl.setOnMouseClicked(e -> {
|
||||
if (e.getButton().equals(MouseButton.PRIMARY)) {
|
||||
|
||||
EventHandler<ActionEvent> okayAction = new EventHandler<ActionEvent>() {
|
||||
@Override
|
||||
public void handle(ActionEvent event) {
|
||||
// do nothing
|
||||
}
|
||||
};
|
||||
EventHandler<ActionEvent> cancelAction = new EventHandler<ActionEvent>() {
|
||||
@Override
|
||||
public void handle(ActionEvent event) {
|
||||
String headingText = "cemu_UI";
|
||||
EventHandler<ActionEvent> cancelAction = cE -> {
|
||||
String bodyText = "";
|
||||
|
||||
try {
|
||||
|
@ -647,31 +620,27 @@ public class MainWindowController {
|
|||
}
|
||||
|
||||
licenseBR.close();
|
||||
} catch (IOException e) {
|
||||
LOGGER.error("Cloud not read the license file!", e);
|
||||
} catch (IOException ex) {
|
||||
LOGGER.error("Cloud not read the license file!", ex);
|
||||
}
|
||||
|
||||
JFXTextAreaInfoDialog licenseDialog = new JFXTextAreaInfoDialog(headingText, bodyText,
|
||||
JFXTextAreaInfoDialog licenseDialog = new JFXTextAreaInfoDialog("cemu_UI", "",
|
||||
dialogBtnStyle, 510, 450, main.getPane());
|
||||
licenseDialog.show();
|
||||
licenseDialog.getTextArea().setEditable(false);
|
||||
}
|
||||
licenseDialog.show();
|
||||
};
|
||||
|
||||
JFXOkayCancelAlert licenseOverviewAlert = new JFXOkayCancelAlert(
|
||||
bundle.getString("licensesLblHeadingText"), bundle.getString("licensesLblBodyText"),
|
||||
dialogBtnStyle, primaryStage);
|
||||
licenseOverviewAlert.setOkayAction(okayAction);
|
||||
licenseOverviewAlert.setOkayAction(oE -> {});
|
||||
licenseOverviewAlert.setCancelAction(cancelAction);
|
||||
licenseOverviewAlert.setCancelText(bundle.getString("showLicenses"));
|
||||
licenseOverviewAlert.showAndWait();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
cemuTextField.textProperty().addListener(new ChangeListener<String>() {
|
||||
@Override
|
||||
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
|
||||
cemuTextField.textProperty().addListener((e, oldValue, newValue) -> {
|
||||
if (new File(newValue).exists()) {
|
||||
XMLController.setCemuPath(newValue);
|
||||
xmlController.saveSettings();
|
||||
|
@ -681,12 +650,9 @@ public class MainWindowController {
|
|||
fileErrorDialog.showAndWait();
|
||||
LOGGER.warn(newValue + ": No such file or directory");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
romTextField.textProperty().addListener(new ChangeListener<String>() {
|
||||
@Override
|
||||
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
|
||||
romTextField.textProperty().addListener((e, oldValue, newValue) -> {
|
||||
if (new File(newValue).exists()) {
|
||||
XMLController.setRomDirectoryPath(newValue);
|
||||
xmlController.saveSettings();
|
||||
|
@ -697,7 +663,6 @@ public class MainWindowController {
|
|||
fileErrorDialog.showAndWait();
|
||||
LOGGER.warn(newValue + ": No such file or directory");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
LOGGER.info("initializing Actions done!");
|
||||
|
@ -897,11 +862,9 @@ public class MainWindowController {
|
|||
private void cloudSyncToggleBtnAction() {
|
||||
XMLController.setCloudSync(!XMLController.isCloudSync());
|
||||
|
||||
if(XMLController.isCloudSync()) {
|
||||
EventHandler<ActionEvent> okayAction = new EventHandler<ActionEvent>(){
|
||||
@Override
|
||||
public void handle(ActionEvent event){
|
||||
//TODO rework for other cloud services
|
||||
if (XMLController.isCloudSync()) {
|
||||
EventHandler<ActionEvent> okayAction = e -> {
|
||||
// TODO rework for other cloud services
|
||||
// CloudService service = CloudService.GoogleDrive;
|
||||
XMLController.setCloudService(CloudService.GoogleDrive);
|
||||
|
||||
|
@ -910,8 +873,10 @@ public class MainWindowController {
|
|||
@Override
|
||||
public void run() {
|
||||
|
||||
if (main.getCloudController().initializeConnection(XMLController.getCloudService(), XMLController.getCemuPath())) {
|
||||
main.getCloudController().sync(XMLController.getCloudService(), XMLController.getCemuPath(), XMLController.getDirCemuUIPath());
|
||||
if (main.getCloudController().initializeConnection(XMLController.getCloudService(),
|
||||
XMLController.getCemuPath())) {
|
||||
main.getCloudController().sync(XMLController.getCloudService(), XMLController.getCemuPath(),
|
||||
XMLController.getDirCemuUIPath());
|
||||
xmlController.saveSettings();
|
||||
} else {
|
||||
cloudSyncToggleBtn.setSelected(false);
|
||||
|
@ -926,21 +891,13 @@ public class MainWindowController {
|
|||
}
|
||||
});
|
||||
thread.start();
|
||||
}
|
||||
};
|
||||
|
||||
EventHandler<ActionEvent> cancelAction = new EventHandler<ActionEvent>(){
|
||||
@Override
|
||||
public void handle(ActionEvent event){
|
||||
cloudSyncToggleBtn.setSelected(false);
|
||||
}
|
||||
};
|
||||
|
||||
JFXOkayCancelAlert cloudSyncWarningAlert = new JFXOkayCancelAlert(
|
||||
bundle.getString("cloudSyncWaringHeadingText"), bundle.getString("cloudSyncWaringHeadingText"),
|
||||
dialogBtnStyle, primaryStage);
|
||||
cloudSyncWarningAlert.setOkayAction(okayAction);
|
||||
cloudSyncWarningAlert.setCancelAction(cancelAction);
|
||||
cloudSyncWarningAlert.setCancelAction(e -> cloudSyncToggleBtn.setSelected(false));
|
||||
cloudSyncWarningAlert.showAndWait();
|
||||
}
|
||||
}
|
||||
|
@ -1136,13 +1093,16 @@ public class MainWindowController {
|
|||
xNextElement = 0;
|
||||
|
||||
// add all games to gamesAnchorPane (UI)
|
||||
for (UIROMDataType game : games) {
|
||||
generatePosition();
|
||||
// for (UIROMDataType game : games) {
|
||||
// generatePosition();
|
||||
//
|
||||
// game.setLayoutX(xPos);
|
||||
// game.setLayoutY(yPos);
|
||||
// gamesAnchorPane.getChildren().add(game);
|
||||
// }
|
||||
|
||||
game.setLayoutX(xPos);
|
||||
game.setLayoutY(yPos);
|
||||
gamesAnchorPane.getChildren().add(game);
|
||||
}
|
||||
// TODO
|
||||
gamesFlowPane.getChildren().addAll(games);
|
||||
}
|
||||
|
||||
// set the selected local strings to all needed elements
|
||||
|
|
|
@ -106,11 +106,14 @@ public class XMLController {
|
|||
props.setProperty("useBeta", String.valueOf(isUseBeta()));
|
||||
if (getCloudService() == null) {
|
||||
props.setProperty("cloudService", "");
|
||||
props.setProperty("folderID", "");
|
||||
props.setProperty("lastLocalSync", "");
|
||||
} else {
|
||||
props.setProperty("cloudService", getCloudService().toString());
|
||||
}
|
||||
props.setProperty("folderID", getFolderID());
|
||||
props.setProperty("lastLocalSync", Long.toString(getLastLocalSync()));
|
||||
}
|
||||
|
||||
props.setProperty("windowWidth", Double.toString(getWindowWidth()));
|
||||
props.setProperty("windowHeight", Double.toString(getWindowHeight()));
|
||||
|
||||
|
|
|
@ -13,19 +13,23 @@
|
|||
<?import javafx.scene.control.Separator?>
|
||||
<?import javafx.scene.image.ImageView?>
|
||||
<?import javafx.scene.layout.AnchorPane?>
|
||||
<?import javafx.scene.layout.FlowPane?>
|
||||
<?import javafx.scene.layout.HBox?>
|
||||
<?import javafx.scene.layout.VBox?>
|
||||
<?import javafx.scene.text.Font?>
|
||||
<?import javafx.scene.text.TextFlow?>
|
||||
|
||||
<AnchorPane fx:id="mainAnchorPane" minHeight="405.0" minWidth="260.0" prefHeight="600.0" prefWidth="904.0" xmlns="http://javafx.com/javafx/9" xmlns:fx="http://javafx.com/fxml/1">
|
||||
<AnchorPane fx:id="mainAnchorPane" minHeight="405.0" minWidth="260.0" prefHeight="600.0" prefWidth="904.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1">
|
||||
<children>
|
||||
<ScrollPane fx:id="mainScrollPane" fitToWidth="true" layoutY="38.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="38.0">
|
||||
<content>
|
||||
<AnchorPane fx:id="gamesAnchorPane">
|
||||
<padding>
|
||||
<Insets bottom="17.0" />
|
||||
</padding></AnchorPane>
|
||||
</padding>
|
||||
<children>
|
||||
<FlowPane fx:id="gamesFlowPane" prefHeight="217.0" prefWidth="902.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
|
||||
</children></AnchorPane>
|
||||
</content>
|
||||
</ScrollPane>
|
||||
<HBox fx:id="topHBox" prefHeight="38.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||
|
|
Loading…
Reference in New Issue