From 842a0d6ff3f953d132992bec54d38ad3674609cd Mon Sep 17 00:00:00 2001 From: Martin Beyer Date: Wed, 20 May 2020 15:02:53 +0200 Subject: [PATCH] Implements #1183 Saved Passwords are indicated --- .../VaultDetailLockedController.java | 27 +++++++++++++++++-- .../resources/fxml/vault_detail_locked.fxml | 14 +++++++++- .../main/resources/i18n/strings.properties | 4 ++- 3 files changed, 41 insertions(+), 4 deletions(-) diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailLockedController.java b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailLockedController.java index 434a5b7ef..8161d1365 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailLockedController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailLockedController.java @@ -1,14 +1,19 @@ package org.cryptomator.ui.mainwindow; +import javafx.beans.binding.BooleanExpression; import javafx.beans.property.ObjectProperty; import javafx.beans.property.ReadOnlyObjectProperty; +import javafx.beans.property.SimpleBooleanProperty; import javafx.fxml.FXML; import org.cryptomator.common.vaults.Vault; +import org.cryptomator.keychain.KeychainManager; import org.cryptomator.ui.common.FxController; import org.cryptomator.ui.fxapp.FxApplication; import org.cryptomator.ui.vaultoptions.VaultOptionsComponent; +import org.fxmisc.easybind.EasyBind; import javax.inject.Inject; +import java.util.Optional; @MainWindowScoped public class VaultDetailLockedController implements FxController { @@ -16,12 +21,20 @@ public class VaultDetailLockedController implements FxController { private final ReadOnlyObjectProperty vault; private final FxApplication application; private final VaultOptionsComponent.Builder vaultOptionsWindow; + private final Optional keychainManagerOptional; + private final BooleanExpression passwordSaved; @Inject - VaultDetailLockedController(ObjectProperty vault, FxApplication application, VaultOptionsComponent.Builder vaultOptionsWindow) { + VaultDetailLockedController(ObjectProperty vault, FxApplication application, VaultOptionsComponent.Builder vaultOptionsWindow, Optional keychainManagerOptional) { this.vault = vault; this.application = application; this.vaultOptionsWindow = vaultOptionsWindow; + this.keychainManagerOptional = keychainManagerOptional; + if (keychainManagerOptional.isPresent()) { + this.passwordSaved = BooleanExpression.booleanExpression(EasyBind.select(vault).selectObject(v -> keychainManagerOptional.get().getPassphraseStoredProperty(v.getId()))); + } else { + this.passwordSaved = new SimpleBooleanProperty(false); + } } @FXML @@ -33,7 +46,7 @@ public class VaultDetailLockedController implements FxController { public void showVaultOptions() { vaultOptionsWindow.vault(vault.get()).build().showVaultOptionsWindow(); } - + /* Getter/Setter */ public ReadOnlyObjectProperty vaultProperty() { @@ -43,4 +56,14 @@ public class VaultDetailLockedController implements FxController { public Vault getVault() { return vault.get(); } + + public BooleanExpression passwordSavedProperty() { + return passwordSaved; + } + + public boolean isPasswordSaved() { + if (keychainManagerOptional.isPresent() && vault.get() != null) { + return keychainManagerOptional.get().getPassphraseStoredProperty(vault.get().getId()).get(); + } else return false; + } } diff --git a/main/ui/src/main/resources/fxml/vault_detail_locked.fxml b/main/ui/src/main/resources/fxml/vault_detail_locked.fxml index 05c3c7400..ca0c9fdce 100644 --- a/main/ui/src/main/resources/fxml/vault_detail_locked.fxml +++ b/main/ui/src/main/resources/fxml/vault_detail_locked.fxml @@ -5,6 +5,9 @@ + + + - +