Kaynağa Gözat

Implemented hyperlink in preferences to reveal log files (#1184)

Martin Beyer 5 yıl önce
ebeveyn
işleme
ab0f175edf

+ 12 - 1
main/ui/src/main/java/org/cryptomator/ui/preferences/GeneralPreferencesController.java

@@ -12,9 +12,11 @@ import javafx.scene.control.RadioButton;
 import javafx.scene.control.Toggle;
 import javafx.scene.control.ToggleGroup;
 import javafx.util.StringConverter;
+import javafx.application.Application;
 import org.cryptomator.common.LicenseHolder;
 import org.cryptomator.common.settings.Settings;
 import org.cryptomator.common.settings.UiTheme;
+import org.cryptomator.common.Environment;
 import org.cryptomator.ui.common.FxController;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -37,6 +39,8 @@ public class GeneralPreferencesController implements FxController {
 	private final LicenseHolder licenseHolder;
 	private final ExecutorService executor;
 	private final ResourceBundle resourceBundle;
+	private final Application application;
+	private final Environment environment;
 	public ChoiceBox<UiTheme> themeChoiceBox;
 	public CheckBox startHiddenCheckbox;
 	public CheckBox debugModeCheckbox;
@@ -46,7 +50,7 @@ public class GeneralPreferencesController implements FxController {
 	public RadioButton nodeOrientationRtl;
 
 	@Inject
-	GeneralPreferencesController(Settings settings, @Named("trayMenuSupported") boolean trayMenuSupported, Optional<AutoStartStrategy> autoStartStrategy, ObjectProperty<SelectedPreferencesTab> selectedTabProperty, LicenseHolder licenseHolder, ExecutorService executor, ResourceBundle resourceBundle) {
+	GeneralPreferencesController(Settings settings, @Named("trayMenuSupported") boolean trayMenuSupported, Optional<AutoStartStrategy> autoStartStrategy, ObjectProperty<SelectedPreferencesTab> selectedTabProperty, LicenseHolder licenseHolder, ExecutorService executor, ResourceBundle resourceBundle, Application application, Environment environment) {
 		this.settings = settings;
 		this.trayMenuSupported = trayMenuSupported;
 		this.autoStartStrategy = autoStartStrategy;
@@ -54,6 +58,8 @@ public class GeneralPreferencesController implements FxController {
 		this.licenseHolder = licenseHolder;
 		this.executor = executor;
 		this.resourceBundle = resourceBundle;
+		this.application = application;
+		this.environment = environment;
 	}
 
 	@FXML
@@ -115,6 +121,11 @@ public class GeneralPreferencesController implements FxController {
 		selectedTabProperty.set(SelectedPreferencesTab.DONATION_KEY);
 	}
 
+	@FXML
+	public void showLogfileDirectory(){
+		environment.getLogDir().ifPresent(logDirPath -> application.getHostServices().showDocument(logDirPath.toUri().toString()));
+	}
+
 	/* Helper classes */
 
 	private static class UiThemeConverter extends StringConverter<UiTheme> {

+ 4 - 1
main/ui/src/main/resources/fxml/preferences_general.fxml

@@ -34,7 +34,10 @@
 
 		<CheckBox fx:id="startHiddenCheckbox" text="%preferences.general.startHidden" visible="${controller.trayMenuSupported}" managed="${controller.trayMenuSupported}"/>
 
-		<CheckBox fx:id="debugModeCheckbox" text="%preferences.general.debugLogging"/>
+		<HBox spacing="6" alignment="CENTER_LEFT">
+			<CheckBox fx:id="debugModeCheckbox" text="%preferences.general.debugLogging"/>
+			<Hyperlink styleClass="hyperlink-underline" text="%preferences.general.debugDirectory" onAction="#showLogfileDirectory"/>
+		</HBox>
 
 		<CheckBox fx:id="autoStartCheckbox" text="%preferences.general.autoStart" visible="${controller.autoStartSupported}" managed="${controller.autoStartSupported}" onAction="#toggleAutoStart"/>
 	</children>

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

@@ -135,6 +135,7 @@ preferences.general.theme.dark=Dark
 preferences.general.unlockThemes=Unlock dark mode
 preferences.general.startHidden=Hide window when starting Cryptomator
 preferences.general.debugLogging=Enable debug logging
+preferences.general.debugDirectory=Reveal log files
 preferences.general.autoStart=Launch Cryptomator on system start
 preferences.general.interfaceOrientation=Interface Orientation
 preferences.general.interfaceOrientation.ltr=Left to Right