aboutsummaryrefslogtreecommitdiff
path: root/main/src/ui/application.vala
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/ui/application.vala')
-rw-r--r--main/src/ui/application.vala17
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();
}
}
-