[gnome-maps/wip/notifications2: 12/14] Notifications: Add static notifications
- From: Mattias Bengtsson <mattiasb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-maps/wip/notifications2: 12/14] Notifications: Add static notifications
- Date: Mon, 17 Feb 2014 00:31:08 +0000 (UTC)
commit 439ad0750a455d1792cc9f9d241fef2e8eef95ed
Author: Mattias Bengtsson <mattias jc bengtsson gmail com>
Date: Sat Feb 15 06:33:25 2014 +0100
Notifications: Add static notifications
Add support for static notifications. These are pre-defined
notifications that are cached and reused.
https://bugzilla.gnome.org/show_bug.cgi?id=723996
src/notification.js | 2 ++
src/notificationManager.js | 25 +++++++++++++++++++++++++
2 files changed, 27 insertions(+), 0 deletions(-)
---
diff --git a/src/notification.js b/src/notification.js
index ee21cd1..d2e2e02 100644
--- a/src/notification.js
+++ b/src/notification.js
@@ -79,3 +79,5 @@ const Plain = new Lang.Class({
this._ui.body.add(label);
}
});
+
+const Type = { };
diff --git a/src/notificationManager.js b/src/notificationManager.js
index 9edef21..986c40a 100644
--- a/src/notificationManager.js
+++ b/src/notificationManager.js
@@ -31,6 +31,7 @@ const NotificationManager = new Lang.Class({
_init: function(overlay) {
this._overlay = overlay;
+ this._cache = {};
},
showMessage: function (msg) {
@@ -39,5 +40,29 @@ const NotificationManager = new Lang.Class({
notification.destroy.bind(notification));
this._overlay.add_overlay(notification);
notification.reveal();
+ },
+
+ // Shows a static (reusable) notification
+ showNotification: function(notificationType) {
+ let notification = this._getNotification(notificationType);
+ if(!notification.get_parent())
+ this._overlay.add_overlay(notification);
+ notification.reveal();
+ },
+
+ _getNotification: function(notificationType) {
+ if(!this._cache.hasOwnProperty(notificationType.name)) {
+ this._createNotification(notificationType);
+ }
+ return this._cache[notificationType.name];
+ },
+
+ _createNotification: function(notificationType) {
+ let notification = new notificationType.Class();
+ notification.connect('dismissed', (function() {
+ this._overlay.remove(notification);
+ }).bind(this));
+
+ this._cache[notificationType.name] = notification;
}
});
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]