Browse Source

Implementing new settings and locking after a certain amount of minutes

Martin Beyer 4 years ago
parent
commit
1292548042

+ 13 - 1
main/commons/src/main/java/org/cryptomator/common/settings/VaultSettings.java

@@ -40,6 +40,8 @@ public class VaultSettings {
 	public static final boolean DEFAULT_LOCK_ON_SLEEP = false;
 	public static final boolean DEFAULT_LOCK_AFTER_IDLETIME = false;
 	public static final String DEFAULT_LOCK_IDLETIME_IN_MINUTES = "30";
+	public static final boolean DEFAULT_LOCK_AFTER_TIME = false;
+	public static final String DEFAULT_LOCK_TIME_IN_MINUTES = "30";
 
 	private static final Random RNG = new Random();
 
@@ -58,6 +60,8 @@ public class VaultSettings {
 	private final BooleanProperty lockOnSleep = new SimpleBooleanProperty(DEFAULT_LOCK_ON_SLEEP);
 	private final BooleanProperty lockAfterIdleTime = new SimpleBooleanProperty(DEFAULT_LOCK_AFTER_IDLETIME);
 	private final StringProperty lockIdleTimeInMinutes = new SimpleStringProperty(DEFAULT_LOCK_IDLETIME_IN_MINUTES);
+	private final BooleanProperty lockAfterTime = new SimpleBooleanProperty(DEFAULT_LOCK_AFTER_TIME);
+	private final StringProperty lockTimeInMinutes = new SimpleStringProperty(DEFAULT_LOCK_TIME_IN_MINUTES);
 	private final StringBinding mountName;
 
 	public VaultSettings(String id) {
@@ -66,7 +70,7 @@ public class VaultSettings {
 	}
 
 	Observable[] observables() {
-		return new Observable[]{path, displayName, winDriveLetter, unlockAfterStartup, revealAfterMount, useCustomMountPath, customMountPath, usesReadOnlyMode, mountFlags, filenameLengthLimit, actionAfterUnlock, lockOnSleep, lockAfterIdleTime, lockIdleTimeInMinutes};
+		return new Observable[]{path, displayName, winDriveLetter, unlockAfterStartup, revealAfterMount, useCustomMountPath, customMountPath, usesReadOnlyMode, mountFlags, filenameLengthLimit, actionAfterUnlock, lockOnSleep, lockAfterIdleTime, lockIdleTimeInMinutes, lockAfterTime, lockTimeInMinutes};
 	}
 
 	public static VaultSettings withRandomId() {
@@ -179,6 +183,14 @@ public class VaultSettings {
 		return lockIdleTimeInMinutes;
 	}
 
+	public BooleanProperty lockAfterTime() {
+		return lockAfterTime;
+	}
+
+	public StringProperty lockTimeInMinutes() {
+		return lockTimeInMinutes;
+	}
+
 	/* Hashcode/Equals */
 
 	@Override

+ 8 - 0
main/commons/src/main/java/org/cryptomator/common/settings/VaultSettingsJsonAdapter.java

@@ -34,6 +34,8 @@ class VaultSettingsJsonAdapter {
 		out.name("lockOnSleep").value(value.lockOnSleep().get());
 		out.name("lockAfterIdleTime").value(value.lockAfterIdleTime().get());
 		out.name("lockIdleTimeInMinutes").value(value.lockIdleTimeInMinutes().get());
+		out.name("lockAfterTime").value(value.lockAfterTime().get());
+		out.name("lockTimeInMinutes").value(value.lockTimeInMinutes().get());
 		out.endObject();
 	}
 
@@ -54,6 +56,8 @@ class VaultSettingsJsonAdapter {
 		boolean lockOnSleep = VaultSettings.DEFAULT_LOCK_ON_SLEEP;
 		boolean lockAfterIdleTime = VaultSettings.DEFAULT_LOCK_AFTER_IDLETIME;
 		String lockIdleTimeInMinutes = VaultSettings.DEFAULT_LOCK_IDLETIME_IN_MINUTES;
+		boolean lockAfterTime = VaultSettings.DEFAULT_LOCK_AFTER_TIME;
+		String lockTimeInMinutes = VaultSettings.DEFAULT_LOCK_TIME_IN_MINUTES;
 
 		in.beginObject();
 		while (in.hasNext()) {
@@ -75,6 +79,8 @@ class VaultSettingsJsonAdapter {
 				case "lockOnSleep" -> lockOnSleep = in.nextBoolean();
 				case "lockAfterIdleTime" -> lockAfterIdleTime = in.nextBoolean();
 				case "lockIdleTimeInMinutes" -> lockIdleTimeInMinutes = in.nextString();
+				case "lockAfterTime" -> lockAfterTime = in.nextBoolean();
+				case "lockTimeInMinutes" -> lockTimeInMinutes = in.nextString();
 				default -> {
 					LOG.warn("Unsupported vault setting found in JSON: " + name);
 					in.skipValue();
@@ -102,6 +108,8 @@ class VaultSettingsJsonAdapter {
 		vaultSettings.lockOnSleep().set(lockOnSleep);
 		vaultSettings.lockAfterIdleTime().set(lockAfterIdleTime);
 		vaultSettings.lockIdleTimeInMinutes().set(lockIdleTimeInMinutes);
+		vaultSettings.lockAfterTime().set(lockAfterTime);
+		vaultSettings.lockTimeInMinutes().set(lockTimeInMinutes);
 		return vaultSettings;
 	}
 

File diff suppressed because it is too large
+ 28 - 10
main/ui/src/main/java/org/cryptomator/ui/fxapp/FxApplication.java


+ 4 - 1
main/ui/src/main/java/org/cryptomator/ui/vaultoptions/AutoLockVaultOptionsController.java

@@ -19,13 +19,14 @@ public class AutoLockVaultOptionsController implements FxController {
 	private final Stage window;
 	public CheckBox lockOnSleepCheckbox;
 	public CheckBox lockAfterIdleTimeCheckbox;
+	public CheckBox lockAfterTimeCheckbox;
 	public TextField lockIdleTimeInMinutesTextField;
+	public TextField lockTimeInMinutesTextField;
 
 	@Inject
 	AutoLockVaultOptionsController(@VaultOptionsWindow Stage window, @VaultOptionsWindow Vault vault, ResourceBundle resourceBundle) {
 		this.window = window;
 		this.vault = vault;
-		//this.resourceBundle = resourceBundle;
 	}
 
 	@FXML
@@ -33,5 +34,7 @@ public class AutoLockVaultOptionsController implements FxController {
 		lockOnSleepCheckbox.selectedProperty().bindBidirectional(vault.getVaultSettings().lockOnSleep());
 		lockAfterIdleTimeCheckbox.selectedProperty().bindBidirectional(vault.getVaultSettings().lockAfterIdleTime());
 		lockIdleTimeInMinutesTextField.textProperty().bindBidirectional(vault.getVaultSettings().lockIdleTimeInMinutes());
+		lockAfterTimeCheckbox.selectedProperty().bindBidirectional(vault.getVaultSettings().lockAfterTime());
+		lockTimeInMinutesTextField.textProperty().bindBidirectional(vault.getVaultSettings().lockTimeInMinutes());
 	}
 }

+ 9 - 1
main/ui/src/main/resources/fxml/vault_options_autolock.fxml

@@ -15,11 +15,19 @@
 		<Insets topRightBottomLeft="12"/>
 	</padding>
 	<children>
+		<TextFlow styleClass="text-flow" prefWidth="-Infinity">
+			<CheckBox text="%vaultOptions.autoLock.lockAfterTimePart1" fx:id="lockAfterTimeCheckbox"/>
+			<Text text=" "/>
+			<TextField fx:id="lockTimeInMinutesTextField" prefWidth="50"/>
+			<Text text=" "/>
+			<FormattedLabel format="%vaultOptions.autoLock.lockAfterTimePart2"/>
+		</TextFlow>
+
 		<CheckBox text="%vaultOptions.autoLock.lockOnSleep" fx:id="lockOnSleepCheckbox"/>
 		<TextFlow styleClass="text-flow" prefWidth="-Infinity">
 			<CheckBox text="%vaultOptions.autoLock.lockAfterIdleTimePart1" fx:id="lockAfterIdleTimeCheckbox"/>
 			<Text text=" "/>
-			<TextField fx:id="lockIdleTimeInMinutesTextField" prefWidth="50"/> <!--prefWidth="${controller.calculatedWidthForTextfield}"/>-->
+			<TextField fx:id="lockIdleTimeInMinutesTextField" prefWidth="50"/>
 			<Text text=" "/>
 			<FormattedLabel format="%vaultOptions.autoLock.lockAfterIdleTimePart2"/>
 		</TextFlow>

+ 2 - 1
main/ui/src/main/resources/i18n/strings.properties

@@ -297,7 +297,8 @@ vaultOptions.autoLock=Auto-Lock
 vaultOptions.autoLock.lockOnSleep=Lock on sleep
 vaultOptions.autoLock.lockAfterIdleTimePart1=Lock after computer is idle for
 vaultOptions.autoLock.lockAfterIdleTimePart2=minutes.
-vaultOptions.autoLock.lockAfterAmountOfIdleTime=Following minutes are set: 
+vaultOptions.autoLock.lockAfterTimePart1=Lock after
+vaultOptions.autoLock.lockAfterTimePart2=minutes.
 
 # Recovery Key
 recoveryKey.title=Recovery Key