diff --git a/main/pom.xml b/main/pom.xml
index 7d54dbf90..de425bb3a 100644
--- a/main/pom.xml
+++ b/main/pom.xml
@@ -25,9 +25,9 @@
1.9.12
- 0.1.5
+ 0.1.6
0.1.0-beta1
- 0.1.0-beta2
+ 0.1.0-beta3
0.1.0-beta1
2.2.3
1.2.5
diff --git a/main/ui/src/main/java/org/cryptomator/ui/fxapp/FxApplication.java b/main/ui/src/main/java/org/cryptomator/ui/fxapp/FxApplication.java
index 6d6a36fd7..650254649 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/fxapp/FxApplication.java
+++ b/main/ui/src/main/java/org/cryptomator/ui/fxapp/FxApplication.java
@@ -6,12 +6,11 @@ import org.cryptomator.common.LicenseHolder;
import org.cryptomator.common.settings.Settings;
import org.cryptomator.common.settings.UiTheme;
import org.cryptomator.common.vaults.Vault;
+import org.cryptomator.integrations.tray.TrayIntegrationProvider;
import org.cryptomator.integrations.uiappearance.Theme;
import org.cryptomator.integrations.uiappearance.UiAppearanceException;
import org.cryptomator.integrations.uiappearance.UiAppearanceListener;
import org.cryptomator.integrations.uiappearance.UiAppearanceProvider;
-import org.cryptomator.jni.MacApplicationUiState;
-import org.cryptomator.jni.MacFunctions;
import org.cryptomator.ui.common.VaultService;
import org.cryptomator.ui.mainwindow.MainWindowComponent;
import org.cryptomator.ui.preferences.PreferencesComponent;
@@ -43,7 +42,7 @@ public class FxApplication extends Application {
private final Lazy preferencesWindow;
private final Provider unlockWindowBuilderProvider;
private final Provider quitWindowBuilderProvider;
- private final Optional macFunctions;
+ private final Optional trayIntegration;
private final Optional appearanceProvider;
private final VaultService vaultService;
private final LicenseHolder licenseHolder;
@@ -51,13 +50,13 @@ public class FxApplication extends Application {
private final UiAppearanceListener systemInterfaceThemeListener = this::systemInterfaceThemeChanged;
@Inject
- FxApplication(Settings settings, Lazy mainWindow, Lazy preferencesWindow, Provider unlockWindowBuilderProvider, Provider quitWindowBuilderProvider, Optional macFunctions, Optional appearanceProvider, VaultService vaultService, LicenseHolder licenseHolder, ObservableSet visibleStages) {
+ FxApplication(Settings settings, Lazy mainWindow, Lazy preferencesWindow, Provider unlockWindowBuilderProvider, Provider quitWindowBuilderProvider, Optional trayIntegration, Optional appearanceProvider, VaultService vaultService, LicenseHolder licenseHolder, ObservableSet visibleStages) {
this.settings = settings;
this.mainWindow = mainWindow;
this.preferencesWindow = preferencesWindow;
this.unlockWindowBuilderProvider = unlockWindowBuilderProvider;
this.quitWindowBuilderProvider = quitWindowBuilderProvider;
- this.macFunctions = macFunctions;
+ this.trayIntegration = trayIntegration;
this.appearanceProvider = appearanceProvider;
this.vaultService = vaultService;
this.licenseHolder = licenseHolder;
@@ -81,9 +80,9 @@ public class FxApplication extends Application {
private void hasVisibleStagesChanged(boolean newValue) {
if (newValue) {
- macFunctions.map(MacFunctions::uiState).ifPresent(MacApplicationUiState::transformToForegroundApplication);
+ trayIntegration.ifPresent(TrayIntegrationProvider::restoredFromTray);
} else {
- macFunctions.map(MacFunctions::uiState).ifPresent(MacApplicationUiState::transformToAgentApplication);
+ trayIntegration.ifPresent(TrayIntegrationProvider::minimizedToTray);
}
}
diff --git a/main/ui/src/main/java/org/cryptomator/ui/launcher/UiLauncher.java b/main/ui/src/main/java/org/cryptomator/ui/launcher/UiLauncher.java
index ad98fe226..ecef51dbf 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/launcher/UiLauncher.java
+++ b/main/ui/src/main/java/org/cryptomator/ui/launcher/UiLauncher.java
@@ -2,9 +2,7 @@ package org.cryptomator.ui.launcher;
import org.cryptomator.common.settings.Settings;
import org.cryptomator.common.vaults.Vault;
-import org.cryptomator.jni.JniException;
-import org.cryptomator.jni.MacApplicationUiState;
-import org.cryptomator.jni.MacFunctions;
+import org.cryptomator.integrations.tray.TrayIntegrationProvider;
import org.cryptomator.ui.fxapp.FxApplication;
import org.cryptomator.ui.traymenu.TrayMenuComponent;
import org.slf4j.Logger;
@@ -29,16 +27,16 @@ public class UiLauncher {
private final TrayMenuComponent.Builder trayComponent;
private final FxApplicationStarter fxApplicationStarter;
private final AppLaunchEventHandler launchEventHandler;
- private final Optional macFunctions;
+ private final Optional trayIntegration;
@Inject
- public UiLauncher(Settings settings, ObservableList vaults, TrayMenuComponent.Builder trayComponent, FxApplicationStarter fxApplicationStarter, AppLaunchEventHandler launchEventHandler, Optional macFunctions) {
+ public UiLauncher(Settings settings, ObservableList vaults, TrayMenuComponent.Builder trayComponent, FxApplicationStarter fxApplicationStarter, AppLaunchEventHandler launchEventHandler, Optional trayIntegration) {
this.settings = settings;
this.vaults = vaults;
this.trayComponent = trayComponent;
this.fxApplicationStarter = fxApplicationStarter;
this.launchEventHandler = launchEventHandler;
- this.macFunctions = macFunctions;
+ this.trayIntegration = trayIntegration;
}
public void launch() {
@@ -53,7 +51,7 @@ public class UiLauncher {
// show window on start?
if (hasTrayIcon && settings.startHidden().get()) {
LOG.debug("Hiding application...");
- macFunctions.map(MacFunctions::uiState).ifPresent(JniException.ignore(MacApplicationUiState::transformToAgentApplication));
+ trayIntegration.ifPresent(TrayIntegrationProvider::minimizedToTray);
} else {
showMainWindowAsync(hasTrayIcon);
}
diff --git a/main/ui/src/main/java/org/cryptomator/ui/launcher/UiLauncherModule.java b/main/ui/src/main/java/org/cryptomator/ui/launcher/UiLauncherModule.java
index 492d5028c..fdf31b491 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/launcher/UiLauncherModule.java
+++ b/main/ui/src/main/java/org/cryptomator/ui/launcher/UiLauncherModule.java
@@ -3,9 +3,9 @@ package org.cryptomator.ui.launcher;
import dagger.Module;
import dagger.Provides;
import org.cryptomator.common.JniModule;
+import org.cryptomator.integrations.tray.TrayIntegrationProvider;
import org.cryptomator.integrations.uiappearance.UiAppearanceProvider;
import org.cryptomator.ui.fxapp.FxApplicationComponent;
-import org.cryptomator.ui.fxapp.FxApplicationScoped;
import org.cryptomator.ui.traymenu.TrayMenuComponent;
import javax.inject.Named;
@@ -25,6 +25,12 @@ public abstract class UiLauncherModule {
return ServiceLoader.load(UiAppearanceProvider.class).findFirst();
}
+ @Provides
+ @Singleton
+ static Optional provideTrayIntegrationProvider() {
+ return ServiceLoader.load(TrayIntegrationProvider.class).findFirst();
+ }
+
@Provides
@Singleton
static ResourceBundle provideLocalization() {