diff options
Diffstat (limited to 'main/src/ui/application.vala')
| -rw-r--r-- | main/src/ui/application.vala | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/main/src/ui/application.vala b/main/src/ui/application.vala index 1b4dc049..9ac512d9 100644 --- a/main/src/ui/application.vala +++ b/main/src/ui/application.vala @@ -14,6 +14,7 @@ public class Dino.Ui.Application : Adw.Application, Dino.Application { public MainWindow window; public MainWindowController controller; + private StatusNotifierItem? status_notifier_item; public Database db { get; set; } public Dino.Entities.Settings settings { get; set; } @@ -43,6 +44,12 @@ public class Dino.Ui.Application : Adw.Application, Dino.Application { Process.exit(0); } + try { + status_notifier_item = new StatusNotifierItem(this); + } catch (IOError e) { + warning("Could not create Dino's tray icon: %s", e.message); + } + NotificationEvents notification_events = stream_interactor.get_module(NotificationEvents.IDENTITY); get_notifications_dbus.begin((_, res) => { // It might take a bit to get the interface. NotificationEvents will queue any notifications in the meantime. @@ -68,13 +75,20 @@ public class Dino.Ui.Application : Adw.Application, Dino.Application { stream_interactor.get_module(FileManager.IDENTITY).add_metadata_provider(new Util.AudioVideoFileMetadataProvider()); }); + shutdown.connect(() => { + if (status_notifier_item != null) { + status_notifier_item.shutdown(); + status_notifier_item = null; + } + }); + activate.connect(() => { if (window == null) { controller = new MainWindowController(this, stream_interactor, db); config = new Config(db); window = new MainWindow(this, stream_interactor, db, config); controller.set_window(window); - if ((get_flags() & ApplicationFlags.IS_SERVICE) == ApplicationFlags.IS_SERVICE) window.hide_on_close = true; + window.hide_on_close = true; } window.present(); }); @@ -305,4 +319,3 @@ public class Dino.Ui.Application : Adw.Application, Dino.Application { dialog.present(); } } - |
