diff --git a/PlayWall/assets/de/tobias/playpad/assets/lang/_de.properties b/PlayWall/assets/de/tobias/playpad/assets/lang/_de.properties index 6959ecc55af805f3d562f0a6dda7a8a754fd2eef..4bbc47bd9cea3e2ac60df093b8b2766fd8265441 100644 --- a/PlayWall/assets/de/tobias/playpad/assets/lang/_de.properties +++ b/PlayWall/assets/de/tobias/playpad/assets/lang/_de.properties @@ -208,7 +208,8 @@ CartAction.Mode.PLAY_HOLD=Play/Hold #UI - Dialog -AutoUpdate UI.Dialog.AutoUpdate.Header=Updates -UI.Dialog.AutoUpdate.Content=Es sind Updates verf�gbar. M�chten Sie diese jetzt installieren? (Weitere Informationen finden Sie in den Update Einstellungen.) +UI.Dialog.AutoUpdate.Content=Es sind Updates verf�gbar. M�chten Sie diese jetzt installieren?\n{} +UI.Dialog.AutoUpdate.Checkbox=Dieses Update nicht mehr anzeigen. # Update Channel - BaseName UpdateChannel.STABLE=Stabil diff --git a/PlayWall/src/de/tobias/playpad/PlayPadMain.java b/PlayWall/src/de/tobias/playpad/PlayPadMain.java index 1deaee5ee10d09486f3f4f9ce678b6e395af50f2..15a3e87b9eca7426a5cf81087f1d7320e118e360 100644 --- a/PlayWall/src/de/tobias/playpad/PlayPadMain.java +++ b/PlayWall/src/de/tobias/playpad/PlayPadMain.java @@ -9,23 +9,15 @@ import java.util.Optional; import java.util.ResourceBundle; import java.util.UUID; -import org.dom4j.DocumentException; - -import de.tobias.playpad.action.mapper.MapperRegistry; -import de.tobias.playpad.audio.JavaFXAudioHandler; -import de.tobias.playpad.design.modern.ModernGlobalDesign; -import de.tobias.playpad.midi.device.DeviceRegistry; -import de.tobias.playpad.midi.device.PD12; import de.tobias.playpad.project.Project; import de.tobias.playpad.project.ProjectReference; -import de.tobias.playpad.registry.NoSuchComponentException; import de.tobias.playpad.settings.GlobalSettings; import de.tobias.playpad.settings.ProfileReference; import de.tobias.playpad.update.PlayPadUpdater; import de.tobias.playpad.update.UpdateRegistery; import de.tobias.playpad.update.Updates; -import de.tobias.playpad.view.MapperOverviewViewController; import de.tobias.playpad.viewcontroller.LaunchDialog; +import de.tobias.playpad.viewcontroller.dialog.AutoUpdateDialog; import de.tobias.playpad.viewcontroller.dialog.ChangelogDialog; import de.tobias.utils.application.App; import de.tobias.utils.application.ApplicationUtils; @@ -39,8 +31,6 @@ import de.tobias.utils.util.OS.OSType; import de.tobias.utils.util.Worker; import javafx.application.Application; import javafx.application.Platform; -import javafx.scene.control.Alert; -import javafx.scene.control.Alert.AlertType; import javafx.scene.control.ButtonType; import javafx.scene.image.Image; import javafx.stage.Stage; @@ -182,17 +172,15 @@ public class PlayPadMain extends Application implements LocalizationDelegate { } private void checkUpdates(GlobalSettings globalSettings) { - if (globalSettings.isAutoUpdate()) { + if (globalSettings.isAutoUpdate() && !globalSettings.isIgnoreUpdate()) { Worker.runLater(() -> { UpdateRegistery.lookupUpdates(globalSettings.getUpdateChannel()); if (!UpdateRegistery.getAvailableUpdates().isEmpty()) { Platform.runLater(() -> { - Alert alert = new Alert(AlertType.CONFIRMATION); - alert.setHeaderText(Localization.getString(Strings.UI_Dialog_AutoUpdate_Header)); - alert.setContentText(Localization.getString(Strings.UI_Dialog_AutoUpdate_Content)); - alert.showAndWait().filter(item -> item == ButtonType.OK).ifPresent(result -> + AutoUpdateDialog autoUpdateDialog = new AutoUpdateDialog(); + autoUpdateDialog.showAndWait().filter(item -> item == ButtonType.OK).ifPresent(result -> { try { Updates.startUpdate(); @@ -200,6 +188,9 @@ public class PlayPadMain extends Application implements LocalizationDelegate { e.printStackTrace(); } }); + if (autoUpdateDialog.isIgnoreUpdate()) { + globalSettings.setIgnoreUpdate(true); + } }); } }); diff --git a/PlayWall/src/de/tobias/playpad/Strings.java b/PlayWall/src/de/tobias/playpad/Strings.java index 1aa77636498762172134499ff04d107865de737e..3045027b384f4b6d74878d2f9664729b1737c214 100644 --- a/PlayWall/src/de/tobias/playpad/Strings.java +++ b/PlayWall/src/de/tobias/playpad/Strings.java @@ -199,6 +199,7 @@ public class Strings { // UI - Dialog - AutoUpdate public static final String UI_Dialog_AutoUpdate_Header = "UI.Dialog.AutoUpdate.Header"; public static final String UI_Dialog_AutoUpdate_Content = "UI.Dialog.AutoUpdate.Content"; + public static final String UI_Dialog_AutoUpdate_Checkbox = "UI.Dialog.AutoUpdate.Checkbox"; // Update Channel - Basename public static final String Update_Channel_BaseName = "UpdateChannel."; diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/dialog/AutoUpdateDialog.java b/PlayWall/src/de/tobias/playpad/viewcontroller/dialog/AutoUpdateDialog.java new file mode 100644 index 0000000000000000000000000000000000000000..c75b6d94c469b8ba20ece680c1efbacd137da8c5 --- /dev/null +++ b/PlayWall/src/de/tobias/playpad/viewcontroller/dialog/AutoUpdateDialog.java @@ -0,0 +1,43 @@ +package de.tobias.playpad.viewcontroller.dialog; + +import java.util.List; + +import de.tobias.playpad.Strings; +import de.tobias.playpad.update.Updatable; +import de.tobias.playpad.update.UpdateRegistery; +import de.tobias.utils.util.Localization; +import javafx.scene.control.ButtonType; +import javafx.scene.control.CheckBox; +import javafx.scene.control.Dialog; +import javafx.scene.control.Label; +import javafx.scene.layout.VBox; + +public class AutoUpdateDialog extends Dialog<ButtonType> { + + private CheckBox checkBox; + + public AutoUpdateDialog() { + List<Updatable> updates = UpdateRegistery.getAvailableUpdates(); + + StringBuilder builder = new StringBuilder(); + for (Updatable update : updates) { + builder.append(update.name()); + builder.append(" "); + builder.append(update.getNewVersion()); + builder.append("\n"); + } + + Label label = new Label(Localization.getString(Strings.UI_Dialog_AutoUpdate_Content, builder.toString())); + checkBox = new CheckBox(Localization.getString(Strings.UI_Dialog_AutoUpdate_Checkbox)); + VBox vBox = new VBox(14, label, checkBox); + + setHeaderText(Localization.getString(Strings.UI_Dialog_AutoUpdate_Header)); + + getDialogPane().setContent(vBox); + getDialogPane().getButtonTypes().addAll(ButtonType.APPLY, ButtonType.CANCEL); + } + + public boolean isIgnoreUpdate() { + return checkBox.isSelected(); + } +} diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/global/UpdateTabViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/global/UpdateTabViewController.java index d457d9475fb51e867940fb3a8729824ae1603cf9..bc7aeddd7ec4750cb9aae7cd1b5ec6614a03a483 100644 --- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/global/UpdateTabViewController.java +++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/global/UpdateTabViewController.java @@ -120,6 +120,9 @@ public class UpdateTabViewController extends GlobalSettingsTabViewController { UpdaterDialog dialog = new UpdaterDialog(getStage()); dialog.show(); + GlobalSettings settings = PlayPadPlugin.getImplementation().getGlobalSettings(); + settings.setIgnoreUpdate(false); + Worker.runLater(() -> { try { diff --git a/PlayWallCore/src/de/tobias/playpad/Updatable.java b/PlayWallCore/src/de/tobias/playpad/Updatable.java index ed92769831efcf8816e8202cc6d0384ab0dec2e5..8d3b80e9f9bc64c26dd4b5d711ec78e30884304b 100644 --- a/PlayWallCore/src/de/tobias/playpad/Updatable.java +++ b/PlayWallCore/src/de/tobias/playpad/Updatable.java @@ -11,6 +11,8 @@ import java.nio.file.Path; * * @since 5.0.0 */ + +@Deprecated public interface Updatable { /** diff --git a/PlayWallCore/src/de/tobias/playpad/settings/GlobalSettings.java b/PlayWallCore/src/de/tobias/playpad/settings/GlobalSettings.java index d597901378ecdc7230d8730573dd5f7ba58d0590..d15029dcc5be9fa8618a03baf147bd61ccc51936 100644 --- a/PlayWallCore/src/de/tobias/playpad/settings/GlobalSettings.java +++ b/PlayWallCore/src/de/tobias/playpad/settings/GlobalSettings.java @@ -34,6 +34,7 @@ public class GlobalSettings { private KeyCollection keyCollection = new KeyCollection(); private boolean autoUpdate = true; + private boolean ignoreUpdate = false; private UpdateChannel updateChannel = UpdateChannel.STABLE; // Getter @@ -45,6 +46,10 @@ public class GlobalSettings { return updateChannel; } + public boolean isIgnoreUpdate() { + return ignoreUpdate; + } + public KeyCollection getKeyCollection() { return keyCollection; } @@ -58,8 +63,13 @@ public class GlobalSettings { this.updateChannel = updateChannel; } + public void setIgnoreUpdate(boolean ignoreUpdate) { + this.ignoreUpdate = ignoreUpdate; + } + private static final String KEYS_ELEMENT = "Keys"; private static final String AUTO_UPDATE_ELEMENT = "AutoUpdate"; + private static final String IGNORE_UPDATE_ELEMENT = "IgnoreUpdate"; private static final String UPDATE_CHANNEL_ELEMENT = "UpdateChannel"; /** @@ -87,6 +97,10 @@ public class GlobalSettings { settings.setAutoUpdate(Boolean.valueOf(root.element(AUTO_UPDATE_ELEMENT).getStringValue())); } + if (root.element(IGNORE_UPDATE_ELEMENT) != null) { + settings.setIgnoreUpdate(Boolean.valueOf(root.element(IGNORE_UPDATE_ELEMENT).getStringValue())); + } + if (root.element(UPDATE_CHANNEL_ELEMENT) != null) { settings.setUpdateChannel(UpdateChannel.valueOf(root.element(UPDATE_CHANNEL_ELEMENT).getStringValue())); } @@ -112,6 +126,7 @@ public class GlobalSettings { // Update root.addElement(AUTO_UPDATE_ELEMENT).addText(String.valueOf(autoUpdate)); + root.addElement(IGNORE_UPDATE_ELEMENT).addText(String.valueOf(ignoreUpdate)); root.addElement(UPDATE_CHANNEL_ELEMENT).addText(updateChannel.name()); XMLWriter writer = new XMLWriter(Files.newOutputStream(savePath), OutputFormat.createPrettyPrint()); diff --git a/PlayWallCore/src/de/tobias/playpad/update/UpdateRegistery.java b/PlayWallCore/src/de/tobias/playpad/update/UpdateRegistery.java index 9b2274c4c31ced8afdd4342024a88c6ea83d5083..86efe8b0fc57d831fc5896fb18b8afe479c0bc99 100644 --- a/PlayWallCore/src/de/tobias/playpad/update/UpdateRegistery.java +++ b/PlayWallCore/src/de/tobias/playpad/update/UpdateRegistery.java @@ -22,7 +22,7 @@ public class UpdateRegistery { } public static List<Updatable> getAvailableUpdates() { - return availableUpdates; + return updatables; } public static List<Updatable> lookupUpdates(UpdateChannel channel) {