From 9ad2d223c3790cad9b9c874a994b2e61ae12cfbb Mon Sep 17 00:00:00 2001 From: Jan-Peter Klein Date: Tue, 7 May 2024 13:23:53 +0200 Subject: [PATCH] changed BooleanBinding updateAvailable to ObservableValue --- .../org/cryptomator/ui/fxapp/UpdateChecker.java | 14 +++++--------- .../ui/mainwindow/MainWindowTitleController.java | 7 ++++--- .../preferences/UpdatesPreferencesController.java | 6 +++--- .../updatereminder/UpdateReminderController.java | 3 --- 4 files changed, 12 insertions(+), 18 deletions(-) diff --git a/src/main/java/org/cryptomator/ui/fxapp/UpdateChecker.java b/src/main/java/org/cryptomator/ui/fxapp/UpdateChecker.java index 7bf51aaa8..4386fca8e 100644 --- a/src/main/java/org/cryptomator/ui/fxapp/UpdateChecker.java +++ b/src/main/java/org/cryptomator/ui/fxapp/UpdateChecker.java @@ -1,13 +1,13 @@ package org.cryptomator.ui.fxapp; import org.cryptomator.common.Environment; +import org.cryptomator.common.ObservableUtil; import org.cryptomator.common.SemVerComparator; import org.cryptomator.common.settings.Settings; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.inject.Inject; -import javafx.beans.binding.Bindings; import javafx.beans.binding.BooleanBinding; import javafx.beans.property.ObjectProperty; import javafx.beans.property.ReadOnlyStringProperty; @@ -35,7 +35,7 @@ public class UpdateChecker { private final ObjectProperty state = new SimpleObjectProperty<>(UpdateCheckState.NOT_CHECKED); private final ObjectProperty lastSuccessfulUpdateCheck = new SimpleObjectProperty<>(); private final Comparator versionComparator = new SemVerComparator(); - private final BooleanBinding updateAvailable; + private final ObservableValue updateAvailable; //private final BooleanBinding checkFailed; private final ObservableValue checkFailed; @@ -47,11 +47,7 @@ public class UpdateChecker { this.settings = settings; this.updateCheckerService = updateCheckerService; this.lastSuccessfulUpdateCheck.bindBidirectional(settings.lastSuccessfulUpdateCheck); - - this.updateAvailable = Bindings.createBooleanBinding(() -> { - var latestVersion = this.latestVersion.get(); - return latestVersion != null && versionComparator.compare(getCurrentVersion(), latestVersion) < 0; - }, latestVersion); + this.updateAvailable = ObservableUtil.mapWithDefault(latestVersion, latest -> versionComparator.compare(getCurrentVersion(), latest) < 0, false); this.checkFailed = state.map(UpdateCheckState.CHECK_FAILED::equals); } @@ -108,7 +104,7 @@ public class UpdateChecker { return latestVersion; } - public BooleanBinding updateAvailableProperty() { + public ObservableValue updateAvailableProperty() { return updateAvailable; } public ObservableValue checkFailedProperty() { @@ -116,7 +112,7 @@ public class UpdateChecker { } public boolean isUpdateAvailable() { - return updateAvailable.get(); + return updateAvailable.getValue(); } public ObjectProperty lastSuccessfulUpdateCheckProperty() { diff --git a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java index f3c92790d..9761667cc 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java @@ -15,6 +15,7 @@ import javax.inject.Inject; import javafx.beans.binding.Bindings; import javafx.beans.binding.BooleanBinding; import javafx.beans.property.ReadOnlyBooleanProperty; +import javafx.beans.value.ObservableValue; import javafx.fxml.FXML; import javafx.scene.input.MouseButton; import javafx.scene.layout.HBox; @@ -30,7 +31,7 @@ public class MainWindowTitleController implements FxController { private final FxApplicationWindows appWindows; private final boolean trayMenuInitialized; private final UpdateChecker updateChecker; - private final BooleanBinding updateAvailable; + private final ObservableValue updateAvailable; private final LicenseHolder licenseHolder; private final Settings settings; private final BooleanBinding showMinimizeButton; @@ -126,12 +127,12 @@ public class MainWindowTitleController implements FxController { return licenseHolder; } - public BooleanBinding updateAvailableProperty() { + public ObservableValue updateAvailableProperty() { return updateAvailable; } public boolean isUpdateAvailable() { - return updateAvailable.get(); + return updateAvailable.getValue(); } public boolean isTrayIconPresent() { diff --git a/src/main/java/org/cryptomator/ui/preferences/UpdatesPreferencesController.java b/src/main/java/org/cryptomator/ui/preferences/UpdatesPreferencesController.java index 58d22d50c..dca54121f 100644 --- a/src/main/java/org/cryptomator/ui/preferences/UpdatesPreferencesController.java +++ b/src/main/java/org/cryptomator/ui/preferences/UpdatesPreferencesController.java @@ -46,7 +46,7 @@ public class UpdatesPreferencesController implements FxController { private final ObservableValue lastSuccessfulUpdateCheck; private final ObservableValue timeDifferenceMessage; private final String currentVersion; - private final BooleanBinding updateAvailable; + private final ObservableValue updateAvailable; private final ObservableValue checkFailed; private final BooleanProperty upToDateLabelVisible = new SimpleBooleanProperty(false); private final ObjectProperty updateCheckState; @@ -173,12 +173,12 @@ public class UpdatesPreferencesController implements FxController { return upToDateLabelVisible.get(); } - public BooleanBinding updateAvailableProperty() { + public ObservableValue updateAvailableProperty() { return updateAvailable; } public boolean isUpdateAvailable() { - return updateAvailable.get(); + return updateAvailable.getValue(); } public ObservableValue checkFailedProperty() { diff --git a/src/main/java/org/cryptomator/ui/updatereminder/UpdateReminderController.java b/src/main/java/org/cryptomator/ui/updatereminder/UpdateReminderController.java index 4f657d706..183298c44 100644 --- a/src/main/java/org/cryptomator/ui/updatereminder/UpdateReminderController.java +++ b/src/main/java/org/cryptomator/ui/updatereminder/UpdateReminderController.java @@ -7,9 +7,6 @@ import org.cryptomator.ui.fxapp.UpdateChecker; import javax.inject.Inject; import javafx.fxml.FXML; import javafx.stage.Stage; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; @UpdateReminderScoped public class UpdateReminderController implements FxController {