瀏覽代碼

added iCloud Drive and OneDrive location presets

Tobias Hagemann 5 年之前
父節點
當前提交
8bb277fe56

+ 7 - 1
main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/CreateNewVaultLocationController.java

@@ -52,8 +52,10 @@ public class CreateNewVaultLocationController implements FxController {
 
 	private Path customVaultPath = DEFAULT_CUSTOM_VAULT_PATH;
 	public ToggleGroup predefinedLocationToggler;
+	public RadioButton iclouddriveRadioButton;
 	public RadioButton dropboxRadioButton;
 	public RadioButton gdriveRadioButton;
+	public RadioButton onedriveRadioButton;
 	public RadioButton customRadioButton;
 
 	@Inject
@@ -91,10 +93,14 @@ public class CreateNewVaultLocationController implements FxController {
 	}
 
 	private void togglePredefinedLocation(@SuppressWarnings("unused") ObservableValue<? extends Toggle> observable, @SuppressWarnings("unused") Toggle oldValue, Toggle newValue) {
-		if (dropboxRadioButton.equals(newValue)) {
+		if (iclouddriveRadioButton.equals(newValue)) {
+			vaultPath.set(locationPresets.getIclouddriveLocation().resolve(vaultName.get()));
+		} else if (dropboxRadioButton.equals(newValue)) {
 			vaultPath.set(locationPresets.getDropboxLocation().resolve(vaultName.get()));
 		} else if (gdriveRadioButton.equals(newValue)) {
 			vaultPath.set(locationPresets.getGdriveLocation().resolve(vaultName.get()));
+		} else if (onedriveRadioButton.equals(newValue)) {
+			vaultPath.set(locationPresets.getOnedriveLocation().resolve(vaultName.get()));
 		} else if (customRadioButton.equals(newValue)) {
 			vaultPath.set(customVaultPath.resolve(vaultName.get()));
 		}

+ 43 - 1
main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/LocationPresets.java

@@ -13,20 +13,30 @@ import java.nio.file.Paths;
 public class LocationPresets {
 
 	private static final String USER_HOME = System.getProperty("user.home");
+	private static final String[] ICLOUDDRIVE_LOCATIONS = {"~/Library/Mobile Documents/iCloud~com~setolabs~Cryptomator/Documents"};
 	private static final String[] DROPBOX_LOCATIONS = {"~/Dropbox"};
 	private static final String[] GDRIVE_LOCATIONS = {"~/Google Drive"};
+	private static final String[] ONEDRIVE_LOCATIONS = {"~/OneDrive"};
 
+	private final ReadOnlyObjectProperty<Path> iclouddriveLocation;
 	private final ReadOnlyObjectProperty<Path> dropboxLocation;
 	private final ReadOnlyObjectProperty<Path> gdriveLocation;
+	private final ReadOnlyObjectProperty<Path> onedriveLocation;
+	private final BooleanBinding foundIclouddrive;
 	private final BooleanBinding foundDropbox;
 	private final BooleanBinding foundGdrive;
+	private final BooleanBinding foundOnedrive;
 
 	@Inject
 	public LocationPresets() {
+		this.iclouddriveLocation = new SimpleObjectProperty<>(existingWritablePath(ICLOUDDRIVE_LOCATIONS));
 		this.dropboxLocation = new SimpleObjectProperty<>(existingWritablePath(DROPBOX_LOCATIONS));
 		this.gdriveLocation = new SimpleObjectProperty<>(existingWritablePath(GDRIVE_LOCATIONS));
+		this.onedriveLocation = new SimpleObjectProperty<>(existingWritablePath(ONEDRIVE_LOCATIONS));
+		this.foundIclouddrive = iclouddriveLocation.isNotNull();
 		this.foundDropbox = dropboxLocation.isNotNull();
 		this.foundGdrive = gdriveLocation.isNotNull();
+		this.foundOnedrive = onedriveLocation.isNotNull();
 	}
 
 	private static Path existingWritablePath(String... candidates) {
@@ -49,6 +59,22 @@ public class LocationPresets {
 
 	/* Observables */
 
+	public ReadOnlyObjectProperty<Path> iclouddriveLocationProperty() {
+		return iclouddriveLocation;
+	}
+
+	public Path getIclouddriveLocation() {
+		return iclouddriveLocation.get();
+	}
+
+	public BooleanBinding foundIclouddriveProperty() {
+		return foundIclouddrive;
+	}
+
+	public boolean isFoundIclouddrive() {
+		return foundIclouddrive.get();
+	}
+
 	public ReadOnlyObjectProperty<Path> dropboxLocationProperty() {
 		return dropboxLocation;
 	}
@@ -73,7 +99,7 @@ public class LocationPresets {
 		return gdriveLocation.get();
 	}
 
-	public BooleanBinding froundGdriveProperty() {
+	public BooleanBinding foundGdriveProperty() {
 		return foundGdrive;
 	}
 
@@ -81,4 +107,20 @@ public class LocationPresets {
 		return foundGdrive.get();
 	}
 
+	public ReadOnlyObjectProperty<Path> onedriveLocationProperty() {
+		return onedriveLocation;
+	}
+
+	public Path getOnedriveLocation() {
+		return onedriveLocation.get();
+	}
+
+	public BooleanBinding foundOnedriveProperty() {
+		return foundOnedrive;
+	}
+
+	public boolean isFoundOnedrive() {
+		return foundOnedrive.get();
+	}
+
 }

+ 2 - 0
main/ui/src/main/resources/fxml/addvault_new_location.fxml

@@ -29,8 +29,10 @@
 
 		<VBox spacing="6">
 			<Label wrapText="true" text="%addvaultwizard.new.locationInstruction"/>
+			<RadioButton fx:id="iclouddriveRadioButton" toggleGroup="${predefinedLocationToggler}" text="iCloud Drive" visible="${controller.locationPresets.foundIclouddrive}" managed="${controller.locationPresets.foundIclouddrive}"/>
 			<RadioButton fx:id="dropboxRadioButton" toggleGroup="${predefinedLocationToggler}" text="Dropbox" visible="${controller.locationPresets.foundDropbox}" managed="${controller.locationPresets.foundDropbox}"/>
 			<RadioButton fx:id="gdriveRadioButton" toggleGroup="${predefinedLocationToggler}" text="Google Drive" visible="${controller.locationPresets.foundGdrive}" managed="${controller.locationPresets.foundGdrive}"/>
+			<RadioButton fx:id="onedriveRadioButton" toggleGroup="${predefinedLocationToggler}" text="OneDrive" visible="${controller.locationPresets.foundOnedrive}" managed="${controller.locationPresets.foundOnedrive}"/>
 			<HBox spacing="12" alignment="CENTER_LEFT">
 				<RadioButton fx:id="customRadioButton" toggleGroup="${predefinedLocationToggler}" text="%addvaultwizard.new.directoryPickerLabel"/>
 				<Button contentDisplay="LEFT" text="%addvaultwizard.new.directoryPickerButton" onAction="#chooseCustomVaultPath" disable="${controller.usePresetPath}">