diff --git a/src/main/java/nsusbloader/AppPreferences.java b/src/main/java/nsusbloader/AppPreferences.java index d9f7968..b82d73f 100644 --- a/src/main/java/nsusbloader/AppPreferences.java +++ b/src/main/java/nsusbloader/AppPreferences.java @@ -23,7 +23,8 @@ public class AppPreferences { String HostIp, String HostPort, String HostExtra, - boolean autoCheck4Updates + boolean autoCheck4Updates, + boolean tinfoilXciSupport ){ setProtocol(Protocol); setRecent(PreviouslyOpened); @@ -38,6 +39,7 @@ public class AppPreferences { setHostPort(HostPort); setHostExtra(HostExtra); setAutoCheckUpdates(autoCheck4Updates); + setTfXCI(tinfoilXciSupport); } public String getTheme(){ String theme = preferences.get("THEME", "/res/app_dark.css"); // Don't let user to change settings manually @@ -100,4 +102,7 @@ public class AppPreferences { public boolean getAutoCheckUpdates(){return preferences.getBoolean("AUTOCHECK4UPDATES", false); } public void setAutoCheckUpdates(boolean prop){preferences.putBoolean("AUTOCHECK4UPDATES", prop); } + + public boolean getTfXCI(){return preferences.getBoolean("TF_XCI", false);} + public void setTfXCI(boolean prop){ preferences.putBoolean("TF_XCI", prop); } } diff --git a/src/main/java/nsusbloader/Controllers/NSLMainController.java b/src/main/java/nsusbloader/Controllers/NSLMainController.java index 2faa075..51f9a86 100644 --- a/src/main/java/nsusbloader/Controllers/NSLMainController.java +++ b/src/main/java/nsusbloader/Controllers/NSLMainController.java @@ -108,8 +108,12 @@ public class NSLMainController implements Initializable { else fileChooser.setInitialDirectory(new File(System.getProperty("user.home"))); - fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("NSP ROM", "*.nsp")); - + if (SettingsTabController.getTfXCISupport() && FrontTabController.getSelectedProtocol().equals("TinFoil")){ + fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("NSP/XCI", "*.nsp", "*.xci")); + } + 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); @@ -234,13 +238,25 @@ public class NSLMainController implements Initializable { } List filesDropped = new ArrayList<>(); try { - for (File fileOrDir : event.getDragboard().getFiles()) { - if (fileOrDir.getName().toLowerCase().endsWith(".nsp")) - filesDropped.add(fileOrDir); - else if (fileOrDir.isDirectory()) - for (File file : fileOrDir.listFiles()) - if (file.getName().toLowerCase().endsWith(".nsp")) - filesDropped.add(file); + if (SettingsTabController.getTfXCISupport() && FrontTabController.getSelectedProtocol().equals("TinFoil")){ + for (File fileOrDir : event.getDragboard().getFiles()) { + if (fileOrDir.getName().toLowerCase().endsWith(".nsp") || fileOrDir.getName().toLowerCase().endsWith(".xci")) + filesDropped.add(fileOrDir); + else if (fileOrDir.isDirectory()) + for (File file : fileOrDir.listFiles()) + if (file.getName().toLowerCase().endsWith(".nsp") || file.getName().toLowerCase().endsWith(".xci")) + filesDropped.add(file); + } + } + else { + for (File fileOrDir : event.getDragboard().getFiles()) { + if (fileOrDir.getName().toLowerCase().endsWith(".nsp")) + filesDropped.add(fileOrDir); + else if (fileOrDir.isDirectory()) + for (File file : fileOrDir.listFiles()) + if (file.getName().toLowerCase().endsWith(".nsp")) + filesDropped.add(file); + } } } catch (SecurityException se){ @@ -268,7 +284,8 @@ public class NSLMainController implements Initializable { SettingsTabController.getHostIp(), SettingsTabController.getHostPort(), SettingsTabController.getHostExtra(), - SettingsTabController.getAutoCheckForUpdates() + SettingsTabController.getAutoCheckForUpdates(), + SettingsTabController.getTfXCISupport() ); } } diff --git a/src/main/java/nsusbloader/Controllers/NSTableViewController.java b/src/main/java/nsusbloader/Controllers/NSTableViewController.java index ba20ffa..896fe81 100644 --- a/src/main/java/nsusbloader/Controllers/NSTableViewController.java +++ b/src/main/java/nsusbloader/Controllers/NSTableViewController.java @@ -25,6 +25,7 @@ import java.io.File; import java.net.URL; import java.util.ArrayList; import java.util.List; +import java.util.ListIterator; import java.util.ResourceBundle; public class NSTableViewController implements Initializable { @@ -259,9 +260,16 @@ public class NSTableViewController implements Initializable { model.setMarkForUpload(true); } else { - for (NSLRowModel model: rowsObsLst) - model.setMarkForUpload(false); - rowsObsLst.get(0).setMarkForUpload(true); + ListIterator iterator = rowsObsLst.listIterator(); + while (iterator.hasNext()){ + NSLRowModel current = iterator.next(); + if (current.getNspFileName().toLowerCase().endsWith("xci")) + iterator.remove(); + else + current.setMarkForUpload(false); + } + if (!rowsObsLst.isEmpty()) + rowsObsLst.get(0).setMarkForUpload(true); } table.refresh(); } diff --git a/src/main/java/nsusbloader/Controllers/SettingsController.java b/src/main/java/nsusbloader/Controllers/SettingsController.java index c985934..51caa83 100644 --- a/src/main/java/nsusbloader/Controllers/SettingsController.java +++ b/src/main/java/nsusbloader/Controllers/SettingsController.java @@ -45,6 +45,8 @@ public class SettingsController implements Initializable { private Hyperlink newVersionLink; @FXML private Button checkForUpdBtn; + @FXML + private CheckBox tfXciSpprtCb; private HostServices hs; @@ -176,6 +178,7 @@ public class SettingsController implements Initializable { updates.setDaemon(true); updates.start(); }); + tfXciSpprtCb.setSelected(AppPreferences.getInstance().getTfXCI()); } public boolean getExpertModeSelected(){ return expertModeCb.isSelected(); } @@ -189,6 +192,7 @@ public class SettingsController implements Initializable { public String getHostPort(){ return pcPortTextField.getText(); } public String getHostExtra(){ return pcExtraTextField.getText(); } public boolean getAutoCheckForUpdates(){ return autoCheckUpdCb.isSelected(); } + public boolean getTfXCISupport(){ return tfXciSpprtCb.isSelected(); } public void registerHostServices(HostServices hostServices){this.hs = hostServices;} diff --git a/src/main/resources/SettingsTab.fxml b/src/main/resources/SettingsTab.fxml index a54e779..d4c2e9f 100644 --- a/src/main/resources/SettingsTab.fxml +++ b/src/main/resources/SettingsTab.fxml @@ -84,9 +84,11 @@