diff --git a/src/main/java/org/cryptomator/common/mount/MountModule.java b/src/main/java/org/cryptomator/common/mount/MountModule.java index 258d8b4a2..3b6fa63c7 100644 --- a/src/main/java/org/cryptomator/common/mount/MountModule.java +++ b/src/main/java/org/cryptomator/common/mount/MountModule.java @@ -22,8 +22,7 @@ public class MountModule { @Provides @Singleton static ObservableValue provideDefaultMountService(List mountProviders, Settings settings) { - var fallbackProvider = mountProviders.stream().findFirst().orElse(null); - + var fallbackProvider = mountProviders.stream().findFirst().get(); //there should always be a mount provider, at least webDAV return ObservableUtil.mapWithDefault(settings.mountService, // serviceName -> mountProviders.stream().filter(s -> s.getClass().getName().equals(serviceName)).findFirst().orElse(fallbackProvider), // fallbackProvider); diff --git a/src/main/java/org/cryptomator/ui/vaultoptions/MountOptionsController.java b/src/main/java/org/cryptomator/ui/vaultoptions/MountOptionsController.java index 01dbe01b4..6340852f4 100644 --- a/src/main/java/org/cryptomator/ui/vaultoptions/MountOptionsController.java +++ b/src/main/java/org/cryptomator/ui/vaultoptions/MountOptionsController.java @@ -2,6 +2,7 @@ package org.cryptomator.ui.vaultoptions; import com.google.common.base.Strings; import dagger.Lazy; +import org.cryptomator.common.ObservableUtil; import org.cryptomator.common.mount.Mounter; import org.cryptomator.common.mount.WindowsDriveLetters; import org.cryptomator.common.settings.VaultSettings; @@ -60,7 +61,7 @@ public class MountOptionsController implements FxController { private final ObservableValue defaultMountService; private final ObservableValue selectedMountService; private final ObservableValue fuseRestartRequired; - private final ObservableValue loopbackPortSupported; + private final ObservableValue loopbackPortChangeable; //-- FXML objects -- @@ -112,11 +113,11 @@ public class MountOptionsController implements FxController { } }); this.mountFlagsSupported = selectedMountService.map(s -> s.hasCapability(MountCapability.MOUNT_FLAGS)); - this.defaultMountServiceSelected = selectedMountService.map(_ -> vaultSettings.mountService.getValue() == null); + 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.loopbackPortSupported = selectedMountService.map(s -> s.hasCapability(MountCapability.LOOPBACK_PORT) && vaultSettings.mountService.getValue() != null); + this.loopbackPortChangeable = selectedMountService.map(s -> s.hasCapability(MountCapability.LOOPBACK_PORT) && vaultSettings.mountService.getValue() != null); } private MountService reselectMountService() { @@ -159,9 +160,8 @@ public class MountOptionsController implements FxController { vaultVolumeTypeChoiceBox.getItems().add(null); vaultVolumeTypeChoiceBox.getItems().addAll(mountProviders); vaultVolumeTypeChoiceBox.setConverter(new MountServiceConverter()); - boolean autoSelected = vaultSettings.mountService.get() == null; - vaultVolumeTypeChoiceBox.getSelectionModel().select(autoSelected ? null : selectedMountService.getValue()); - vaultVolumeTypeChoiceBox.valueProperty().addListener((observableValue, oldProvider, newProvider) -> { + vaultVolumeTypeChoiceBox.getSelectionModel().select(isDefaultMountServiceSelected() ? null : selectedMountService.getValue()); + vaultVolumeTypeChoiceBox.valueProperty().addListener((_, _, newProvider) -> { var toSet = Optional.ofNullable(newProvider).map(nP -> nP.getClass().getName()).orElse(null); vaultSettings.mountService.set(toSet); }); @@ -375,12 +375,12 @@ public class MountOptionsController implements FxController { return fuseRestartRequired.getValue(); } - public ObservableValue loopbackPortSupportedProperty() { - return loopbackPortSupported; + public ObservableValue loopbackPortChangeableProperty() { + return loopbackPortChangeable; } - public boolean isLoopbackPortSupported() { - return loopbackPortSupported.getValue(); + public boolean isLoopbackPortChangeable() { + return loopbackPortChangeable.getValue(); } private class MountServiceConverter extends StringConverter { diff --git a/src/main/resources/fxml/vault_options_mount.fxml b/src/main/resources/fxml/vault_options_mount.fxml index 762f51c79..ae8612bc5 100644 --- a/src/main/resources/fxml/vault_options_mount.fxml +++ b/src/main/resources/fxml/vault_options_mount.fxml @@ -14,7 +14,6 @@ - - +