From 56e7c13cb130b5a59a1b3e37af0e71399c90d8d3 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Wed, 16 Oct 2019 14:32:10 +0200 Subject: [PATCH] including windows mount option for selecting mount point (without functionality) --- .../vaultoptions/MountOptionsController.java | 62 ++++++++++++++++++- .../resources/fxml/vault_options_mount.fxml | 25 +++++++- 2 files changed, 85 insertions(+), 2 deletions(-) diff --git a/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/MountOptionsController.java b/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/MountOptionsController.java index 4ebb35832..a78d3921d 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/MountOptionsController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/MountOptionsController.java @@ -1,8 +1,17 @@ package org.cryptomator.ui.vaultoptions; +import javafx.beans.binding.BooleanBinding; +import javafx.beans.property.BooleanProperty; +import javafx.beans.property.SimpleBooleanProperty; +import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.scene.control.CheckBox; +import javafx.scene.control.RadioButton; import javafx.scene.control.TextField; +import javafx.scene.control.ToggleGroup; +import org.apache.commons.lang3.SystemUtils; +import org.cryptomator.common.settings.Settings; +import org.cryptomator.common.settings.VolumeImpl; import org.cryptomator.common.vaults.Vault; import org.cryptomator.ui.common.FxController; @@ -12,14 +21,22 @@ import javax.inject.Inject; public class MountOptionsController implements FxController { private final Vault vault; + private final BooleanProperty osIsWindows = new SimpleBooleanProperty(SystemUtils.IS_OS_WINDOWS); + private final BooleanBinding adapterIsDokan; + private final ToggleGroup toggleGroup; public TextField driveName; public CheckBox readOnlyCheckbox; public CheckBox customMountFlagsCheckbox; public TextField mountFlags; + public RadioButton automaticDriveLetter; + public RadioButton specificDriveLetter; + public RadioButton specificDirectory; @Inject - MountOptionsController(@VaultOptionsWindow Vault vault) { + MountOptionsController(@VaultOptionsWindow Vault vault, Settings settings) { this.vault = vault; + this.adapterIsDokan = settings.preferredVolumeImpl().isEqualTo(VolumeImpl.DOKANY); + this.toggleGroup = new ToggleGroup(); } @FXML @@ -36,6 +53,9 @@ public class MountOptionsController implements FxController { } else { mountFlags.textProperty().bind(vault.defaultMountFlagsProperty()); } + + toggleGroup.getToggles().addAll(automaticDriveLetter, specificDriveLetter, specificDirectory); + } @FXML @@ -51,4 +71,44 @@ public class MountOptionsController implements FxController { mountFlags.textProperty().bind(vault.defaultMountFlagsProperty()); } } + + @FXML + public void changeMountPointForWindows() { + assert osIsWindows.get(); + if (specificDriveLetter.isSelected()) { + //TODO: set any default free drive letter + } else if (specificDirectory.isSelected()) { + vault.getVaultSettings().usesIndividualMountPath().set(true); + //TODO: open directory picker + + } else { + //set property + vault.getVaultSettings().usesIndividualMountPath().set(false); + vault.getVaultSettings().winDriveLetter().set(null); + vault.getVaultSettings().individualMountPath().set(null); + } + } + + @FXML + public void selectEmptyDirectory(ActionEvent actionEvent) { + } + + // Getter & Setter + + public BooleanProperty osIsWindowsProperty() { + return osIsWindows; + } + + public boolean getOsIsWindows() { + return osIsWindows.get(); + } + + public BooleanBinding adapterIsDokanProperty() { + return adapterIsDokan; + } + + public boolean getAdapterIsDokan() { + return adapterIsDokan.get(); + } + } diff --git a/main/ui/src/main/resources/fxml/vault_options_mount.fxml b/main/ui/src/main/resources/fxml/vault_options_mount.fxml index 379aab460..772065f14 100644 --- a/main/ui/src/main/resources/fxml/vault_options_mount.fxml +++ b/main/ui/src/main/resources/fxml/vault_options_mount.fxml @@ -2,11 +2,15 @@ + + + + - + + +