[gnome-maps/wip/notifications-jonas: 2/4] Notifications: Add static notifications



commit cf9bb3f9a820c4cb6da227a3167d57001b73d973
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 |   22 ++++++++++++++++++++++
 1 files changed, 22 insertions(+), 0 deletions(-)
---
diff --git a/src/notification.js b/src/notification.js
index dd17241..b0261ab 100644
--- a/src/notification.js
+++ b/src/notification.js
@@ -60,11 +60,14 @@ const Plain = new Lang.Class({
     }
 });
 
+const Type = { };
+
 const Manager = new Lang.Class({
     Name: 'Manager',
     Extends: Gtk.Revealer,
 
     _init: function(overlay) {
+        this._cache = {};
         this._stack = new Gtk.Stack({ visible: true });
 
         this.parent({ visible: true,
@@ -78,6 +81,13 @@ const Manager = new Lang.Class({
         this._revealNotification(notification);
     },
 
+    // Shows a static (reusable) notification
+    showNotification: function(notificationType) {
+        let notification = this._getNotification(notificationType);
+        if(!notification.get_parent())
+            this._revealNotification(notification);
+    },
+
     _revealNotification: function(notification) {
         // only conceal the notification when it's the last one
         notification.connect('dismiss', (function() {
@@ -95,5 +105,17 @@ const Manager = new Lang.Class({
         this._stack.child_set_property(notification, 'position', 0);
         this._stack.set_visible_child(notification);
         this.set_reveal_child(true);
+    },
+
+    _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();
+        this._cache[notificationType.name] = notification;
     }
 });


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]