From 7e46957bcb1426f558aadc41f995641f38f1bc15 Mon Sep 17 00:00:00 2001 From: Gregvh <38659324+Gregvh@users.noreply.github.com> Date: Thu, 13 Sep 2018 14:43:42 +0200 Subject: [PATCH] Add read-only option to the advanced settings --- .../common/settings/VaultSettings.java | 8 +++++++- .../settings/VaultSettingsJsonAdapter.java | 6 ++++++ .../ui/controllers/UnlockController.java | 6 +++++- main/ui/src/main/resources/fxml/unlock.fxml | 19 +++++++++++-------- .../ui/src/main/resources/localization/en.txt | 1 + 5 files changed, 30 insertions(+), 10 deletions(-) diff --git a/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettings.java b/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettings.java index 1f8510d99..087c9b200 100644 --- a/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettings.java +++ b/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettings.java @@ -28,6 +28,7 @@ public class VaultSettings { public static final boolean DEFAULT_UNLOCK_AFTER_STARTUP = false; public static final boolean DEFAULT_REAVEAL_AFTER_MOUNT = true; public static final boolean DEFAULT_USES_INDIVIDUAL_MOUNTPATH = false; + public static final boolean DEFAULT_USES_READONLY_MODE = false; private final String id; private final ObjectProperty path = new SimpleObjectProperty<>(); @@ -37,6 +38,7 @@ public class VaultSettings { private final BooleanProperty revealAfterMount = new SimpleBooleanProperty(DEFAULT_REAVEAL_AFTER_MOUNT); private final BooleanProperty usesIndividualMountPath = new SimpleBooleanProperty(DEFAULT_USES_INDIVIDUAL_MOUNTPATH); private final StringProperty individualMountPath = new SimpleStringProperty(); + private final BooleanProperty usesReadOnlyMode = new SimpleBooleanProperty(DEFAULT_USES_READONLY_MODE); public VaultSettings(String id) { this.id = Objects.requireNonNull(id); @@ -45,7 +47,7 @@ public class VaultSettings { } Observable[] observables() { - return new Observable[]{path, mountName, winDriveLetter, unlockAfterStartup, revealAfterMount, usesIndividualMountPath, individualMountPath}; + return new Observable[]{path, mountName, winDriveLetter, unlockAfterStartup, revealAfterMount, usesIndividualMountPath, individualMountPath, usesReadOnlyMode}; } private void deriveMountNameFromPath(Path path) { @@ -128,6 +130,10 @@ public class VaultSettings { return individualMountPath; } + public BooleanProperty usesReadOnlyMode() { + return usesReadOnlyMode; + } + /* Hashcode/Equals */ @Override diff --git a/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettingsJsonAdapter.java b/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettingsJsonAdapter.java index 5fb30ef88..96d983d9b 100644 --- a/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettingsJsonAdapter.java +++ b/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettingsJsonAdapter.java @@ -29,6 +29,7 @@ class VaultSettingsJsonAdapter { out.name("usesIndividualMountPath").value(value.usesIndividualMountPath().get()); //TODO: should this always be written? ( because it could contain metadata, which the user does not want to save!) out.name("individualMountPath").value(value.individualMountPath().get()); + out.name("usesReadOnlyMode").value(value.usesReadOnlyMode().get()); out.endObject(); } @@ -41,6 +42,7 @@ class VaultSettingsJsonAdapter { boolean unlockAfterStartup = VaultSettings.DEFAULT_UNLOCK_AFTER_STARTUP; boolean revealAfterMount = VaultSettings.DEFAULT_REAVEAL_AFTER_MOUNT; boolean usesIndividualMountPath = VaultSettings.DEFAULT_USES_INDIVIDUAL_MOUNTPATH; + boolean usesReadOnlyMode = VaultSettings.DEFAULT_USES_READONLY_MODE; in.beginObject(); while (in.hasNext()) { @@ -70,6 +72,9 @@ class VaultSettingsJsonAdapter { case "individualMountPath": individualMountPath = in.nextString(); break; + case "usesReadOnlyMode": + usesReadOnlyMode = in.nextBoolean(); + break; default: LOG.warn("Unsupported vault setting found in JSON: " + name); in.skipValue(); @@ -85,6 +90,7 @@ class VaultSettingsJsonAdapter { vaultSettings.revealAfterMount().set(revealAfterMount); vaultSettings.usesIndividualMountPath().set(usesIndividualMountPath); vaultSettings.individualMountPath().set(individualMountPath); + vaultSettings.usesReadOnlyMode().set(usesReadOnlyMode); return vaultSettings; } diff --git a/main/ui/src/main/java/org/cryptomator/ui/controllers/UnlockController.java b/main/ui/src/main/java/org/cryptomator/ui/controllers/UnlockController.java index 9584bfc81..1b01bcef4 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/controllers/UnlockController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/controllers/UnlockController.java @@ -141,6 +141,9 @@ public class UnlockController implements ViewController { @FXML private CheckBox unlockAfterStartup; + @FXML + private CheckBox useReadOnlyMode; + @Override public void initialize() { advancedOptions.managedProperty().bind(advancedOptions.visibleProperty()); @@ -232,11 +235,12 @@ public class UnlockController implements ViewController { unlockAfterStartup.setSelected(savePassword.isSelected() && vaultSettings.unlockAfterStartup().get()); revealAfterMount.setSelected(vaultSettings.revealAfterMount().get()); useOwnMountPath.setSelected(vaultSettings.usesIndividualMountPath().get()); + useReadOnlyMode.setSelected(vaultSettings.usesReadOnlyMode().get()); vaultSubs = vaultSubs.and(EasyBind.subscribe(unlockAfterStartup.selectedProperty(), vaultSettings.unlockAfterStartup()::set)); vaultSubs = vaultSubs.and(EasyBind.subscribe(revealAfterMount.selectedProperty(), vaultSettings.revealAfterMount()::set)); vaultSubs = vaultSubs.and(EasyBind.subscribe(useOwnMountPath.selectedProperty(), vaultSettings.usesIndividualMountPath()::set)); - + vaultSubs = vaultSubs.and(EasyBind.subscribe(useReadOnlyMode.selectedProperty(), vaultSettings.usesReadOnlyMode()::set)); mountPath.textProperty().setValue(vaultSettings.individualMountPath().getValueSafe()); diff --git a/main/ui/src/main/resources/fxml/unlock.fxml b/main/ui/src/main/resources/fxml/unlock.fxml index 5675556a1..ca4463b26 100644 --- a/main/ui/src/main/resources/fxml/unlock.fxml +++ b/main/ui/src/main/resources/fxml/unlock.fxml @@ -82,16 +82,19 @@ - - -