diff --git a/src/main/java/org/cryptomator/ui/controls/FontAwesome5Icon.java b/src/main/java/org/cryptomator/ui/controls/FontAwesome5Icon.java index e454835cf..52e6f0653 100644 --- a/src/main/java/org/cryptomator/ui/controls/FontAwesome5Icon.java +++ b/src/main/java/org/cryptomator/ui/controls/FontAwesome5Icon.java @@ -40,6 +40,7 @@ public enum FontAwesome5Icon { LOCK("\uF023"), // LOCK_OPEN("\uF3C1"), // MAGIC("\uF0D0"), // + NETWORK("\uF6FF"), // PENCIL("\uF303"), // PLUS("\uF067"), // PRINT("\uF02F"), // diff --git a/src/main/java/org/cryptomator/ui/preferences/NetworkPreferencesController.java b/src/main/java/org/cryptomator/ui/preferences/NetworkPreferencesController.java new file mode 100644 index 000000000..2a2bba45b --- /dev/null +++ b/src/main/java/org/cryptomator/ui/preferences/NetworkPreferencesController.java @@ -0,0 +1,42 @@ +package org.cryptomator.ui.preferences; + +import org.cryptomator.ui.common.FxController; +import org.cryptomator.ui.controls.NumericTextField; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.inject.Inject; +import javafx.fxml.FXML; +import javafx.scene.control.RadioButton; +import javafx.scene.control.ToggleGroup; +import javafx.scene.layout.VBox; + +@PreferencesScoped +public class NetworkPreferencesController implements FxController { + + private static final Logger LOG = LoggerFactory.getLogger(NetworkPreferencesController.class); + + public ToggleGroup proxyToggleGroup; + public RadioButton noProxyBtn; + public RadioButton systemSettingsBtn; + public RadioButton manualProxyBtn; + public VBox manualProxyBox; + public NumericTextField httpProxyPort; + public NumericTextField httpsProxyPort; + + @Inject + NetworkPreferencesController() { + } + + @FXML + public void initialize() { + proxyToggleGroup.selectToggle(noProxyBtn); + proxyToggleGroup.selectedToggleProperty().addListener((_, _, newValue) -> { + if (newValue != null) { + RadioButton selectedRadioButton = (RadioButton) newValue; + manualProxyBox.setDisable(!selectedRadioButton.equals(manualProxyBtn)); + } + }); + } + +} diff --git a/src/main/java/org/cryptomator/ui/preferences/PreferencesController.java b/src/main/java/org/cryptomator/ui/preferences/PreferencesController.java index 0937fccd9..ac736bca3 100644 --- a/src/main/java/org/cryptomator/ui/preferences/PreferencesController.java +++ b/src/main/java/org/cryptomator/ui/preferences/PreferencesController.java @@ -31,6 +31,7 @@ public class PreferencesController implements FxController { public Tab updatesTab; public Tab contributeTab; public Tab aboutTab; + public Tab networkTab; @Inject public PreferencesController(Environment env, @PreferencesWindow Stage window, ObjectProperty selectedTabProperty, UpdateChecker updateChecker) { @@ -63,6 +64,7 @@ public class PreferencesController implements FxController { case UPDATES -> updatesTab; case CONTRIBUTE -> contributeTab; case ABOUT -> aboutTab; + case NETWORK -> networkTab; case ANY -> updateAvailable.get() ? updatesTab : generalTab; }; } diff --git a/src/main/java/org/cryptomator/ui/preferences/PreferencesModule.java b/src/main/java/org/cryptomator/ui/preferences/PreferencesModule.java index 858f8f1d8..233930a79 100644 --- a/src/main/java/org/cryptomator/ui/preferences/PreferencesModule.java +++ b/src/main/java/org/cryptomator/ui/preferences/PreferencesModule.java @@ -89,4 +89,9 @@ abstract class PreferencesModule { @FxControllerKey(AboutController.class) abstract FxController bindAboutController(AboutController controller); + @Binds + @IntoMap + @FxControllerKey(NetworkPreferencesController.class) + abstract FxController bindNetworkPreferencesController(NetworkPreferencesController controller); + } diff --git a/src/main/java/org/cryptomator/ui/preferences/SelectedPreferencesTab.java b/src/main/java/org/cryptomator/ui/preferences/SelectedPreferencesTab.java index 00b519493..e2ec210a0 100644 --- a/src/main/java/org/cryptomator/ui/preferences/SelectedPreferencesTab.java +++ b/src/main/java/org/cryptomator/ui/preferences/SelectedPreferencesTab.java @@ -35,4 +35,8 @@ public enum SelectedPreferencesTab { * Show about tab */ ABOUT, + /** + * Show network tab + */ + NETWORK } diff --git a/src/main/resources/fxml/preferences.fxml b/src/main/resources/fxml/preferences.fxml index c96eb5395..055b5358f 100644 --- a/src/main/resources/fxml/preferences.fxml +++ b/src/main/resources/fxml/preferences.fxml @@ -46,6 +46,14 @@ + + + + + + + + diff --git a/src/main/resources/fxml/preferences_network.fxml b/src/main/resources/fxml/preferences_network.fxml new file mode 100644 index 000000000..9936d5a16 --- /dev/null +++ b/src/main/resources/fxml/preferences_network.fxml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/i18n/strings.properties b/src/main/resources/i18n/strings.properties index cd15d12dd..b58533b83 100644 --- a/src/main/resources/i18n/strings.properties +++ b/src/main/resources/i18n/strings.properties @@ -328,6 +328,8 @@ preferences.updates.lastUpdateCheck.daysAgo=%s days ago preferences.updates.lastUpdateCheck.hoursAgo=%s hours ago preferences.updates.checkFailed=Looking for updates failed. Please check your internet connection or try again later. preferences.updates.upToDate=Cryptomator is up-to-date. +## Network +preferences.network=Network ## Contribution preferences.contribute=Support Us