From 61215d727e4bbfc8197b46d57fa48ea40ece5d48 Mon Sep 17 00:00:00 2001 From: tobias <tobias.ullerich@icloud.com> Date: Mon, 15 Aug 2016 19:41:09 +0200 Subject: [PATCH] Ignore Update when using auto update --- .../tobias/playpad/assets/lang/_de.properties | 3 +- .../src/de/tobias/playpad/PlayPadMain.java | 23 +++------- PlayWall/src/de/tobias/playpad/Strings.java | 1 + .../dialog/AutoUpdateDialog.java | 43 +++++++++++++++++++ .../global/UpdateTabViewController.java | 3 ++ .../src/de/tobias/playpad/Updatable.java | 2 + .../playpad/settings/GlobalSettings.java | 15 +++++++ .../playpad/update/UpdateRegistery.java | 2 +- 8 files changed, 74 insertions(+), 18 deletions(-) create mode 100644 PlayWall/src/de/tobias/playpad/viewcontroller/dialog/AutoUpdateDialog.java diff --git a/PlayWall/assets/de/tobias/playpad/assets/lang/_de.properties b/PlayWall/assets/de/tobias/playpad/assets/lang/_de.properties index 6959ecc5..4bbc47bd 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 1deaee5e..15a3e87b 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 1aa77636..3045027b 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 00000000..c75b6d94 --- /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 d457d947..bc7aeddd 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 ed927698..8d3b80e9 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 d5979013..d15029dc 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 9b2274c4..86efe8b0 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) { -- GitLab