#929, implemented functionality to add existing vault

This commit is contained in:
Armin Schrenk
2019-07-24 17:12:09 +02:00
parent cd284304cd
commit 1a5853766a
4 changed files with 30 additions and 5 deletions

View File

@@ -6,6 +6,7 @@ import dagger.Provides;
import dagger.multibindings.IntoMap;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.collections.ObservableList;
import javafx.stage.Modality;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
@@ -13,6 +14,7 @@ import org.cryptomator.ui.common.FXMLLoaderFactory;
import org.cryptomator.ui.common.FxController;
import org.cryptomator.ui.common.FxControllerKey;
import org.cryptomator.ui.mainwindow.MainWindow;
import org.cryptomator.ui.model.Vault;
import javax.inject.Provider;
import java.nio.file.Path;
@@ -47,6 +49,12 @@ public abstract class AddVaultModule {
return new SimpleObjectProperty<>();
}
@Provides
@AddVaultWizardScoped
static ObservableList<Vault> provideVaults(@AddVaultWizard ObservableList<Vault> vaults) {
return vaults;
}
// ------------------
@Binds

View File

@@ -5,9 +5,12 @@
*******************************************************************************/
package org.cryptomator.ui.addvaultwizard;
import dagger.BindsInstance;
import dagger.Subcomponent;
import javafx.collections.ObservableList;
import javafx.stage.Stage;
import org.cryptomator.ui.common.FXMLLoaderFactory;
import org.cryptomator.ui.model.Vault;
@AddVaultWizardScoped
@Subcomponent(modules = {AddVaultModule.class})
@@ -29,6 +32,9 @@ public interface AddVaultWizardComponent {
@Subcomponent.Builder
interface Builder {
@BindsInstance
Builder vaults(@AddVaultWizard ObservableList<Vault> vaults);
AddVaultWizardComponent build();
}

View File

@@ -1,11 +1,15 @@
package org.cryptomator.ui.addvaultwizard;
import javafx.beans.property.ObjectProperty;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.stage.FileChooser;
import javafx.stage.Stage;
import org.cryptomator.common.settings.VaultSettings;
import org.cryptomator.ui.common.FXMLLoaderFactory;
import org.cryptomator.ui.common.FxController;
import org.cryptomator.ui.model.Vault;
import org.cryptomator.ui.model.VaultFactory;
import javax.inject.Inject;
import java.io.File;
@@ -17,23 +21,27 @@ public class ChooseExistingVaultController implements FxController {
private final Stage window;
private final FXMLLoaderFactory fxmlLoaders;
private final ObjectProperty<Path> vaultPath;
private final ObservableList<Vault> vaults;
private final VaultFactory vaultFactory;
@Inject
ChooseExistingVaultController(@AddVaultWizard Stage window, @AddVaultWizard FXMLLoaderFactory fxmlLoaders, ObjectProperty<Path> vaultPath) {
ChooseExistingVaultController(@AddVaultWizard Stage window, @AddVaultWizard FXMLLoaderFactory fxmlLoaders, ObjectProperty<Path> vaultPath, @AddVaultWizard ObservableList<Vault> vaults, VaultFactory vaultFactory) {
this.window = window;
this.fxmlLoaders = fxmlLoaders;
this.vaultPath = vaultPath;
this.vaults = vaults;
this.vaultFactory = vaultFactory;
}
@FXML
public void chooseFile() {
FileChooser fileChooser = new FileChooser();
//TODO: Title is part of the localization. => inject resource bundle and get correct title
fileChooser.setTitle("Open Masterkey File");
fileChooser.setTitle("TODO Open Masterkey File");
fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("Cryptomator Masterkey", "*.cryptomator"));
final File file = fileChooser.showOpenDialog(window);
if (file != null) {
vaultPath.setValue(file.toPath().toAbsolutePath());
vaultPath.setValue(file.toPath().toAbsolutePath().getParent());
}
}
@@ -44,7 +52,10 @@ public class ChooseExistingVaultController implements FxController {
@FXML
public void confirm() {
//TODO
//TODO: error handling & cannot unlock added vault
VaultSettings vaultSettings = VaultSettings.withRandomId();
vaultSettings.path().setValue(vaultPath.get());
vaults.add(vaultFactory.get(vaultSettings));
window.close();
}

View File

@@ -41,7 +41,7 @@ public class VaultListController implements FxController {
}
public void didClickAddVault() {
addVaultWizard.build().showAddVaultWizard();
addVaultWizard.vaults(vaults).build().showAddVaultWizard();
}
public void didClickRemoveVault() {