From 64373fe77e1c0c7e38cd9566609d3d7cbcf5a474 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Tue, 3 Nov 2009 10:47:02 -0500 Subject: [PATCH] add avatar icons to message tray --- data/theme/gnome-shell.css | 1 + js/ui/messageTray.js | 22 ++++++++++++++++------ js/ui/messaging.js | 2 +- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css index a097d78f7..dfe8dc7cf 100644 --- a/data/theme/gnome-shell.css +++ b/data/theme/gnome-shell.css @@ -163,6 +163,7 @@ StScrollBar StButton#vhandle:hover border: 1px solid rgba(128,128,128,0.45); color: white; padding: 10px; + spacing: 10px; } /* App Switcher */ diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js index 73128afee..512aec00a 100644 --- a/js/ui/messageTray.js +++ b/js/ui/messageTray.js @@ -18,6 +18,9 @@ Notification.prototype = { _init: function() { this.actor = new St.BoxLayout({ name: 'notification' }); + this._iconBox = new St.Bin(); + this.actor.add(this._iconBox); + this._text = new St.Label(); this.actor.add(this._text, { expand: true, x_fill: false, x_align: St.Align.MIDDLE }); @@ -34,13 +37,14 @@ Notification.prototype = { this._hideTimeoutId = 0; }, - show: function(text) { + show: function(icon, text) { let primary = global.get_primary_monitor(); if (this._hideTimeoutId > 0) Mainloop.source_remove(this._hideTimeoutId); this._hideTimeoutId = Mainloop.timeout_add(NOTIFICATION_TIMEOUT * 1000, Lang.bind(this, this.hide)); + this._iconBox.child = icon; this._text.text = text; this.actor.x = Math.round((primary.width - this.actor.width) / 2); @@ -60,13 +64,19 @@ Notification.prototype = { { y: primary.height, time: ANIMATION_TIME, transition: "easeOutQuad", - onComplete: function() { - // Don't hide the notification if we are showing a new one. - if (this._hideTimeoutId == 0) - this.actor.hide(); - }, + onComplete: this.hideComplete, onCompleteScope: this }); return false; + }, + + hideComplete: function() { + // We don't explicitly destroy the icon, since the caller may + // still want it. + this._iconBox.child = null; + + // Don't hide the notification if we are showing a new one. + if (this._hideTimeoutId == 0) + this.actor.hide(); } }; diff --git a/js/ui/messaging.js b/js/ui/messaging.js index 11d0d15a6..5cc45e0fe 100644 --- a/js/ui/messaging.js +++ b/js/ui/messaging.js @@ -232,6 +232,6 @@ Source.prototype = { _receivedMessage: function(channel, id, timestamp, sender, type, flags, text) { log('Received: id ' + id + ', time ' + timestamp + ', sender ' + sender + ', type ' + type + ', flags ' + flags + ': ' + text); - Main.notificationPopup.show(text); + Main.notificationPopup.show(this._avatar, text); } };