messageTray: Remove useActionIcons feature

This can be put in the legacy notification daemon with the new
addButtonFull API, to create icon names for actions.

https://bugzilla.gnome.org/show_bug.cgi?id=710137
This commit is contained in:
Jasper St. Pierre 2013-10-13 23:13:31 -04:00
parent 5023542882
commit 5f081b8f8d
2 changed files with 23 additions and 20 deletions

View File

@ -503,7 +503,6 @@ const Notification = new Lang.Class({
this.focused = false; this.focused = false;
this.acknowledged = false; this.acknowledged = false;
this._destroyed = false; this._destroyed = false;
this._useActionIcons = false;
this._customContent = false; this._customContent = false;
this.bannerBodyText = null; this.bannerBodyText = null;
this.bannerBodyMarkup = false; this.bannerBodyMarkup = false;
@ -866,17 +865,9 @@ const Notification = new Lang.Class({
// If the button is clicked, the notification will emit the // If the button is clicked, the notification will emit the
// %action-invoked signal with @id as a parameter // %action-invoked signal with @id as a parameter
addAction: function(id, label) { addAction: function(id, label) {
let button = new St.Button({ can_focus: true }); let button = new St.Button({ style_class: 'notification-button',
label: label,
let iconName = strHasSuffix(id, '-symbolic') ? id : id + '-symbolic'; can_focus: true });
if (this._useActionIcons && Gtk.IconTheme.get_default().has_icon(iconName)) {
button.add_style_class_name('notification-icon-button');
button.child = new St.Icon({ icon_name: iconName });
} else {
button.add_style_class_name('notification-button');
button.label = label;
}
return this.addButton(id, button); return this.addButton(id, button);
}, },
@ -896,10 +887,6 @@ const Notification = new Lang.Class({
this.forFeedback = forFeedback; this.forFeedback = forFeedback;
}, },
setUseActionIcons: function(useIcons) {
this._useActionIcons = useIcons;
},
_styleChanged: function() { _styleChanged: function() {
this._spacing = this._table.get_theme_node().get_length('spacing-columns'); this._spacing = this._table.get_theme_node().get_length('spacing-columns');
}, },

View File

@ -351,6 +351,19 @@ const NotificationDaemon = new Lang.Class({
return invocation.return_value(GLib.Variant.new('(u)', [id])); return invocation.return_value(GLib.Variant.new('(u)', [id]));
}, },
_makeButton: function(id, label, useActionIcons) {
let button = new St.Button({ can_focus: true });
let iconName = strHasSuffix(id, '-symbolic') ? id : id + '-symbolic';
if (useActionIcons && Gtk.IconTheme.get_default().has_icon(iconName)) {
button.add_style_class_name('notification-icon-button');
button.child = new St.Icon({ icon_name: iconName });
} else {
button.add_style_class_name('notification-button');
button.label = label;
}
return button;
},
_notifyForSource: function(source, ndata) { _notifyForSource: function(source, ndata) {
let [id, icon, summary, body, actions, hints, notification] = let [id, icon, summary, body, actions, hints, notification] =
[ndata.id, ndata.icon, ndata.summary, ndata.body, [ndata.id, ndata.icon, ndata.summary, ndata.body,
@ -414,15 +427,18 @@ const NotificationDaemon = new Lang.Class({
notification.setImage(image); notification.setImage(image);
if (actions.length) { if (actions.length) {
notification.setUseActionIcons(hints['action-icons'] == true); let useActionIcons = (hints['action-icons'] == true);
for (let i = 0; i < actions.length - 1; i += 2) { for (let i = 0; i < actions.length - 1; i += 2) {
if (actions[i] == 'default') let [actionId, label] = [actions[i], actions[i+1]];
if (actionId == 'default') {
notification.connect('clicked', Lang.bind(this, notification.connect('clicked', Lang.bind(this,
function() { function() {
this._emitActionInvoked(ndata.id, "default"); this._emitActionInvoked(ndata.id, "default");
})); }));
else } else {
notification.addAction(actions[i], actions[i + 1]); notification.addButton(actionId, this._makeButton(id, label, useActionIcons));
}
} }
} }
switch (hints.urgency) { switch (hints.urgency) {