From 1052e4c3d2a0d4a5efe72d8e28124ad4bdd8f8d5 Mon Sep 17 00:00:00 2001 From: Jan-Peter Klein Date: Thu, 23 Nov 2023 10:55:17 +0100 Subject: [PATCH] fix gui issues in vault mount settings --- .../vaultoptions/MountOptionsController.java | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/cryptomator/ui/vaultoptions/MountOptionsController.java b/src/main/java/org/cryptomator/ui/vaultoptions/MountOptionsController.java index 66c0b1685..9d28d8d9d 100644 --- a/src/main/java/org/cryptomator/ui/vaultoptions/MountOptionsController.java +++ b/src/main/java/org/cryptomator/ui/vaultoptions/MountOptionsController.java @@ -97,12 +97,15 @@ public class MountOptionsController implements FxController { this.application = application; this.mountProviders = mountProviders; var fallbackProvider = mountProviders.stream().findFirst().orElse(null); - this.defaultMountService = ObservableUtil.mapWithDefault(settings.mountService, serviceName -> mountProviders.stream().filter(s -> s.getClass().getName().equals(serviceName)).findFirst().orElse(fallbackProvider), fallbackProvider); - this.selectedMountService = ObservableUtil.mapWithDefault(vaultSettings.mountService, serviceName -> mountProviders.stream().filter(s -> s.getClass().getName().equals(serviceName)).findFirst().orElse(defaultMountService.getValue()), defaultMountService.getValue()); - this.fuseRestartRequired = selectedMountService.map(s -> // - firstUsedProblematicFuseMountService.get() != null // - && VaultModule.isProblematicFuseService(s) // - && !firstUsedProblematicFuseMountService.get().equals(s) + this.defaultMountService = ObservableUtil.mapWithDefault(settings.mountService, // + serviceName -> mountProviders.stream().filter(s -> s.getClass().getName().equals(serviceName)).findFirst().orElse(fallbackProvider), // + fallbackProvider); + this.selectedMountService = Bindings.createObjectBinding(this::reselectMountService, defaultMountService, vaultSettings.mountService); + this.fuseRestartRequired = selectedMountService.map(s -> { + return firstUsedProblematicFuseMountService.get() != null // + && VaultModule.isProblematicFuseService(s) // + && !firstUsedProblematicFuseMountService.get().equals(s); + } ); this.loopbackPortSupported = BooleanExpression.booleanExpression(selectedMountService.map(s -> s.hasCapability(MountCapability.LOOPBACK_PORT))); @@ -119,8 +122,16 @@ public class MountOptionsController implements FxController { this.mountpointDriveLetterSupported = selectedMountService.map(s -> s.hasCapability(MountCapability.MOUNT_AS_DRIVE_LETTER)); } + private MountService reselectMountService() { + var desired = vaultSettings.mountService.getValue(); + var defaultMS = defaultMountService.getValue(); + return mountProviders.stream().filter(s -> s.getClass().getName().equals(desired)).findFirst().orElse(defaultMS); + } + @FXML public void initialize() { + defaultMountService.addListener((_,_,_) -> vaultVolumeTypeChoiceBox.setConverter(new MountServiceConverter())); + // readonly: readOnlyCheckbox.selectedProperty().bindBidirectional(vaultSettings.usesReadOnlyMode);