2019-02-18 03:06:49 +03:00
|
|
|
package nsusbloader.Controllers;
|
2019-02-10 04:59:54 +03:00
|
|
|
|
2019-03-23 20:05:48 +03:00
|
|
|
import javafx.application.HostServices;
|
2019-03-19 17:44:39 +03:00
|
|
|
import javafx.concurrent.Task;
|
2019-02-10 04:59:54 +03:00
|
|
|
import javafx.fxml.FXML;
|
|
|
|
import javafx.fxml.Initializable;
|
2019-02-16 04:34:30 +03:00
|
|
|
import javafx.scene.control.*;
|
2019-03-14 23:41:17 +03:00
|
|
|
import javafx.scene.input.DragEvent;
|
|
|
|
import javafx.scene.input.TransferMode;
|
2019-03-23 20:05:48 +03:00
|
|
|
import nsusbloader.*;
|
|
|
|
import nsusbloader.ModelControllers.UpdatesChecker;
|
2019-02-10 04:59:54 +03:00
|
|
|
|
|
|
|
import java.io.File;
|
2019-03-19 07:01:30 +03:00
|
|
|
import java.net.*;
|
2019-02-10 04:59:54 +03:00
|
|
|
import java.util.List;
|
|
|
|
import java.util.ResourceBundle;
|
|
|
|
|
|
|
|
public class NSLMainController implements Initializable {
|
|
|
|
|
|
|
|
private ResourceBundle resourceBundle;
|
|
|
|
|
|
|
|
@FXML
|
2019-02-17 18:38:07 +03:00
|
|
|
public TextArea logArea; // Accessible from Mediator
|
2019-10-27 00:02:40 +03:00
|
|
|
|
2019-02-10 04:59:54 +03:00
|
|
|
@FXML
|
2019-02-17 18:38:07 +03:00
|
|
|
public ProgressBar progressBar; // Accessible from Mediator
|
2019-02-10 04:59:54 +03:00
|
|
|
|
2019-03-17 19:45:51 +03:00
|
|
|
@FXML
|
2019-04-10 13:07:28 +03:00
|
|
|
public FrontController FrontTabController; // Accessible from Mediator | todo: incapsulate
|
2020-01-24 01:08:16 +03:00
|
|
|
@FXML
|
|
|
|
private SettingsController SettingsTabController;
|
2020-01-19 21:35:44 +03:00
|
|
|
@FXML
|
|
|
|
private SplitMergeController SplitMergeTabController;
|
|
|
|
|
2019-02-10 04:59:54 +03:00
|
|
|
@Override
|
|
|
|
public void initialize(URL url, ResourceBundle rb) {
|
|
|
|
this.resourceBundle = rb;
|
2019-08-17 08:33:05 +03:00
|
|
|
logArea.setText(rb.getString("tab3_Txt_GreetingsMessage")+" "+ NSLMain.appVersion+"!\n");
|
2019-02-10 04:59:54 +03:00
|
|
|
if (System.getProperty("os.name").toLowerCase().startsWith("lin"))
|
|
|
|
if (!System.getProperty("user.name").equals("root"))
|
2019-08-17 08:33:05 +03:00
|
|
|
logArea.appendText(rb.getString("tab3_Txt_EnteredAsMsg1")+System.getProperty("user.name")+"\n"+rb.getString("tab3_Txt_EnteredAsMsg2") + "\n");
|
2019-02-10 04:59:54 +03:00
|
|
|
|
2019-08-17 08:33:05 +03:00
|
|
|
logArea.appendText(rb.getString("tab3_Txt_GreetingsMessage2")+"\n");
|
2019-02-10 04:59:54 +03:00
|
|
|
|
2019-02-17 18:38:07 +03:00
|
|
|
MediatorControl.getInstance().setController(this);
|
2019-02-10 04:59:54 +03:00
|
|
|
|
2019-03-23 20:05:48 +03:00
|
|
|
if (AppPreferences.getInstance().getAutoCheckUpdates()){
|
|
|
|
Task<List<String>> updTask = new UpdatesChecker();
|
|
|
|
updTask.setOnSucceeded(event->{
|
|
|
|
List<String> result = updTask.getValue();
|
|
|
|
if (result != null){
|
2019-03-28 00:38:27 +03:00
|
|
|
if (!result.get(0).isEmpty()) {
|
2019-03-23 20:05:48 +03:00
|
|
|
SettingsTabController.setNewVersionLink(result.get(0));
|
2019-03-28 00:38:27 +03:00
|
|
|
ServiceWindow.getInfoNotification(resourceBundle.getString("windowTitleNewVersionAval"), resourceBundle.getString("windowTitleNewVersionAval") + ": " + result.get(0) + "\n\n" + result.get(1));
|
|
|
|
}
|
2019-03-23 20:05:48 +03:00
|
|
|
}
|
|
|
|
else
|
|
|
|
ServiceWindow.getInfoNotification(resourceBundle.getString("windowTitleNewVersionUnknown"), resourceBundle.getString("windowBodyNewVersionUnknown"));
|
|
|
|
});
|
|
|
|
Thread updates = new Thread(updTask);
|
|
|
|
updates.setDaemon(true);
|
|
|
|
updates.start();
|
|
|
|
}
|
2019-02-16 04:34:30 +03:00
|
|
|
}
|
2019-09-17 03:50:42 +03:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Get resources
|
|
|
|
* TODO: Find better solution; used in UsbCommunications() -> GL -> SelectFile command
|
|
|
|
* @return ResourceBundle
|
|
|
|
*/
|
|
|
|
public ResourceBundle getResourceBundle() {
|
|
|
|
return resourceBundle;
|
|
|
|
}
|
2019-03-23 20:05:48 +03:00
|
|
|
/**
|
|
|
|
* Provide hostServices to Settings tab
|
|
|
|
* */
|
|
|
|
public void setHostServices(HostServices hs ){ SettingsTabController.registerHostServices(hs);}
|
2019-04-10 13:07:28 +03:00
|
|
|
|
2019-03-18 19:12:11 +03:00
|
|
|
|
2019-03-14 23:41:17 +03:00
|
|
|
/**
|
|
|
|
* Drag-n-drop support (dragOver consumer)
|
|
|
|
* */
|
|
|
|
@FXML
|
|
|
|
private void handleDragOver(DragEvent event){
|
|
|
|
if (event.getDragboard().hasFiles())
|
|
|
|
event.acceptTransferModes(TransferMode.ANY);
|
|
|
|
}
|
|
|
|
/**
|
|
|
|
* Drag-n-drop support (drop consumer)
|
|
|
|
* */
|
|
|
|
@FXML
|
|
|
|
private void handleDrop(DragEvent event){
|
2019-03-16 02:43:14 +03:00
|
|
|
if (MediatorControl.getInstance().getTransferActive()) {
|
|
|
|
event.setDropCompleted(true);
|
|
|
|
return;
|
|
|
|
}
|
2019-10-27 00:02:40 +03:00
|
|
|
List<File> filesDropped = event.getDragboard().getFiles();
|
2019-09-25 07:24:38 +03:00
|
|
|
|
2019-10-27 00:02:40 +03:00
|
|
|
if (FrontTabController.getSelectedProtocol().equals("TinFoil") && SettingsTabController.getTfXciNszXczSupport())
|
|
|
|
filesDropped.removeIf(file -> ! file.getName().toLowerCase().matches("(.*\\.nsp$)|(.*\\.xci$)|(.*\\.nsz$)|(.*\\.xcz$)"));
|
|
|
|
else if (FrontTabController.getSelectedProtocol().equals("GoldLeaf") && (! SettingsTabController.getNSPFileFilterForGL()))
|
|
|
|
filesDropped.removeIf(file -> (file.isDirectory() && ! file.getName().toLowerCase().matches(".*\\.nsp$")));
|
|
|
|
else
|
|
|
|
filesDropped.removeIf(file -> ! file.getName().toLowerCase().matches(".*\\.nsp$"));
|
|
|
|
|
|
|
|
if ( ! filesDropped.isEmpty() )
|
2019-04-10 13:07:28 +03:00
|
|
|
FrontTabController.tableFilesListController.setFiles(filesDropped);
|
2019-03-14 23:41:17 +03:00
|
|
|
|
|
|
|
event.setDropCompleted(true);
|
|
|
|
}
|
2020-01-24 01:08:16 +03:00
|
|
|
/**
|
|
|
|
* Get 'Settings' controller
|
|
|
|
* Used by FrontController
|
|
|
|
* */
|
|
|
|
public SettingsController getSettingsCtrlr(){
|
|
|
|
return SettingsTabController;
|
|
|
|
}
|
|
|
|
|
|
|
|
public FrontController getFrontCtrlr(){
|
|
|
|
return FrontTabController;
|
|
|
|
}
|
2019-02-18 03:06:49 +03:00
|
|
|
/**
|
|
|
|
* Save preferences before exit
|
|
|
|
* */
|
2019-04-10 13:07:28 +03:00
|
|
|
public void exit(){
|
2019-03-19 05:06:18 +03:00
|
|
|
AppPreferences.getInstance().setAll(
|
2019-04-10 13:07:28 +03:00
|
|
|
FrontTabController.getSelectedProtocol(),
|
2020-01-24 01:08:16 +03:00
|
|
|
FrontTabController.getRecentPath(),
|
2019-04-10 13:07:28 +03:00
|
|
|
FrontTabController.getSelectedNetUsb(),
|
|
|
|
FrontTabController.getNsIp(),
|
2019-03-19 05:06:18 +03:00
|
|
|
SettingsTabController.isNsIpValidate(),
|
|
|
|
SettingsTabController.getExpertModeSelected(),
|
|
|
|
SettingsTabController.getAutoIpSelected(),
|
|
|
|
SettingsTabController.getRandPortSelected(),
|
|
|
|
SettingsTabController.getNotServeSelected(),
|
|
|
|
SettingsTabController.getHostIp(),
|
|
|
|
SettingsTabController.getHostPort(),
|
2019-03-23 20:05:48 +03:00
|
|
|
SettingsTabController.getHostExtra(),
|
2019-04-23 02:31:39 +03:00
|
|
|
SettingsTabController.getAutoCheckForUpdates(),
|
2019-10-24 16:33:42 +03:00
|
|
|
SettingsTabController.getTfXciNszXczSupport(),
|
2019-09-26 05:15:37 +03:00
|
|
|
SettingsTabController.getNSPFileFilterForGL(),
|
|
|
|
SettingsTabController.getGlOldVer()
|
2019-03-19 05:06:18 +03:00
|
|
|
);
|
2020-01-21 03:22:22 +03:00
|
|
|
|
|
|
|
SplitMergeTabController.updatePreferencesOnExit(); // NOTE: This shit above should be re-written to similar pattern
|
2019-02-18 03:06:49 +03:00
|
|
|
}
|
2019-02-10 04:59:54 +03:00
|
|
|
}
|