From 1f60d9f5e83fa899a264bdeefb67018948fc5113 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Wed, 19 Mar 2025 15:13:51 +0100 Subject: [PATCH] remove notification, if eventView is focused --- .../org/cryptomator/ui/eventview/EventViewModule.java | 9 ++++++++- .../org/cryptomator/ui/fxapp/FxApplicationModule.java | 10 ++++++++++ .../cryptomator/ui/mainwindow/VaultListController.java | 8 +++++--- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/cryptomator/ui/eventview/EventViewModule.java b/src/main/java/org/cryptomator/ui/eventview/EventViewModule.java index 4d968ea5b..e2f7d43b0 100644 --- a/src/main/java/org/cryptomator/ui/eventview/EventViewModule.java +++ b/src/main/java/org/cryptomator/ui/eventview/EventViewModule.java @@ -12,7 +12,9 @@ import org.cryptomator.ui.common.FxmlLoaderFactory; import org.cryptomator.ui.common.FxmlScene; import org.cryptomator.ui.common.StageFactory; +import javax.inject.Named; import javax.inject.Provider; +import javafx.beans.property.BooleanProperty; import javafx.scene.Scene; import javafx.stage.Modality; import javafx.stage.Stage; @@ -25,12 +27,17 @@ abstract class EventViewModule { @Provides @EventViewScoped @EventViewWindow - static Stage provideStage(StageFactory factory, ResourceBundle resourceBundle) { + static Stage provideStage(StageFactory factory, ResourceBundle resourceBundle, @Named("unreadEventsAvailable") BooleanProperty unreadEvents) { Stage stage = factory.create(); stage.setHeight(498); stage.setTitle(resourceBundle.getString("eventView.title")); stage.setResizable(true); stage.initModality(Modality.NONE); + stage.focusedProperty().addListener((_,_,isFocused) -> { + if(isFocused) { + unreadEvents.setValue(false); + } + }); return stage; } diff --git a/src/main/java/org/cryptomator/ui/fxapp/FxApplicationModule.java b/src/main/java/org/cryptomator/ui/fxapp/FxApplicationModule.java index a32059036..35cbf13ca 100644 --- a/src/main/java/org/cryptomator/ui/fxapp/FxApplicationModule.java +++ b/src/main/java/org/cryptomator/ui/fxapp/FxApplicationModule.java @@ -20,6 +20,9 @@ import org.cryptomator.ui.unlock.UnlockComponent; import org.cryptomator.ui.updatereminder.UpdateReminderComponent; import org.cryptomator.ui.vaultoptions.VaultOptionsComponent; +import javax.inject.Named; +import javafx.beans.property.BooleanProperty; +import javafx.beans.property.SimpleBooleanProperty; import javafx.scene.image.Image; import java.io.IOException; import java.io.InputStream; @@ -74,4 +77,11 @@ abstract class FxApplicationModule { return factory.create(); } + @Provides + @FxApplicationScoped + @Named("unreadEventsAvailable") + static BooleanProperty provideUnreadEventsAvailable() { + return new SimpleBooleanProperty(false); + } + } \ No newline at end of file diff --git a/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java b/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java index 3b5973354..165c14a25 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java @@ -1,12 +1,12 @@ package org.cryptomator.ui.mainwindow; import org.apache.commons.lang3.SystemUtils; -import org.cryptomator.event.FileSystemEventRegistry; import org.cryptomator.common.settings.Settings; import org.cryptomator.common.vaults.Vault; import org.cryptomator.common.vaults.VaultListManager; import org.cryptomator.cryptofs.CryptoFileSystemProvider; import org.cryptomator.cryptofs.DirStructure; +import org.cryptomator.event.FileSystemEventRegistry; import org.cryptomator.ui.addvaultwizard.AddVaultWizardComponent; import org.cryptomator.ui.common.FxController; import org.cryptomator.ui.common.VaultService; @@ -17,6 +17,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.inject.Inject; +import javax.inject.Named; import javafx.beans.binding.Bindings; import javafx.beans.binding.BooleanBinding; import javafx.beans.property.BooleanProperty; @@ -96,7 +97,8 @@ public class VaultListController implements FxController { FxApplicationWindows appWindows, // Settings settings, // Dialogs dialogs, // - FileSystemEventRegistry fileSystemEventRegistry) { + FileSystemEventRegistry fileSystemEventRegistry, // + @Named("unreadEventsAvailable") BooleanProperty unreadEvents) { this.mainWindow = mainWindow; this.vaults = vaults; this.selectedVault = selectedVault; @@ -110,7 +112,7 @@ public class VaultListController implements FxController { this.emptyVaultList = Bindings.isEmpty(vaults); this.fileSystemEventRegistry = fileSystemEventRegistry; - this.newEventsPresent = new SimpleBooleanProperty(false); + this.newEventsPresent = unreadEvents; fileSystemEventRegistry.addListener((MapChangeListener) change -> { if (change.wasAdded()) { newEventsPresent.setValue(true);