From 7ec7cecbfda4363f271a9e3a86d900d883edaa9e Mon Sep 17 00:00:00 2001 From: En-Jan Chou Date: Sun, 12 Jan 2020 13:41:46 -0500 Subject: [PATCH] Add multiple icons and let system choose the best size --- .../ui/addvaultwizard/AddVaultModule.java | 6 +++--- .../changepassword/ChangePasswordModule.java | 6 +++--- .../forgetPassword/ForgetPasswordModule.java | 6 +++--- .../ui/fxapp/FxApplicationModule.java | 18 ++++++++++-------- .../ui/mainwindow/MainWindowModule.java | 6 +++--- .../ui/migration/MigrationModule.java | 6 +++--- .../ui/preferences/PreferencesModule.java | 6 +++--- .../org/cryptomator/ui/quit/QuitModule.java | 6 +++--- .../ui/recoverykey/RecoveryKeyModule.java | 6 +++--- .../ui/removevault/RemoveVaultModule.java | 6 +++--- .../cryptomator/ui/unlock/UnlockModule.java | 6 +++--- .../ui/vaultoptions/VaultOptionsModule.java | 6 +++--- .../wrongfilealert/WrongFileAlertModule.java | 6 +++--- 13 files changed, 46 insertions(+), 44 deletions(-) diff --git a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultModule.java b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultModule.java index aafa97f5e..4061f934f 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultModule.java @@ -27,8 +27,8 @@ import org.cryptomator.ui.recoverykey.RecoveryKeyDisplayController; import javax.inject.Named; import javax.inject.Provider; import java.nio.file.Path; +import java.util.List; import java.util.Map; -import java.util.Optional; import java.util.ResourceBundle; @Module @@ -51,13 +51,13 @@ public abstract class AddVaultModule { @Provides @AddVaultWizardWindow @AddVaultWizardScoped - static Stage provideStage(@MainWindow Stage owner, ResourceBundle resourceBundle, @Named("windowIcon") Optional windowIcon) { + static Stage provideStage(@MainWindow Stage owner, ResourceBundle resourceBundle, @Named("windowIcons") List windowIcons) { Stage stage = new Stage(); stage.setTitle(resourceBundle.getString("addvaultwizard.title")); stage.setResizable(false); stage.initModality(Modality.WINDOW_MODAL); stage.initOwner(owner); - windowIcon.ifPresent(stage.getIcons()::add); + stage.getIcons().addAll(windowIcons); return stage; } diff --git a/main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordModule.java b/main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordModule.java index fcef4a7ec..41e0ede1d 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordModule.java @@ -22,8 +22,8 @@ import org.cryptomator.ui.common.PasswordStrengthUtil; import javax.inject.Named; import javax.inject.Provider; import java.nio.CharBuffer; +import java.util.List; import java.util.Map; -import java.util.Optional; import java.util.ResourceBundle; @Module @@ -46,13 +46,13 @@ abstract class ChangePasswordModule { @Provides @ChangePasswordWindow @ChangePasswordScoped - static Stage provideStage(@Named("changePasswordOwner") Stage owner, ResourceBundle resourceBundle, @Named("windowIcon") Optional windowIcon) { + static Stage provideStage(@Named("changePasswordOwner") Stage owner, ResourceBundle resourceBundle, @Named("windowIcons") List windowIcons) { Stage stage = new Stage(); stage.setTitle(resourceBundle.getString("changepassword.title")); stage.setResizable(false); stage.initModality(Modality.WINDOW_MODAL); stage.initOwner(owner); - windowIcon.ifPresent(stage.getIcons()::add); + stage.getIcons().addAll(windowIcons); return stage; } diff --git a/main/ui/src/main/java/org/cryptomator/ui/forgetPassword/ForgetPasswordModule.java b/main/ui/src/main/java/org/cryptomator/ui/forgetPassword/ForgetPasswordModule.java index b06f8dec0..a6d45fa41 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/forgetPassword/ForgetPasswordModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/forgetPassword/ForgetPasswordModule.java @@ -20,8 +20,8 @@ import org.cryptomator.ui.common.FxmlScene; import javax.inject.Named; import javax.inject.Provider; +import java.util.List; import java.util.Map; -import java.util.Optional; import java.util.ResourceBundle; @Module @@ -37,13 +37,13 @@ abstract class ForgetPasswordModule { @Provides @ForgetPasswordWindow @ForgetPasswordScoped - static Stage provideStage(ResourceBundle resourceBundle, @Named("windowIcon") Optional windowIcon, @Named("forgetPasswordOwner") Stage owner) { + static Stage provideStage(ResourceBundle resourceBundle, @Named("windowIcons") List windowIcons, @Named("forgetPasswordOwner") Stage owner) { Stage stage = new Stage(); stage.setTitle(resourceBundle.getString("forgetPassword.title")); stage.setResizable(false); stage.initModality(Modality.WINDOW_MODAL); stage.initOwner(owner); - windowIcon.ifPresent(stage.getIcons()::add); + stage.getIcons().addAll(windowIcons); return stage; } diff --git a/main/ui/src/main/java/org/cryptomator/ui/fxapp/FxApplicationModule.java b/main/ui/src/main/java/org/cryptomator/ui/fxapp/FxApplicationModule.java index a51470489..5a7aeee32 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/fxapp/FxApplicationModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/fxapp/FxApplicationModule.java @@ -22,6 +22,8 @@ import org.cryptomator.ui.unlock.UnlockComponent; import javax.inject.Named; import java.io.IOException; import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; import java.util.Optional; @Module(includes = {UpdateCheckerModule.class}, subcomponents = {MainWindowComponent.class, PreferencesComponent.class, UnlockComponent.class, QuitComponent.class}) @@ -34,17 +36,17 @@ abstract class FxApplicationModule { } @Provides - @Named("windowIcon") + @Named("windowIcons") @FxApplicationScoped - static Optional provideWindowIcon() { + static List provideWindowIcons() { if (SystemUtils.IS_OS_MAC) { - return Optional.empty(); - } - try (InputStream in = FxApplicationModule.class.getResourceAsStream("/window_icon_32.png")) { // TODO: use some higher res depending on display? - return Optional.of(new Image(in)); - } catch (IOException e) { - return Optional.empty(); + return new ArrayList<>(); } + + ArrayList icons = new ArrayList<>(); + icons.add(new Image(FxApplicationModule.class.getResourceAsStream("/window_icon_32.png"))); + icons.add(new Image(FxApplicationModule.class.getResourceAsStream("/window_icon_512.png"))); + return icons; } @Binds diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java index 8fb9dd1a4..9a058ea85 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java @@ -25,8 +25,8 @@ import org.cryptomator.ui.wrongfilealert.WrongFileAlertComponent; import javax.inject.Named; import javax.inject.Provider; +import java.util.List; import java.util.Map; -import java.util.Optional; import java.util.ResourceBundle; @Module(subcomponents = {AddVaultWizardComponent.class, MigrationComponent.class, RemoveVaultComponent.class, VaultOptionsComponent.class, WrongFileAlertComponent.class}) @@ -42,7 +42,7 @@ abstract class MainWindowModule { @Provides @MainWindow @MainWindowScoped - static Stage provideStage(@Named("windowIcon") Optional windowIcon) { + static Stage provideStage(@Named("windowIcons") List windowIcons) { Stage stage = new Stage(StageStyle.UNDECORATED); // TODO: min/max values chosen arbitrarily. We might wanna take a look at the user's resolution... stage.setMinWidth(650); @@ -50,7 +50,7 @@ abstract class MainWindowModule { stage.setMaxWidth(1000); stage.setMaxHeight(700); stage.setTitle("Cryptomator"); - windowIcon.ifPresent(stage.getIcons()::add); + stage.getIcons().addAll(windowIcons); return stage; } diff --git a/main/ui/src/main/java/org/cryptomator/ui/migration/MigrationModule.java b/main/ui/src/main/java/org/cryptomator/ui/migration/MigrationModule.java index 11d13fa81..2f5d4c18d 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/migration/MigrationModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/migration/MigrationModule.java @@ -18,8 +18,8 @@ import org.cryptomator.ui.mainwindow.MainWindow; import javax.inject.Named; import javax.inject.Provider; +import java.util.List; import java.util.Map; -import java.util.Optional; import java.util.ResourceBundle; @Module @@ -35,13 +35,13 @@ abstract class MigrationModule { @Provides @MigrationWindow @MigrationScoped - static Stage provideStage(@MainWindow Stage owner, ResourceBundle resourceBundle, @Named("windowIcon") Optional windowIcon) { + static Stage provideStage(@MainWindow Stage owner, ResourceBundle resourceBundle, @Named("windowIcons") List windowIcons) { Stage stage = new Stage(); stage.setTitle(resourceBundle.getString("migration.title")); stage.setResizable(false); stage.initModality(Modality.WINDOW_MODAL); stage.initOwner(owner); - windowIcon.ifPresent(stage.getIcons()::add); + stage.getIcons().addAll(windowIcons); return stage; } diff --git a/main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesModule.java b/main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesModule.java index 8b76364ef..4a6051cbd 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesModule.java @@ -18,8 +18,8 @@ import org.cryptomator.ui.common.FxmlScene; import javax.inject.Named; import javax.inject.Provider; +import java.util.List; import java.util.Map; -import java.util.Optional; import java.util.ResourceBundle; @Module(includes = {AutoStartModule.class}) @@ -41,11 +41,11 @@ abstract class PreferencesModule { @Provides @PreferencesWindow @PreferencesScoped - static Stage provideStage(ResourceBundle resourceBundle, @Named("windowIcon") Optional windowIcon) { + static Stage provideStage(ResourceBundle resourceBundle, @Named("windowIcons") List windowIcons) { Stage stage = new Stage(); stage.setTitle(resourceBundle.getString("preferences.title")); stage.setResizable(false); - windowIcon.ifPresent(stage.getIcons()::add); + stage.getIcons().addAll(windowIcons); return stage; } diff --git a/main/ui/src/main/java/org/cryptomator/ui/quit/QuitModule.java b/main/ui/src/main/java/org/cryptomator/ui/quit/QuitModule.java index 5383a0f5e..afdcb78a9 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/quit/QuitModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/quit/QuitModule.java @@ -20,8 +20,8 @@ import org.cryptomator.ui.common.FxmlScene; import javax.inject.Named; import javax.inject.Provider; +import java.util.List; import java.util.Map; -import java.util.Optional; import java.util.ResourceBundle; @Module @@ -37,12 +37,12 @@ abstract class QuitModule { @Provides @QuitWindow @QuitScoped - static Stage provideStage(@Named("windowIcon") Optional windowIcon) { + static Stage provideStage(@Named("windowIcons") List windowIcons) { Stage stage = new Stage(); stage.setMinWidth(300); stage.setMinHeight(100); stage.initModality(Modality.APPLICATION_MODAL); - windowIcon.ifPresent(stage.getIcons()::add); + stage.getIcons().addAll(windowIcons); return stage; } diff --git a/main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyModule.java b/main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyModule.java index 80f89c749..91a489310 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyModule.java @@ -20,8 +20,8 @@ import org.cryptomator.ui.common.FxmlScene; import javax.inject.Named; import javax.inject.Provider; +import java.util.List; import java.util.Map; -import java.util.Optional; import java.util.ResourceBundle; @Module @@ -37,13 +37,13 @@ abstract class RecoveryKeyModule { @Provides @RecoveryKeyWindow @RecoveryKeyScoped - static Stage provideStage(ResourceBundle resourceBundle, @Named("windowIcon") Optional windowIcon, @Named("keyRecoveryOwner") Stage owner) { + static Stage provideStage(ResourceBundle resourceBundle, @Named("windowIcons") List windowIcons, @Named("keyRecoveryOwner") Stage owner) { Stage stage = new Stage(); stage.setTitle(resourceBundle.getString("recoveryKey.title")); stage.setResizable(false); stage.initModality(Modality.WINDOW_MODAL); stage.initOwner(owner); - windowIcon.ifPresent(stage.getIcons()::add); + stage.getIcons().addAll(windowIcons); return stage; } diff --git a/main/ui/src/main/java/org/cryptomator/ui/removevault/RemoveVaultModule.java b/main/ui/src/main/java/org/cryptomator/ui/removevault/RemoveVaultModule.java index 965b6c6e8..2bf44b106 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/removevault/RemoveVaultModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/removevault/RemoveVaultModule.java @@ -21,8 +21,8 @@ import org.cryptomator.ui.mainwindow.MainWindow; import javax.inject.Named; import javax.inject.Provider; +import java.util.List; import java.util.Map; -import java.util.Optional; import java.util.ResourceBundle; @Module @@ -38,13 +38,13 @@ abstract class RemoveVaultModule { @Provides @RemoveVaultWindow @RemoveVaultScoped - static Stage provideStage(@MainWindow Stage owner, ResourceBundle resourceBundle, @Named("windowIcon") Optional windowIcon) { + static Stage provideStage(@MainWindow Stage owner, ResourceBundle resourceBundle, @Named("windowIcons") List windowIcons) { Stage stage = new Stage(); stage.setTitle(resourceBundle.getString("removeVault.title")); stage.setResizable(false); stage.initModality(Modality.WINDOW_MODAL); stage.initOwner(owner); - windowIcon.ifPresent(stage.getIcons()::add); + stage.getIcons().addAll(windowIcons); return stage; } diff --git a/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockModule.java b/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockModule.java index 69488010f..0ab1f0c62 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockModule.java @@ -21,8 +21,8 @@ import org.cryptomator.ui.forgetPassword.ForgetPasswordComponent; import javax.inject.Named; import javax.inject.Provider; +import java.util.List; import java.util.Map; -import java.util.Optional; import java.util.ResourceBundle; @Module(subcomponents = {ForgetPasswordComponent.class}) @@ -38,12 +38,12 @@ abstract class UnlockModule { @Provides @UnlockWindow @UnlockScoped - static Stage provideStage(ResourceBundle resourceBundle, @Named("windowIcon") Optional windowIcon) { + static Stage provideStage(ResourceBundle resourceBundle, @Named("windowIcons") List windowIcons) { Stage stage = new Stage(); stage.setTitle(resourceBundle.getString("unlock.title")); stage.setResizable(false); stage.initModality(Modality.APPLICATION_MODAL); - windowIcon.ifPresent(stage.getIcons()::add); + stage.getIcons().addAll(windowIcons); return stage; } diff --git a/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsModule.java b/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsModule.java index 09185729a..143546525 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsModule.java @@ -21,8 +21,8 @@ import org.cryptomator.ui.recoverykey.RecoveryKeyComponent; import javax.inject.Named; import javax.inject.Provider; +import java.util.List; import java.util.Map; -import java.util.Optional; import java.util.ResourceBundle; @Module(subcomponents = {ChangePasswordComponent.class, RecoveryKeyComponent.class}) @@ -38,13 +38,13 @@ abstract class VaultOptionsModule { @Provides @VaultOptionsWindow @VaultOptionsScoped - static Stage provideStage(@MainWindow Stage owner, @VaultOptionsWindow Vault vault, ResourceBundle resourceBundle, @Named("windowIcon") Optional windowIcon) { + static Stage provideStage(@MainWindow Stage owner, @VaultOptionsWindow Vault vault, ResourceBundle resourceBundle, @Named("windowIcons") List windowIcons) { Stage stage = new Stage(); stage.setTitle(vault.getDisplayableName()); stage.setResizable(false); stage.initModality(Modality.WINDOW_MODAL); stage.initOwner(owner); - windowIcon.ifPresent(stage.getIcons()::add); + stage.getIcons().addAll(windowIcons); return stage; } diff --git a/main/ui/src/main/java/org/cryptomator/ui/wrongfilealert/WrongFileAlertModule.java b/main/ui/src/main/java/org/cryptomator/ui/wrongfilealert/WrongFileAlertModule.java index c0f2786dc..0f64a802e 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/wrongfilealert/WrongFileAlertModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/wrongfilealert/WrongFileAlertModule.java @@ -17,8 +17,8 @@ import org.cryptomator.ui.common.FxmlScene; import javax.inject.Named; import javax.inject.Provider; +import java.util.List; import java.util.Map; -import java.util.Optional; import java.util.ResourceBundle; @Module @@ -34,12 +34,12 @@ abstract class WrongFileAlertModule { @Provides @WrongFileAlertWindow @WrongFileAlertScoped - static Stage provideStage(ResourceBundle resourceBundle, @Named("windowIcon") Optional windowIcon) { + static Stage provideStage(ResourceBundle resourceBundle, @Named("windowIcons") List windowIcons) { Stage stage = new Stage(); stage.setTitle(resourceBundle.getString("wrongFileAlert.title")); stage.setResizable(false); stage.initModality(Modality.WINDOW_MODAL); - windowIcon.ifPresent(stage.getIcons()::add); + stage.getIcons().addAll(windowIcons); return stage; }