[gnome-maps/wip/notifications-jonas: 2/4] Notifications: Add static notifications
- From: Jonas Danielsson <jonasdn src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-maps/wip/notifications-jonas: 2/4] Notifications: Add static notifications
- Date: Mon, 24 Feb 2014 14:04:38 +0000 (UTC)
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]