diff --git a/main/ui/src/main/java/org/cryptomator/ui/controllers/MainController.java b/main/ui/src/main/java/org/cryptomator/ui/controllers/MainController.java
index 682cd0afb..202267215 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/controllers/MainController.java
+++ b/main/ui/src/main/java/org/cryptomator/ui/controllers/MainController.java
@@ -396,7 +396,7 @@ public class MainController implements ViewController {
} else if (newValue.isValidVaultDirectory() && upgradeStrategyForSelectedVault.isPresent()) {
this.showUpgradeView();
} else if (newValue.isValidVaultDirectory()) {
- this.showUnlockView();
+ this.showUnlockView(UnlockController.State.UNLOCKING);
} else {
this.showInitializeView();
}
@@ -446,7 +446,7 @@ public class MainController implements ViewController {
}
public void didInitialize() {
- showUnlockView();
+ showUnlockView(UnlockController.State.INITIALIZED);
activeController.get().focus();
}
@@ -458,13 +458,13 @@ public class MainController implements ViewController {
}
public void didUpgrade() {
- showUnlockView();
+ showUnlockView(UnlockController.State.UPGRADED);
activeController.get().focus();
}
- private void showUnlockView() {
+ private void showUnlockView(UnlockController.State state) {
final UnlockController ctrl = viewControllerLoader.load("/fxml/unlock.fxml");
- ctrl.setVault(selectedVault.get());
+ ctrl.setVault(selectedVault.get(), state);
ctrl.setListener(this::didUnlock);
activeController.set(ctrl);
}
@@ -486,7 +486,7 @@ public class MainController implements ViewController {
public void didLock(UnlockedController ctrl) {
unlockedVaults.remove(ctrl.getVault());
- showUnlockView();
+ showUnlockView(UnlockController.State.UNLOCKING);
activeController.get().focus();
}
@@ -499,7 +499,7 @@ public class MainController implements ViewController {
}
public void didChangePassword() {
- showUnlockView();
+ showUnlockView(UnlockController.State.PASSWORD_CHANGED);
activeController.get().focus();
}
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 6d30a7e2f..9369632f7 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
@@ -94,6 +94,9 @@ public class UnlockController implements ViewController {
@FXML
private Button unlockButton;
+ @FXML
+ private Label successMessage;
+
@FXML
private CheckBox savePassword;
@@ -160,7 +163,7 @@ public class UnlockController implements ViewController {
passwordField.requestFocus();
}
- void setVault(Vault vault) {
+ void setVault(Vault vault, State state) {
vaultSubs.unsubscribe();
vaultSubs = Subscription.EMPTY;
@@ -175,6 +178,10 @@ public class UnlockController implements ViewController {
advancedOptions.setVisible(false);
advancedOptionsButton.setText(localization.getString("unlock.button.advancedOptions.show"));
progressIndicator.setVisible(false);
+ successMessage.setVisible(didChange(state));
+ if (successMessage.isVisible()) {
+ successMessage.setText(localization.getString(state.successMessage()));
+ }
if (SystemUtils.IS_OS_WINDOWS) {
winDriveLetter.valueProperty().removeListener(driveLetterChangeListener);
winDriveLetter.getItems().clear();
@@ -225,6 +232,7 @@ public class UnlockController implements ViewController {
@FXML
private void didClickAdvancedOptionsButton(ActionEvent event) {
+ successMessage.setVisible(false);
advancedOptions.setVisible(!advancedOptions.isVisible());
if (advancedOptions.isVisible()) {
advancedOptionsButton.setText(localization.getString("unlock.button.advancedOptions.hide"));
@@ -389,6 +397,15 @@ public class UnlockController implements ViewController {
}).run();
}
+ private boolean didChange(State state) {
+ switch (state) {
+ case UNLOCKING:
+ return false;
+ default:
+ return true;
+ }
+ }
+
/* callback */
public void setListener(UnlockListener listener) {
@@ -400,4 +417,27 @@ public class UnlockController implements ViewController {
void didUnlock(Vault vault);
}
+ /* state */
+
+ public enum State {
+ UNLOCKING(empty()),
+ INITIALIZED("unlock.successLabel.vaultCreated"),
+ PASSWORD_CHANGED("unlock.successLabel.passwordChanged"),
+ UPGRADED("unlock.successLabel.upgraded");
+
+ private static String empty() {
+ return "";
+ }
+
+ private String successMessage;
+
+ State(String successMessage) {
+ this.successMessage = successMessage;
+ }
+
+ public String successMessage() {
+ return successMessage;
+ }
+ }
+
}
diff --git a/main/ui/src/main/resources/fxml/unlock.fxml b/main/ui/src/main/resources/fxml/unlock.fxml
index 3d5872bf4..399aaf2fc 100644
--- a/main/ui/src/main/resources/fxml/unlock.fxml
+++ b/main/ui/src/main/resources/fxml/unlock.fxml
@@ -46,6 +46,9 @@
+
+
+
diff --git a/main/ui/src/main/resources/localization/de.txt b/main/ui/src/main/resources/localization/de.txt
index c402c51fa..8b2118836 100644
--- a/main/ui/src/main/resources/localization/de.txt
+++ b/main/ui/src/main/resources/localization/de.txt
@@ -34,6 +34,10 @@ unlock.errorMessage.wrongPassword = Falsches Passwort
unlock.errorMessage.unsupportedVersion.vaultOlderThanSoftware = Tresor nicht unterstützt. Der Tresor wurde mit einer älteren Version von Cryptomator erstellt.
unlock.errorMessage.unsupportedVersion.softwareOlderThanVault = Tresor nicht unterstützt. Der Tresor wurde mit einer neueren Version von Cryptomator erstellt.
unlock.messageLabel.startServerFailed = Starten des WebDAV-Servers fehlgeschlagen.
+unlock.successLabel.vaultCreated = Der Tresor wurde erfolgreich erstellt.
+unlock.successLabel.passwordChanged = Das Passwort wurde erfolgreich geändert.
+unlock.successLabel.upgraded = Cryptomator wurde erfolgreich geupdated.
+
# change_password.fxml
changePassword.label.oldPassword = Altes Passwort
changePassword.label.newPassword = Neues Passwort
diff --git a/main/ui/src/main/resources/localization/en.txt b/main/ui/src/main/resources/localization/en.txt
index fb27ddf01..ce39123e7 100644
--- a/main/ui/src/main/resources/localization/en.txt
+++ b/main/ui/src/main/resources/localization/en.txt
@@ -82,6 +82,9 @@ unlock.errorMessage.unsupportedVersion.vaultOlderThanSoftware=Unsupported vault.
unlock.errorMessage.unsupportedVersion.softwareOlderThanVault=Unsupported vault. This vault has been created with a newer version of Cryptomator.
unlock.errorMessage.unauthenticVersionMac=Could not authenticate version MAC.
unlock.messageLabel.startServerFailed=Starting WebDAV server failed.
+unlock.successLabel.vaultCreated=Vault was successfully created.
+unlock.successLabel.passwordChanged=Password was successfully changed.
+unlock.successLabel.upgraded=Cryptomator was successfully upgraded.
# change_password.fxml
changePassword.label.oldPassword=Old Password