From f80467a3a45e01e7f06ab675478cd38884299957 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Tue, 28 Jan 2025 15:09:52 +0100 Subject: [PATCH] Fixes #3705 --- .../ui/vaultoptions/MountOptionsController.java | 14 ++++++++------ src/main/resources/fxml/vault_options_mount.fxml | 2 +- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/cryptomator/ui/vaultoptions/MountOptionsController.java b/src/main/java/org/cryptomator/ui/vaultoptions/MountOptionsController.java index 106623985..a9a2042a3 100644 --- a/src/main/java/org/cryptomator/ui/vaultoptions/MountOptionsController.java +++ b/src/main/java/org/cryptomator/ui/vaultoptions/MountOptionsController.java @@ -17,6 +17,8 @@ import org.cryptomator.ui.preferences.VolumePreferencesController; import javax.inject.Inject; import javafx.application.Application; import javafx.beans.binding.Bindings; +import javafx.beans.binding.BooleanBinding; +import javafx.beans.value.ObservableBooleanValue; import javafx.beans.value.ObservableValue; import javafx.fxml.FXML; import javafx.scene.control.Button; @@ -50,7 +52,6 @@ public class MountOptionsController implements FxController { private final ObservableValue defaultMountFlags; private final ObservableValue mountpointDirSupported; private final ObservableValue mountpointDriveLetterSupported; - private final ObservableValue readOnlySupported; private final ObservableValue mountFlagsSupported; private final ObservableValue defaultMountServiceSelected; private final ObservableValue directoryPath; @@ -60,6 +61,7 @@ public class MountOptionsController implements FxController { private final ObservableValue selectedMountService; private final ObservableValue selectedMountServiceRequiresRestart; private final ObservableValue loopbackPortChangeable; + private final ObservableBooleanValue readOnlyOptionAllowed; //-- FXML objects -- @@ -108,10 +110,10 @@ public class MountOptionsController implements FxController { }); this.mountFlagsSupported = selectedMountService.map(s -> s.hasCapability(MountCapability.MOUNT_FLAGS)); this.defaultMountServiceSelected = ObservableUtil.mapWithDefault(vaultSettings.mountService, _ -> false, true); - this.readOnlySupported = selectedMountService.map(s -> s.hasCapability(MountCapability.READ_ONLY)); this.mountpointDirSupported = selectedMountService.map(s -> s.hasCapability(MountCapability.MOUNT_TO_EXISTING_DIR) || s.hasCapability(MountCapability.MOUNT_WITHIN_EXISTING_PARENT)); this.mountpointDriveLetterSupported = selectedMountService.map(s -> s.hasCapability(MountCapability.MOUNT_AS_DRIVE_LETTER)); this.loopbackPortChangeable = selectedMountService.map(s -> s.hasCapability(MountCapability.LOOPBACK_PORT) && vaultSettings.mountService.getValue() != null); + this.readOnlyOptionAllowed = BooleanBinding.booleanExpression(selectedMountService.map(s -> s.hasCapability(MountCapability.READ_ONLY))).or(vaultSettings.usesReadOnlyMode); } private MountService reselectMountService() { @@ -345,12 +347,12 @@ public class MountOptionsController implements FxController { return mountpointDriveLetterSupported.getValue(); } - public ObservableValue readOnlySupportedProperty() { - return readOnlySupported; + public ObservableValue readOnlyOptionAllowedProperty() { + return readOnlyOptionAllowed; } - public boolean isReadOnlySupported() { - return readOnlySupported.getValue(); + public boolean isReadOnlyOptionAllowed() { + return readOnlyOptionAllowed.getValue(); } public ObservableValue directoryPathProperty() { diff --git a/src/main/resources/fxml/vault_options_mount.fxml b/src/main/resources/fxml/vault_options_mount.fxml index d5df2534f..4f6295af8 100644 --- a/src/main/resources/fxml/vault_options_mount.fxml +++ b/src/main/resources/fxml/vault_options_mount.fxml @@ -54,7 +54,7 @@