소스 검색

Fixes #1267 by binding the settings.preferredVolumeImpl to VolumeImpl.WEBDAV, if preferredVolimeImpl isn't available

Martin Beyer 4 년 전
부모
커밋
0091c401df

+ 9 - 4
main/ui/src/main/java/org/cryptomator/ui/preferences/VolumePreferencesController.java

@@ -3,6 +3,7 @@ package org.cryptomator.ui.preferences;
 import javafx.beans.binding.Bindings;
 import javafx.beans.binding.BooleanBinding;
 import javafx.beans.property.SimpleBooleanProperty;
+import javafx.beans.property.SimpleObjectProperty;
 import javafx.scene.control.Button;
 import javafx.scene.control.ChoiceBox;
 import javafx.scene.control.TextField;
@@ -25,7 +26,7 @@ public class VolumePreferencesController implements FxController {
 	private final Settings settings;
 	private final BooleanBinding showWebDavSettings;
 	private final BooleanBinding showWebDavScheme;
-	public ChoiceBox<VolumeImpl> volumeTypeChoicBox;
+	public ChoiceBox<VolumeImpl> volumeTypeChoiceBox;
 	public TextField webDavPortField;
 	public Button changeWebDavPortButton;
 	public ChoiceBox<WebDavUrlScheme> webDavUrlSchemeChoiceBox;
@@ -38,9 +39,13 @@ public class VolumePreferencesController implements FxController {
 	}
 
 	public void initialize() {
-		volumeTypeChoicBox.getItems().addAll(Volume.getCurrentSupportedAdapters());
-		volumeTypeChoicBox.valueProperty().bindBidirectional(settings.preferredVolumeImpl());
-		volumeTypeChoicBox.setConverter(new VolumeImplConverter());
+		volumeTypeChoiceBox.getItems().addAll(Volume.getCurrentSupportedAdapters());
+		//If the in the settings specified preferredVolumeImplementation isn't available, overwrite the settings to use the default VolumeImpl.WEBDAV
+		if (!volumeTypeChoiceBox.getItems().contains(settings.preferredVolumeImpl().get())) {
+			settings.preferredVolumeImpl().bind(new SimpleObjectProperty<>(VolumeImpl.WEBDAV));
+		}
+		volumeTypeChoiceBox.valueProperty().bindBidirectional(settings.preferredVolumeImpl());
+		volumeTypeChoiceBox.setConverter(new VolumeImplConverter());
 
 		webDavPortField.setText(String.valueOf(settings.port().get()));
 		changeWebDavPortButton.visibleProperty().bind(settings.port().asString().isNotEqualTo(webDavPortField.textProperty()));

+ 1 - 1
main/ui/src/main/resources/fxml/preferences_volume.fxml

@@ -17,7 +17,7 @@
 	<children>
 		<HBox spacing="6" alignment="CENTER_LEFT">
 			<Label text="%preferences.volume.type"/>
-			<ChoiceBox fx:id="volumeTypeChoicBox"/>
+			<ChoiceBox fx:id="volumeTypeChoiceBox"/>
 		</HBox>
 
 		<HBox spacing="6" alignment="CENTER_LEFT" visible="${controller.showWebDavSettings}">