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() {