[geary/mjog/plugin-support: 5/6] Add a libpeas Plugin.Notification extension, hook it up
- From: Michael Gratton <mjog src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [geary/mjog/plugin-support: 5/6] Add a libpeas Plugin.Notification extension, hook it up
- Date: Fri, 27 Sep 2019 01:00:46 +0000 (UTC)
commit 368823433ac8ebdc7c502696fe7d0ee6e4a99bea
Author: Michael Gratton <mike vee net>
Date: Fri Sep 27 01:03:34 2019 +1000
Add a libpeas Plugin.Notification extension, hook it up
po/POTFILES.in | 1 +
src/client/application/application-controller.vala | 2 +-
.../application/application-plugin-manager.vala | 19 +++++++++++++++--
src/client/meson.build | 2 ++
src/client/plugin/plugin-notification.vala | 24 ++++++++++++++++++++++
5 files changed, 45 insertions(+), 3 deletions(-)
---
diff --git a/po/POTFILES.in b/po/POTFILES.in
index db79d4b8..4cb50a03 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -83,6 +83,7 @@ src/client/notification/new-messages-indicator.vala
src/client/notification/notification-desktop.vala
src/client/notification/null-indicator.vala
src/client/notification/unity-launcher.vala
+src/client/plugin/plugin-notification.vala
src/client/sidebar/sidebar-branch.vala
src/client/sidebar/sidebar-common.vala
src/client/sidebar/sidebar-count-cell-renderer.vala
diff --git a/src/client/application/application-controller.vala
b/src/client/application/application-controller.vala
index 4be6860c..2a489cb6 100644
--- a/src/client/application/application-controller.vala
+++ b/src/client/application/application-controller.vala
@@ -280,7 +280,7 @@ public class Application.Controller : Geary.BaseObject {
this.get_contact_store_for_account,
this.should_notify_new_messages
);
-
+ this.plugin_manager.load();
// Create the main window (must be done after creating actions.)
main_window = new MainWindow(this.application);
diff --git a/src/client/application/application-plugin-manager.vala
b/src/client/application/application-plugin-manager.vala
index 9f472478..85421982 100644
--- a/src/client/application/application-plugin-manager.vala
+++ b/src/client/application/application-plugin-manager.vala
@@ -5,7 +5,7 @@
* (version 2.1 or later). See the COPYING file in this distribution.
*/
-/*
+/**
* Finds and manages application plugins.
*/
public class Application.PluginManager : GLib.Object {
@@ -14,13 +14,28 @@ public class Application.PluginManager : GLib.Object {
public NotificationContext notifications { get; set; }
private Peas.Engine engine;
+ private Peas.ExtensionSet? notification_extensions = null;
public PluginManager(GLib.File app_plugin_dir) {
this.engine = Peas.Engine.get_default();
this.engine.add_search_path(app_plugin_dir.get_path(), null);
+ }
- // Load built-in plugins
+ public void load() {
+ this.notification_extensions = new Peas.ExtensionSet(
+ this.engine,
+ typeof(Plugin.Notification),
+ "context", this.notifications
+ );
+ this.notification_extensions.extension_added.connect((info, extension) => {
+ (extension as Plugin.Notification).activate();
+ });
+ this.notification_extensions.extension_removed.connect((info, extension) => {
+ (extension as Plugin.Notification).deactivate();
+ });
+
+ // Load built-in plugins by default
foreach (Peas.PluginInfo info in this.engine.get_plugin_list()) {
if (info.is_builtin()) {
this.engine.load_plugin(info);
diff --git a/src/client/meson.build b/src/client/meson.build
index 961b19da..6e0e3d7f 100644
--- a/src/client/meson.build
+++ b/src/client/meson.build
@@ -91,6 +91,8 @@ geary_client_vala_sources = files(
'notification/null-indicator.vala',
'notification/unity-launcher.vala',
+ 'plugin/plugin-notification.vala',
+
'sidebar/sidebar-branch.vala',
'sidebar/sidebar-common.vala',
'sidebar/sidebar-count-cell-renderer.vala',
diff --git a/src/client/plugin/plugin-notification.vala b/src/client/plugin/plugin-notification.vala
new file mode 100644
index 00000000..92e825fc
--- /dev/null
+++ b/src/client/plugin/plugin-notification.vala
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2019 Michael Gratton <mike vee net>
+ *
+ * This software is licensed under the GNU Lesser General Public License
+ * (version 2.1 or later). See the COPYING file in this distribution.
+ */
+
+/**
+ * A plugin for notifying of new mail being delivered.
+ */
+public abstract class Plugin.Notification : Geary.BaseObject {
+
+ /** Context object for notification information. */
+ public abstract Application.NotificationContext context {
+ get; construct set;
+ }
+
+ /* Invoked to activate the plugin, after loading. */
+ public abstract void activate();
+
+ /* Invoked to deactivate the plugin, prior to unloading */
+ public abstract void deactivate();
+
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]