diff --git a/src/main/java/org/cryptomator/common/keychain/KeychainModule.java b/src/main/java/org/cryptomator/common/keychain/KeychainModule.java index 63749b445..604dfb40d 100644 --- a/src/main/java/org/cryptomator/common/keychain/KeychainModule.java +++ b/src/main/java/org/cryptomator/common/keychain/KeychainModule.java @@ -23,11 +23,14 @@ public class KeychainModule { @Singleton static ObjectExpression provideKeychainAccessProvider(Settings settings, List providers) { return Bindings.createObjectBinding(() -> { + if (!settings.useKeychain().get()) { + return null; + } var selectedProviderClass = settings.keychainProvider().get(); var selectedProvider = providers.stream().filter(provider -> provider.getClass().getName().equals(selectedProviderClass)).findAny(); var fallbackProvider = providers.stream().findFirst().orElse(null); return selectedProvider.orElse(fallbackProvider); - }, settings.keychainProvider()); + }, settings.keychainProvider(), settings.useKeychain()); } } diff --git a/src/main/java/org/cryptomator/common/settings/Settings.java b/src/main/java/org/cryptomator/common/settings/Settings.java index 7e383bc18..94debddc2 100644 --- a/src/main/java/org/cryptomator/common/settings/Settings.java +++ b/src/main/java/org/cryptomator/common/settings/Settings.java @@ -33,6 +33,7 @@ public class Settings { public static final boolean DEFAULT_CHECK_FOR_UPDATES = false; public static final boolean DEFAULT_START_HIDDEN = false; public static final boolean DEFAULT_AUTO_CLOSE_VAULTS = false; + public static final boolean DEFAULT_USE_KEYCHAIN = true; 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; @@ -53,6 +54,7 @@ public class Settings { private final BooleanProperty checkForUpdates = new SimpleBooleanProperty(DEFAULT_CHECK_FOR_UPDATES); private final BooleanProperty startHidden = new SimpleBooleanProperty(DEFAULT_START_HIDDEN); private final BooleanProperty autoCloseVaults = new SimpleBooleanProperty(DEFAULT_AUTO_CLOSE_VAULTS); + private final BooleanProperty useKeychain = new SimpleBooleanProperty(DEFAULT_USE_KEYCHAIN); private final IntegerProperty port = new SimpleIntegerProperty(DEFAULT_PORT); private final IntegerProperty numTrayNotifications = new SimpleIntegerProperty(DEFAULT_NUM_TRAY_NOTIFICATIONS); private final ObjectProperty preferredGvfsScheme = new SimpleObjectProperty<>(DEFAULT_GVFS_SCHEME); @@ -85,6 +87,7 @@ public class Settings { checkForUpdates.addListener(this::somethingChanged); startHidden.addListener(this::somethingChanged); autoCloseVaults.addListener(this::somethingChanged); + useKeychain.addListener(this::somethingChanged); port.addListener(this::somethingChanged); numTrayNotifications.addListener(this::somethingChanged); preferredGvfsScheme.addListener(this::somethingChanged); @@ -140,6 +143,8 @@ public class Settings { return autoCloseVaults; } + public BooleanProperty useKeychain() { return useKeychain; } + public IntegerProperty port() { return port; } diff --git a/src/main/java/org/cryptomator/common/settings/SettingsJsonAdapter.java b/src/main/java/org/cryptomator/common/settings/SettingsJsonAdapter.java index ff62672bd..03682b60c 100644 --- a/src/main/java/org/cryptomator/common/settings/SettingsJsonAdapter.java +++ b/src/main/java/org/cryptomator/common/settings/SettingsJsonAdapter.java @@ -50,6 +50,7 @@ public class SettingsJsonAdapter extends TypeAdapter { out.name("theme").value(value.theme().get().name()); out.name("uiOrientation").value(value.userInterfaceOrientation().get().name()); out.name("keychainProvider").value(value.keychainProvider().get()); + out.name("useKeychain").value(value.useKeychain().get()); out.name("licenseKey").value(value.licenseKey().get()); out.name("showMinimizeButton").value(value.showMinimizeButton().get()); out.name("showTrayIcon").value(value.showTrayIcon().get()); @@ -92,6 +93,7 @@ public class SettingsJsonAdapter extends TypeAdapter { case "theme" -> settings.theme().set(parseUiTheme(in.nextString())); case "uiOrientation" -> settings.userInterfaceOrientation().set(parseUiOrientation(in.nextString())); case "keychainProvider" -> settings.keychainProvider().set(in.nextString()); + case "useKeychain" -> settings.useKeychain().set(in.nextBoolean()); case "licenseKey" -> settings.licenseKey().set(in.nextString()); case "showMinimizeButton" -> settings.showMinimizeButton().set(in.nextBoolean()); case "showTrayIcon" -> settings.showTrayIcon().set(in.nextBoolean()); diff --git a/src/main/java/org/cryptomator/ui/preferences/GeneralPreferencesController.java b/src/main/java/org/cryptomator/ui/preferences/GeneralPreferencesController.java index ace6dadca..d2381b869 100644 --- a/src/main/java/org/cryptomator/ui/preferences/GeneralPreferencesController.java +++ b/src/main/java/org/cryptomator/ui/preferences/GeneralPreferencesController.java @@ -34,6 +34,7 @@ public class GeneralPreferencesController implements FxController { private final Environment environment; private final List keychainAccessProviders; private final FxApplicationWindows appWindows; + public CheckBox useKeychainCheckbox; public ChoiceBox keychainBackendChoiceBox; public CheckBox startHiddenCheckbox; public CheckBox autoCloseVaultsCheckbox; @@ -64,6 +65,8 @@ public class GeneralPreferencesController implements FxController { keychainBackendChoiceBox.setValue(keychainSettingsConverter.fromString(settings.keychainProvider().get())); keychainBackendChoiceBox.setConverter(new KeychainProviderDisplayNameConverter()); Bindings.bindBidirectional(settings.keychainProvider(), keychainBackendChoiceBox.valueProperty(), keychainSettingsConverter); + useKeychainCheckbox.selectedProperty().bindBidirectional(settings.useKeychain()); + keychainBackendChoiceBox.disableProperty().bind(useKeychainCheckbox.selectedProperty().not()); } public boolean isAutoStartSupported() { diff --git a/src/main/resources/fxml/preferences_general.fxml b/src/main/resources/fxml/preferences_general.fxml index c255e2a0f..7f7954fc8 100644 --- a/src/main/resources/fxml/preferences_general.fxml +++ b/src/main/resources/fxml/preferences_general.fxml @@ -4,7 +4,6 @@ - @@ -27,7 +26,7 @@ -