Quellcode durchsuchen

Added options to start Cryptomator in background (references #418)

Sebastian Stenzel vor 5 Jahren
Ursprung
Commit
ba34b37f8a

+ 7 - 0
main/commons/src/main/java/org/cryptomator/common/settings/Settings.java

@@ -26,6 +26,7 @@ public class Settings {
 	public static final int MAX_PORT = 65535;
 	public static final boolean DEFAULT_ASKED_FOR_UPDATE_CHECK = false;
 	public static final boolean DEFAULT_CHECK_FOR_UDPATES = false;
+	public static final boolean DEFAULT_START_HIDDEN = false;
 	public static final int DEFAULT_PORT = 42427;
 	public static final int DEFAULT_NUM_TRAY_NOTIFICATIONS = 3;
 	public static final WebDavUrlScheme DEFAULT_GVFS_SCHEME = WebDavUrlScheme.DAV;
@@ -36,6 +37,7 @@ public class Settings {
 	private final ObservableList<VaultSettings> directories = FXCollections.observableArrayList(VaultSettings::observables);
 	private final BooleanProperty askedForUpdateCheck = new SimpleBooleanProperty(DEFAULT_ASKED_FOR_UPDATE_CHECK);
 	private final BooleanProperty checkForUpdates = new SimpleBooleanProperty(DEFAULT_CHECK_FOR_UDPATES);
+	private final BooleanProperty startHidden = new SimpleBooleanProperty(DEFAULT_START_HIDDEN);
 	private final IntegerProperty port = new SimpleIntegerProperty(DEFAULT_PORT);
 	private final IntegerProperty numTrayNotifications = new SimpleIntegerProperty(DEFAULT_NUM_TRAY_NOTIFICATIONS);
 	private final ObjectProperty<WebDavUrlScheme> preferredGvfsScheme = new SimpleObjectProperty<>(DEFAULT_GVFS_SCHEME);
@@ -52,6 +54,7 @@ public class Settings {
 		directories.addListener(this::somethingChanged);
 		askedForUpdateCheck.addListener(this::somethingChanged);
 		checkForUpdates.addListener(this::somethingChanged);
+		startHidden.addListener(this::somethingChanged);
 		port.addListener(this::somethingChanged);
 		numTrayNotifications.addListener(this::somethingChanged);
 		preferredGvfsScheme.addListener(this::somethingChanged);
@@ -87,6 +90,10 @@ public class Settings {
 	public BooleanProperty checkForUpdates() {
 		return checkForUpdates;
 	}
+	
+	public BooleanProperty startHidden() {
+		return startHidden;
+	}
 
 	public IntegerProperty port() {
 		return port;

+ 4 - 0
main/commons/src/main/java/org/cryptomator/common/settings/SettingsJsonAdapter.java

@@ -29,6 +29,7 @@ public class SettingsJsonAdapter extends TypeAdapter<Settings> {
 		writeVaultSettingsArray(out, value.getDirectories());
 		out.name("askedForUpdateCheck").value(value.askedForUpdateCheck().get());
 		out.name("checkForUpdatesEnabled").value(value.checkForUpdates().get());
+		out.name("startHidden").value(value.startHidden().get());
 		out.name("port").value(value.port().get());
 		out.name("numTrayNotifications").value(value.numTrayNotifications().get());
 		out.name("preferredGvfsScheme").value(value.preferredGvfsScheme().get().name());
@@ -63,6 +64,9 @@ public class SettingsJsonAdapter extends TypeAdapter<Settings> {
 				case "checkForUpdatesEnabled":
 					settings.checkForUpdates().set(in.nextBoolean());
 					break;
+				case "startHidden":
+					settings.startHidden().set(in.nextBoolean());
+					break;
 				case "port":
 					settings.port().set(in.nextInt());
 					break;

+ 3 - 0
main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesController.java

@@ -22,6 +22,7 @@ public class PreferencesController implements FxController {
 	private final Settings settings;
 	private final BooleanBinding showWebDavSettings;
 	public ChoiceBox<UiTheme> themeChoiceBox;
+	public CheckBox startHiddenCheckbox;
 	public CheckBox checkForUpdatesCheckbox;
 	public CheckBox debugModeCheckbox;
 	public ChoiceBox<VolumeImpl> volumeTypeChoicBox;
@@ -40,6 +41,8 @@ public class PreferencesController implements FxController {
 		themeChoiceBox.valueProperty().bindBidirectional(settings.theme());
 		themeChoiceBox.setConverter(new UiThemeConverter());
 
+		startHiddenCheckbox.selectedProperty().bindBidirectional(settings.startHidden());
+
 		checkForUpdatesCheckbox.selectedProperty().bindBidirectional(settings.checkForUpdates());
 
 		debugModeCheckbox.selectedProperty().bindBidirectional(settings.debugMode());

+ 10 - 1
main/ui/src/main/java/org/cryptomator/ui/traymenu/TrayMenuController.java

@@ -1,5 +1,7 @@
 package org.cryptomator.ui.traymenu;
 
+import org.cryptomator.common.settings.Settings;
+
 import javax.inject.Inject;
 import javax.inject.Named;
 import java.awt.Desktop;
@@ -14,12 +16,14 @@ class TrayMenuController {
 
 	private final FxApplicationStarter fxApplicationStarter;
 	private final CountDownLatch shutdownLatch;
+	private final Settings settings;
 	private final PopupMenu menu;
 
 	@Inject
-	TrayMenuController(FxApplicationStarter fxApplicationStarter, @Named("shutdownLatch") CountDownLatch shutdownLatch) {
+	TrayMenuController(FxApplicationStarter fxApplicationStarter, @Named("shutdownLatch") CountDownLatch shutdownLatch, Settings settings) {
 		this.fxApplicationStarter = fxApplicationStarter;
 		this.shutdownLatch = shutdownLatch;
+		this.settings = settings;
 		this.menu = new PopupMenu();
 	}
 
@@ -35,6 +39,11 @@ class TrayMenuController {
 		if (Desktop.getDesktop().isSupported(Desktop.Action.APP_PREFERENCES)) {
 			Desktop.getDesktop().setPreferencesHandler(this::showPreferencesWindow);
 		}
+		
+		// show window on start?
+		if (!settings.startHidden().get()) {
+			showMainWindow(null);
+		}
 	}
 
 	private void rebuildMenu() {

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

@@ -22,6 +22,8 @@
 			<ChoiceBox fx:id="themeChoiceBox"/>
 		</HBox>
 
+		<CheckBox fx:id="startHiddenCheckbox" text="%preferences.startHidden"/>
+
 		<CheckBox fx:id="checkForUpdatesCheckbox" text="%preferences.autoUpdateCheck"/>
 
 		<CheckBox fx:id="debugModeCheckbox" text="%preferences.debugLogging"/>

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

@@ -5,6 +5,7 @@ main.settingsBtn.tooltip=Settings
 preferences.title=Preferences
 preferences.autoUpdateCheck=Check for updates automatically
 preferences.debugLogging=Enable debug logging
+preferences.startHidden=Hide window when starting Cryptomator
 preferences.theme=Look & Feel
 preferences.volumeType=Volume type
 unlock.deleteSavedPasswordDialog.title=Delete Saved Password

+ 1 - 0
main/ui/src/main/resources/i18n/strings_en.properties

@@ -4,6 +4,7 @@ main.closeBtn.tooltip=Close
 main.settingsBtn.tooltip=Settings
 preferences.autoUpdateCheck=Check for updates automatically
 preferences.debugLogging=Enable debug logging
+preferences.startHidden=Hide window when starting Cryptomator
 preferences.theme=Look & Feel
 preferences.volumeType=Volume type
 vaultlist.emptyList.onboardingInstruction=Click here to add a vault