diff --git a/src/main/java/org/cryptomator/ui/preferences/VolumePreferencesController.java b/src/main/java/org/cryptomator/ui/preferences/VolumePreferencesController.java index 2a31f007e..229487cb6 100644 --- a/src/main/java/org/cryptomator/ui/preferences/VolumePreferencesController.java +++ b/src/main/java/org/cryptomator/ui/preferences/VolumePreferencesController.java @@ -25,6 +25,10 @@ public class VolumePreferencesController implements FxController { private final Settings settings; private final ObservableValue selectedMountService; private final BooleanExpression loopbackPortSupported; + private final ObservableValue mountToDirSupported; + private final ObservableValue mountToDriveLetterSupported; + private final ObservableValue mountFlagsSupported; + private final ObservableValue readonlySupported; private final List mountProviders; public ChoiceBox volumeTypeChoiceBox; public TextField loopbackPortField; @@ -36,6 +40,10 @@ public class VolumePreferencesController implements FxController { this.mountProviders = mountProviders; this.selectedMountService = actualMountService; this.loopbackPortSupported = BooleanExpression.booleanExpression(selectedMountService.map(as -> as.service().hasCapability(MountCapability.LOOPBACK_PORT))); + this.mountToDirSupported = selectedMountService.map(as -> as.service().hasCapability(MountCapability.MOUNT_WITHIN_EXISTING_PARENT) || as.service().hasCapability(MountCapability.MOUNT_TO_EXISTING_DIR)); + this.mountToDriveLetterSupported = selectedMountService.map(as -> as.service().hasCapability(MountCapability.MOUNT_AS_DRIVE_LETTER)); + this.mountFlagsSupported = selectedMountService.map(as -> as.service().hasCapability(MountCapability.MOUNT_FLAGS)); + this.readonlySupported = selectedMountService.map(as -> as.service().hasCapability(MountCapability.READ_ONLY)); } public void initialize() { @@ -47,7 +55,6 @@ public class VolumePreferencesController implements FxController { loopbackPortField.setText(String.valueOf(settings.port().get())); loopbackPortApplyButton.visibleProperty().bind(settings.port().asString().isNotEqualTo(loopbackPortField.textProperty())); loopbackPortApplyButton.disableProperty().bind(Bindings.createBooleanBinding(this::validateLoopbackPort, loopbackPortField.textProperty()).not()); - } private boolean validateLoopbackPort() { @@ -76,6 +83,38 @@ public class VolumePreferencesController implements FxController { return loopbackPortSupported.get(); } + public ObservableValue readonlySupportedProperty() { + return readonlySupported; + } + + public boolean isReadonlySupported() { + return readonlySupported.getValue(); + } + + public ObservableValue mountToDirSupportedProperty() { + return mountToDirSupported; + } + + public boolean isMountToDirSupported() { + return mountToDirSupported.getValue(); + } + + public ObservableValue mountToDriveLetterSupportedProperty() { + return mountToDriveLetterSupported; + } + + public boolean isMountToDriveLetterSupported() { + return mountToDriveLetterSupported.getValue(); + } + + public ObservableValue mountFlagsSupportedProperty() { + return mountFlagsSupported; + } + + public boolean isMountFlagsSupported() { + return mountFlagsSupported.getValue(); + } + /* Helpers */ private static class MountServiceConverter extends StringConverter { @@ -90,6 +129,4 @@ public class VolumePreferencesController implements FxController { throw new UnsupportedOperationException(); } } - - } diff --git a/src/main/resources/fxml/preferences_volume.fxml b/src/main/resources/fxml/preferences_volume.fxml index ec2f9db7b..025b0772b 100644 --- a/src/main/resources/fxml/preferences_volume.fxml +++ b/src/main/resources/fxml/preferences_volume.fxml @@ -1,5 +1,6 @@ + @@ -25,5 +26,32 @@