diff --git a/pom.xml b/pom.xml index f685776..00cd532 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ NS-USBloader ns-usbloader - 1.0.0-SNAPSHOT + 1.1.0-SNAPSHOT https://github.com/developersu/ns-usbloader/ diff --git a/src/main/java/nsusbloader/Controllers/FrontController.java b/src/main/java/nsusbloader/Controllers/FrontController.java index 49a8e22..a7d71c8 100644 --- a/src/main/java/nsusbloader/Controllers/FrontController.java +++ b/src/main/java/nsusbloader/Controllers/FrontController.java @@ -2,15 +2,24 @@ package nsusbloader.Controllers; import javafx.collections.FXCollections; import javafx.collections.ObservableList; +import javafx.concurrent.Task; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.*; import javafx.scene.layout.Pane; import javafx.scene.layout.Region; +import javafx.stage.DirectoryChooser; +import javafx.stage.FileChooser; import nsusbloader.AppPreferences; +import nsusbloader.COM.NET.NETCommunications; +import nsusbloader.COM.USB.UsbCommunications; import nsusbloader.MediatorControl; +import nsusbloader.ServiceWindow; +import java.io.File; import java.net.URL; +import java.util.LinkedList; +import java.util.List; import java.util.ResourceBundle; public class FrontController implements Initializable { @@ -28,8 +37,17 @@ public class FrontController implements Initializable { @FXML public NSTableViewController tableFilesListController; // Accessible from Mediator + @FXML + private Button selectNspBtn, selectSplitNspBtn, uploadStopBtn; + private String previouslyOpenedPath; + private Region btnUpStopImage; + private ResourceBundle resourceBundle; + private Task usbNetCommunications; + private Thread workThread; + @Override public void initialize(URL url, ResourceBundle resourceBundle) { + this.resourceBundle = resourceBundle; specialPane.getStyleClass().add("special-pane-as-border"); // UI hacks ObservableList choiceProtocolList = FXCollections.observableArrayList("TinFoil", "GoldLeaf"); @@ -52,9 +70,9 @@ public class FrontController implements Initializable { } // Really bad disable-enable upload button function if (tableFilesListController.isFilesForUploadListEmpty()) - MediatorControl.getInstance().getContoller().disableUploadStopBtn(true); + disableUploadStopBtn(true); else - MediatorControl.getInstance().getContoller().disableUploadStopBtn(false); + disableUploadStopBtn(false); }); // Add listener to notify tableView controller tableFilesListController.setNewProtocol(choiceProtocol.getSelectionModel().getSelectedItem()); // Notify tableView controller @@ -92,6 +110,28 @@ public class FrontController implements Initializable { btnSwitchImage.getStyleClass().add("regionLamp"); switchThemeBtn.setGraphic(btnSwitchImage); this.switchThemeBtn.setOnAction(e->switchTheme()); + + + if (getSelectedProtocol().equals("TinFoil")) + uploadStopBtn.setDisable(true); + else + uploadStopBtn.setDisable(false); + selectNspBtn.setOnAction(e-> selectFilesBtnAction()); + + selectSplitNspBtn.setOnAction(e-> selectSplitBtnAction()); + selectSplitNspBtn.getStyleClass().add("buttonSelect"); + + uploadStopBtn.setOnAction(e-> uploadBtnAction()); + + selectNspBtn.getStyleClass().add("buttonSelect"); + + this.btnUpStopImage = new Region(); + btnUpStopImage.getStyleClass().add("regionUpload"); + + uploadStopBtn.getStyleClass().add("buttonUp"); + uploadStopBtn.setGraphic(btnUpStopImage); + + this.previouslyOpenedPath = AppPreferences.getInstance().getRecent(); } /** * Changes UI theme on the go @@ -125,4 +165,171 @@ public class FrontController implements Initializable { String getNsIp(){ return nsIpTextField.getText(); } + + + /********************************************************************************************************************/ + /** + * Functionality for selecting NSP button. + * */ + private void selectFilesBtnAction(){ + List filesList; + FileChooser fileChooser = new FileChooser(); + fileChooser.setTitle(resourceBundle.getString("btn_OpenFile")); + + File validator = new File(previouslyOpenedPath); + if (validator.exists()) + fileChooser.setInitialDirectory(validator); + else + fileChooser.setInitialDirectory(new File(System.getProperty("user.home"))); + + if (getSelectedProtocol().equals("TinFoil") && MediatorControl.getInstance().getContoller().getSettingsCtrlr().getTfXciNszXczSupport()) + fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("NSP/XCI/NSZ/XCZ", "*.nsp", "*.xci", "*.nsz", "*.xcz")); + else if (getSelectedProtocol().equals("GoldLeaf") && (! MediatorControl.getInstance().getContoller().getSettingsCtrlr().getNSPFileFilterForGL())) + fileChooser.getExtensionFilters().addAll(new FileChooser.ExtensionFilter("Any file", "*.*"), + new FileChooser.ExtensionFilter("NSP ROM", "*.nsp") + ); + else + fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("NSP ROM", "*.nsp")); + + filesList = fileChooser.showOpenMultipleDialog(specialPane.getScene().getWindow()); + if (filesList != null && !filesList.isEmpty()) { + tableFilesListController.setFiles(filesList); + uploadStopBtn.setDisable(false); + previouslyOpenedPath = filesList.get(0).getParent(); + } + } + /** + * Functionality for selecting Split NSP button. + * */ + private void selectSplitBtnAction(){ + File splitFile; + DirectoryChooser dirChooser = new DirectoryChooser(); + dirChooser.setTitle(resourceBundle.getString("btn_OpenFile")); + + File validator = new File(previouslyOpenedPath); + if (validator.exists()) + dirChooser.setInitialDirectory(validator); + else + dirChooser.setInitialDirectory(new File(System.getProperty("user.home"))); + + splitFile = dirChooser.showDialog(specialPane.getScene().getWindow()); + + if (splitFile != null && splitFile.getName().toLowerCase().endsWith(".nsp")) { + tableFilesListController.setFile(splitFile); + uploadStopBtn.setDisable(false); // Is it useful? + previouslyOpenedPath = splitFile.getParent(); + } + } + /** + * It's button listener when no transmission executes + * */ + private void uploadBtnAction(){ + if ((workThread == null || !workThread.isAlive())){ + // Collect files + List nspToUpload; + if (tableFilesListController.getFilesForUpload() == null && getSelectedProtocol().equals("TinFoil")) { + MediatorControl.getInstance().getContoller().logArea.setText(resourceBundle.getString("tab3_Txt_NoFolderOrFileSelected")); + return; + } + else { + if ((nspToUpload = tableFilesListController.getFilesForUpload()) != null){ + MediatorControl.getInstance().getContoller().logArea.setText(resourceBundle.getString("tab3_Txt_FilesToUploadTitle")+"\n"); + for (File item: nspToUpload) + MediatorControl.getInstance().getContoller().logArea.appendText(" "+item.getAbsolutePath()+"\n"); + } + else { + MediatorControl.getInstance().getContoller().logArea.clear(); + nspToUpload = new LinkedList<>(); + } + } + // If USB selected + if (getSelectedProtocol().equals("GoldLeaf") || + ( getSelectedProtocol().equals("TinFoil") && getSelectedNetUsb().equals("USB") ) + ){ + usbNetCommunications = new UsbCommunications(nspToUpload, getSelectedProtocol()+MediatorControl.getInstance().getContoller().getSettingsCtrlr().getGlOldVer(), MediatorControl.getInstance().getContoller().getSettingsCtrlr().getNSPFileFilterForGL()); + workThread = new Thread(usbNetCommunications); + workThread.setDaemon(true); + workThread.start(); + } + else { // NET INSTALL OVER TINFOIL + if (MediatorControl.getInstance().getContoller().getSettingsCtrlr().isNsIpValidate() && ! getNsIp().matches("^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])$")) + if (!ServiceWindow.getConfirmationWindow(resourceBundle.getString("windowTitleBadIp"),resourceBundle.getString("windowBodyBadIp"))) + return; + + String nsIP = getNsIp(); + + if (! MediatorControl.getInstance().getContoller().getSettingsCtrlr().getExpertModeSelected()) + usbNetCommunications = new NETCommunications(nspToUpload, nsIP, false, "", "", ""); + else { + usbNetCommunications = new NETCommunications( + nspToUpload, + nsIP, + MediatorControl.getInstance().getContoller().getSettingsCtrlr().getNotServeSelected(), + MediatorControl.getInstance().getContoller().getSettingsCtrlr().getAutoIpSelected()?"":MediatorControl.getInstance().getContoller().getSettingsCtrlr().getHostIp(), + MediatorControl.getInstance().getContoller().getSettingsCtrlr().getRandPortSelected()?"":MediatorControl.getInstance().getContoller().getSettingsCtrlr().getHostPort(), + MediatorControl.getInstance().getContoller().getSettingsCtrlr().getNotServeSelected()?MediatorControl.getInstance().getContoller().getSettingsCtrlr().getHostExtra():"" + ); + } + + workThread = new Thread(usbNetCommunications); + workThread.setDaemon(true); + workThread.start(); + } + } + } + /** + * It's button listener when transmission in progress + * */ + private void stopBtnAction(){ + if (workThread != null && workThread.isAlive()){ + usbNetCommunications.cancel(false); + } + } + /** + * This thing modify UI for reusing 'Upload to NS' button and make functionality set for "Stop transmission" + * Called from mediator + * TODO: remove shitcoding practices + * */ + public void notifyTransmissionStarted(boolean isTransmissionStarted){ + if (isTransmissionStarted) { + selectNspBtn.setDisable(true); + selectSplitNspBtn.setDisable(true); + uploadStopBtn.setOnAction(e-> stopBtnAction()); + + uploadStopBtn.setText(resourceBundle.getString("btn_Stop")); + + btnUpStopImage.getStyleClass().remove("regionUpload"); + btnUpStopImage.getStyleClass().add("regionStop"); + + uploadStopBtn.getStyleClass().remove("buttonUp"); + uploadStopBtn.getStyleClass().add("buttonStop"); + return; + } + selectNspBtn.setDisable(false); + selectSplitNspBtn.setDisable(false); + uploadStopBtn.setOnAction(e-> uploadBtnAction()); + + uploadStopBtn.setText(resourceBundle.getString("btn_Upload")); + + btnUpStopImage.getStyleClass().remove("regionStop"); + btnUpStopImage.getStyleClass().add("regionUpload"); + + uploadStopBtn.getStyleClass().remove("buttonStop"); + uploadStopBtn.getStyleClass().add("buttonUp"); + } + /** + * Crunch. This function called from NSTableViewController + * */ + public void disableUploadStopBtn(boolean disable){ + if (getSelectedProtocol().equals("TinFoil")) + uploadStopBtn.setDisable(disable); + else + uploadStopBtn.setDisable(false); + } + /** + * Get 'Recent' path + */ + public String getRecentPath(){ + return previouslyOpenedPath; + } } diff --git a/src/main/java/nsusbloader/Controllers/NSLMainController.java b/src/main/java/nsusbloader/Controllers/NSLMainController.java index 71ac235..478bd42 100644 --- a/src/main/java/nsusbloader/Controllers/NSLMainController.java +++ b/src/main/java/nsusbloader/Controllers/NSLMainController.java @@ -7,17 +7,11 @@ import javafx.fxml.Initializable; import javafx.scene.control.*; import javafx.scene.input.DragEvent; import javafx.scene.input.TransferMode; -import javafx.scene.layout.Region; -import javafx.stage.DirectoryChooser; -import javafx.stage.FileChooser; import nsusbloader.*; import nsusbloader.ModelControllers.UpdatesChecker; -import nsusbloader.COM.NET.NETCommunications; -import nsusbloader.COM.USB.UsbCommunications; import java.io.File; import java.net.*; -import java.util.LinkedList; import java.util.List; import java.util.ResourceBundle; @@ -27,26 +21,17 @@ public class NSLMainController implements Initializable { @FXML public TextArea logArea; // Accessible from Mediator - @FXML - private Button selectNspBtn, selectSplitNspBtn, uploadStopBtn; - private Region btnUpStopImage; @FXML public ProgressBar progressBar; // Accessible from Mediator + @FXML + public FrontController FrontTabController; // Accessible from Mediator | todo: incapsulate @FXML private SettingsController SettingsTabController; - @FXML - public FrontController FrontTabController; // Accessible from Mediator | todo: incapsulate - @FXML private SplitMergeController SplitMergeTabController; - private Task usbNetCommunications; - private Thread workThread; - - private String previouslyOpenedPath; - @Override public void initialize(URL url, ResourceBundle rb) { this.resourceBundle = rb; @@ -59,27 +44,6 @@ public class NSLMainController implements Initializable { MediatorControl.getInstance().setController(this); - if (FrontTabController.getSelectedProtocol().equals("TinFoil")) - uploadStopBtn.setDisable(true); - else - uploadStopBtn.setDisable(false); - selectNspBtn.setOnAction(e-> selectFilesBtnAction()); - - selectSplitNspBtn.setOnAction(e-> selectSplitBtnAction()); - selectSplitNspBtn.getStyleClass().add("buttonSelect"); - - uploadStopBtn.setOnAction(e-> uploadBtnAction()); - - selectNspBtn.getStyleClass().add("buttonSelect"); - - this.btnUpStopImage = new Region(); - btnUpStopImage.getStyleClass().add("regionUpload"); - - uploadStopBtn.getStyleClass().add("buttonUp"); - uploadStopBtn.setGraphic(btnUpStopImage); - - this.previouslyOpenedPath = AppPreferences.getInstance().getRecent(); - if (AppPreferences.getInstance().getAutoCheckUpdates()){ Task> updTask = new UpdatesChecker(); updTask.setOnSucceeded(event->{ @@ -112,164 +76,7 @@ public class NSLMainController implements Initializable { * */ public void setHostServices(HostServices hs ){ SettingsTabController.registerHostServices(hs);} - /** - * Functionality for selecting NSP button. - * */ - private void selectFilesBtnAction(){ - List filesList; - FileChooser fileChooser = new FileChooser(); - fileChooser.setTitle(resourceBundle.getString("btn_OpenFile")); - File validator = new File(previouslyOpenedPath); - if (validator.exists()) - fileChooser.setInitialDirectory(validator); - else - fileChooser.setInitialDirectory(new File(System.getProperty("user.home"))); - - if (FrontTabController.getSelectedProtocol().equals("TinFoil") && SettingsTabController.getTfXciNszXczSupport()) - fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("NSP/XCI/NSZ/XCZ", "*.nsp", "*.xci", "*.nsz", "*.xcz")); - else if (FrontTabController.getSelectedProtocol().equals("GoldLeaf") && (! SettingsTabController.getNSPFileFilterForGL())) - fileChooser.getExtensionFilters().addAll(new FileChooser.ExtensionFilter("Any file", "*.*"), - new FileChooser.ExtensionFilter("NSP ROM", "*.nsp") - ); - else - fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("NSP ROM", "*.nsp")); - - filesList = fileChooser.showOpenMultipleDialog(logArea.getScene().getWindow()); - if (filesList != null && !filesList.isEmpty()) { - FrontTabController.tableFilesListController.setFiles(filesList); - uploadStopBtn.setDisable(false); - previouslyOpenedPath = filesList.get(0).getParent(); - } - } - /** - * Functionality for selecting Split NSP button. - * */ - private void selectSplitBtnAction(){ - File splitFile; - DirectoryChooser dirChooser = new DirectoryChooser(); - dirChooser.setTitle(resourceBundle.getString("btn_OpenFile")); - - File validator = new File(previouslyOpenedPath); - if (validator.exists()) - dirChooser.setInitialDirectory(validator); - else - dirChooser.setInitialDirectory(new File(System.getProperty("user.home"))); - - splitFile = dirChooser.showDialog(logArea.getScene().getWindow()); - - if (splitFile != null && splitFile.getName().toLowerCase().endsWith(".nsp")) { - FrontTabController.tableFilesListController.setFile(splitFile); - uploadStopBtn.setDisable(false); // Is it useful? - previouslyOpenedPath = splitFile.getParent(); - } - } - /** - * It's button listener when no transmission executes - * */ - private void uploadBtnAction(){ - if ((workThread == null || !workThread.isAlive())){ - // Collect files - List nspToUpload; - if (FrontTabController.tableFilesListController.getFilesForUpload() == null && FrontTabController.getSelectedProtocol().equals("TinFoil")) { - logArea.setText(resourceBundle.getString("tab3_Txt_NoFolderOrFileSelected")); - return; - } - else { - if ((nspToUpload = FrontTabController.tableFilesListController.getFilesForUpload()) != null){ - logArea.setText(resourceBundle.getString("tab3_Txt_FilesToUploadTitle")+"\n"); - for (File item: nspToUpload) - logArea.appendText(" "+item.getAbsolutePath()+"\n"); - } - else { - logArea.clear(); - nspToUpload = new LinkedList<>(); - } - } - // If USB selected - if (FrontTabController.getSelectedProtocol().equals("GoldLeaf") || - ( FrontTabController.getSelectedProtocol().equals("TinFoil") && FrontTabController.getSelectedNetUsb().equals("USB") ) - ){ - usbNetCommunications = new UsbCommunications(nspToUpload, FrontTabController.getSelectedProtocol()+SettingsTabController.getGlOldVer(), SettingsTabController.getNSPFileFilterForGL()); - workThread = new Thread(usbNetCommunications); - workThread.setDaemon(true); - workThread.start(); - } - else { // NET INSTALL OVER TINFOIL - if (SettingsTabController.isNsIpValidate() && ! FrontTabController.getNsIp().matches("^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])$")) - if (!ServiceWindow.getConfirmationWindow(resourceBundle.getString("windowTitleBadIp"),resourceBundle.getString("windowBodyBadIp"))) - return; - - String nsIP = FrontTabController.getNsIp(); - - if (!SettingsTabController.getExpertModeSelected()) - usbNetCommunications = new NETCommunications(nspToUpload, nsIP, false, "", "", ""); - else { - usbNetCommunications = new NETCommunications( - nspToUpload, - nsIP, - SettingsTabController.getNotServeSelected(), - SettingsTabController.getAutoIpSelected()?"":SettingsTabController.getHostIp(), - SettingsTabController.getRandPortSelected()?"":SettingsTabController.getHostPort(), - SettingsTabController.getNotServeSelected()?SettingsTabController.getHostExtra():"" - ); - } - - workThread = new Thread(usbNetCommunications); - workThread.setDaemon(true); - workThread.start(); - } - } - } - /** - * It's button listener when transmission in progress - * */ - private void stopBtnAction(){ - if (workThread != null && workThread.isAlive()){ - usbNetCommunications.cancel(false); - } - } - /** - * This thing modify UI for reusing 'Upload to NS' button and make functionality set for "Stop transmission" - * Called from mediator - * */ - public void notifyTransmissionStarted(boolean isTransmissionStarted){ - if (isTransmissionStarted) { - selectNspBtn.setDisable(true); - selectSplitNspBtn.setDisable(true); - uploadStopBtn.setOnAction(e-> stopBtnAction()); - - uploadStopBtn.setText(resourceBundle.getString("btn_Stop")); - - btnUpStopImage.getStyleClass().remove("regionUpload"); - btnUpStopImage.getStyleClass().add("regionStop"); - - uploadStopBtn.getStyleClass().remove("buttonUp"); - uploadStopBtn.getStyleClass().add("buttonStop"); - } - else { - selectNspBtn.setDisable(false); - selectSplitNspBtn.setDisable(false); - uploadStopBtn.setOnAction(e-> uploadBtnAction()); - - uploadStopBtn.setText(resourceBundle.getString("btn_Upload")); - - btnUpStopImage.getStyleClass().remove("regionStop"); - btnUpStopImage.getStyleClass().add("regionUpload"); - - uploadStopBtn.getStyleClass().remove("buttonStop"); - uploadStopBtn.getStyleClass().add("buttonUp"); - } - } - /** - * Crunch. Now you see that I'm not a programmer.. This function called from NSTableViewController - * */ - public void disableUploadStopBtn(boolean disable){ - if (FrontTabController.getSelectedProtocol().equals("TinFoil")) - uploadStopBtn.setDisable(disable); - else - uploadStopBtn.setDisable(false); - } /** * Drag-n-drop support (dragOver consumer) * */ @@ -301,13 +108,24 @@ public class NSLMainController implements Initializable { event.setDropCompleted(true); } + /** + * Get 'Settings' controller + * Used by FrontController + * */ + public SettingsController getSettingsCtrlr(){ + return SettingsTabController; + } + + public FrontController getFrontCtrlr(){ + return FrontTabController; + } /** * Save preferences before exit * */ public void exit(){ AppPreferences.getInstance().setAll( FrontTabController.getSelectedProtocol(), - previouslyOpenedPath, + FrontTabController.getRecentPath(), FrontTabController.getSelectedNetUsb(), FrontTabController.getNsIp(), SettingsTabController.isNsIpValidate(), diff --git a/src/main/java/nsusbloader/Controllers/NSTableViewController.java b/src/main/java/nsusbloader/Controllers/NSTableViewController.java index eda3b14..8b5784b 100644 --- a/src/main/java/nsusbloader/Controllers/NSTableViewController.java +++ b/src/main/java/nsusbloader/Controllers/NSTableViewController.java @@ -17,7 +17,6 @@ import nsusbloader.NSLDataTypes.EFileStatus; import java.io.File; import java.net.URL; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.ResourceBundle; @@ -39,7 +38,7 @@ public class NSTableViewController implements Initializable { if (keyEvent.getCode() == KeyCode.DELETE && !MediatorControl.getInstance().getTransferActive()) { rowsObsLst.removeAll(table.getSelectionModel().getSelectedItems()); if (rowsObsLst.isEmpty()) - MediatorControl.getInstance().getContoller().disableUploadStopBtn(true); // TODO: change to something better + MediatorControl.getInstance().getContoller().getFrontCtrlr().disableUploadStopBtn(true); // TODO: change to something better table.refresh(); } else if (keyEvent.getCode() == KeyCode.SPACE) { for (NSLRowModel item : table.getSelectionModel().getSelectedItems()) { @@ -112,13 +111,13 @@ public class NSTableViewController implements Initializable { deleteMenuItem.setOnAction(actionEvent -> { rowsObsLst.remove(row.getItem()); if (rowsObsLst.isEmpty()) - MediatorControl.getInstance().getContoller().disableUploadStopBtn(true); // TODO: change to something better + MediatorControl.getInstance().getContoller().getFrontCtrlr().disableUploadStopBtn(true); // TODO: change to something better table.refresh(); }); MenuItem deleteAllMenuItem = new MenuItem(resourceBundle.getString("tab1_table_contextMenu_Btn_DeleteAll")); deleteAllMenuItem.setOnAction(actionEvent -> { rowsObsLst.clear(); - MediatorControl.getInstance().getContoller().disableUploadStopBtn(true); // TODO: change to something better + MediatorControl.getInstance().getContoller().getFrontCtrlr().disableUploadStopBtn(true); // TODO: change to something better table.refresh(); }); contextMenu.getItems().addAll(deleteMenuItem, deleteAllMenuItem); @@ -163,7 +162,7 @@ public class NSTableViewController implements Initializable { } else { rowsObsLst.add(new NSLRowModel(file, true)); - MediatorControl.getInstance().getContoller().disableUploadStopBtn(false); + MediatorControl.getInstance().getContoller().getFrontCtrlr().disableUploadStopBtn(false); // TODO: change to something better } table.refresh(); } @@ -183,7 +182,7 @@ public class NSTableViewController implements Initializable { else { for (File file: newFiles) rowsObsLst.add(new NSLRowModel(file, true)); - MediatorControl.getInstance().getContoller().disableUploadStopBtn(false); + MediatorControl.getInstance().getContoller().getFrontCtrlr().disableUploadStopBtn(false); // TODO: change to something better } //rowsObsLst.get(0).setMarkForUpload(true); table.refresh(); diff --git a/src/main/java/nsusbloader/MediatorControl.java b/src/main/java/nsusbloader/MediatorControl.java index e828571..2db197e 100644 --- a/src/main/java/nsusbloader/MediatorControl.java +++ b/src/main/java/nsusbloader/MediatorControl.java @@ -22,7 +22,7 @@ public class MediatorControl { public synchronized void setTransferActive(boolean state) { isTransferActive.set(state); - applicationController.notifyTransmissionStarted(state); + applicationController.getFrontCtrlr().notifyTransmissionStarted(state); } public synchronized boolean getTransferActive() { return this.isTransferActive.get(); } } diff --git a/src/main/java/nsusbloader/NSLMain.java b/src/main/java/nsusbloader/NSLMain.java index 17801e7..6dd4c20 100644 --- a/src/main/java/nsusbloader/NSLMain.java +++ b/src/main/java/nsusbloader/NSLMain.java @@ -12,7 +12,9 @@ import java.util.Locale; import java.util.ResourceBundle; public class NSLMain extends Application { - public static final String appVersion = "v1.0"; + + public static final String appVersion = "v1.1"; + @Override public void start(Stage primaryStage) throws Exception{ FXMLLoader loader = new FXMLLoader(getClass().getResource("/NSLMain.fxml")); diff --git a/src/main/java/nsusbloader/Utilities/SplitMergeTool.java b/src/main/java/nsusbloader/Utilities/SplitMergeTool.java index 3053fc9..3682ed8 100644 --- a/src/main/java/nsusbloader/Utilities/SplitMergeTool.java +++ b/src/main/java/nsusbloader/Utilities/SplitMergeTool.java @@ -182,7 +182,6 @@ public class SplitMergeTool { bis.close(); } bos.close(); - //=============== let's check what we have ============== long resultFileSize = resultFile.length(); logPrinter.print("Total chunks size: " + cnkTotalSize, EMsgType.INFO); diff --git a/src/main/resources/FrontTab.fxml b/src/main/resources/FrontTab.fxml index 458fa2f..c0383c9 100644 --- a/src/main/resources/FrontTab.fxml +++ b/src/main/resources/FrontTab.fxml @@ -13,6 +13,7 @@ + @@ -45,6 +46,33 @@ + + + + + + + + + + + + + diff --git a/src/main/resources/NSLMain.fxml b/src/main/resources/NSLMain.fxml index 16e4b21..05c6355 100644 --- a/src/main/resources/NSLMain.fxml +++ b/src/main/resources/NSLMain.fxml @@ -1,18 +1,15 @@ - - - - + @@ -64,34 +61,9 @@ - + - - - - - - - - - - -