show app icon in desktop notification

This commit is contained in:
Artem Anufrij 2017-09-10 21:18:06 +02:00
parent 35b8630d1c
commit 7c41b22881
2 changed files with 11 additions and 34 deletions

View file

@ -66,31 +66,6 @@ namespace Webpin {
}); });
headerbar.pack_start (stay_open); headerbar.pack_start (stay_open);
var mute_notifications = new Gtk.ToggleButton ();
mute_notifications.active = desktop_file.mute_notifications;
if (mute_notifications.active) {
mute_notifications.image = new Gtk.Image.from_icon_name ("notification-disabled-symbolic", Gtk.IconSize.MENU);
mute_notifications.tooltip_text = _("Unmute notifications");
} else {
mute_notifications.image = new Gtk.Image.from_icon_name ("notification-symbolic", Gtk.IconSize.MENU);
mute_notifications.tooltip_text = _("Mute notifications");
}
mute_notifications.toggled.connect (() => {
desktop_file.edit_propertie ("WebpinMuteNotifications", mute_notifications.active.to_string ());
desktop_file.save_to_file ();
if (mute_notifications.active) {
mute_notifications.image = new Gtk.Image.from_icon_name ("notification-disabled-symbolic", Gtk.IconSize.MENU);
mute_notifications.tooltip_text = _("Unmute notifications");
} else {
mute_notifications.image = new Gtk.Image.from_icon_name ("notification-symbolic", Gtk.IconSize.MENU);
mute_notifications.tooltip_text = _("Mute notifications");
desktop_notification.set_title (desktop_file.name);
desktop_notification.set_body (_("Desktop notifications are enabled"));
WebpinApp.instance.send_notification (null, desktop_notification);
}
});
headerbar.pack_start (mute_notifications);
this.set_titlebar (headerbar); this.set_titlebar (headerbar);
var width = desktop_file.info.get_string ("WebpinWindowWidth"); var width = desktop_file.info.get_string ("WebpinWindowWidth");
@ -129,12 +104,11 @@ namespace Webpin {
} }
}); });
web_app.desktop_notification.connect ((title, body) => { web_app.desktop_notification.connect ((title, body, icon) => {
if (!desktop_file.mute_notifications) { desktop_notification.set_title (title);
desktop_notification.set_title (title); desktop_notification.set_body (body);
desktop_notification.set_body (body); desktop_notification.set_icon (icon);
WebpinApp.instance.send_notification (null, desktop_notification); WebpinApp.instance.send_notification (null, desktop_notification);
}
}); });
web_app.request_begin.connect (() => { web_app.request_begin.connect (() => {

View file

@ -37,11 +37,12 @@ namespace Webpin {
private WebKit.CookieManager cookie_manager; private WebKit.CookieManager cookie_manager;
private Gtk.Box container; private Gtk.Box container;
Granite.Widgets.Toast app_notification; Granite.Widgets.Toast app_notification;
GLib.Icon icon_for_notification;
public signal void external_request (WebKit.NavigationAction action); public signal void external_request (WebKit.NavigationAction action);
public signal void request_begin (); public signal void request_begin ();
public signal void request_finished (); public signal void request_finished ();
public signal void desktop_notification (string title, string body); public signal void desktop_notification (string title, string body, GLib.Icon icon);
public WebApp (string app_url) { public WebApp (string app_url) {
@ -106,6 +107,7 @@ namespace Webpin {
if (icon_file.query_exists ()) { if (icon_file.query_exists ()) {
try { try {
icon = new Gtk.Image.from_pixbuf (new Gdk.Pixbuf.from_file_at_scale (file.icon, 48, 48, true)); icon = new Gtk.Image.from_pixbuf (new Gdk.Pixbuf.from_file_at_scale (file.icon, 48, 48, true));
icon_for_notification = GLib.Icon.new_for_string (file.icon);
} catch (Error e) { } catch (Error e) {
warning (e.message); warning (e.message);
@ -113,6 +115,7 @@ namespace Webpin {
} }
} else { } else {
icon = new Gtk.Image.from_icon_name (file.icon, Gtk.IconSize.DIALOG); icon = new Gtk.Image.from_icon_name (file.icon, Gtk.IconSize.DIALOG);
icon_for_notification = new GLib.ThemedIcon (file.icon);
} }
container.pack_start(icon, true, true, 0); container.pack_start(icon, true, true, 0);
@ -134,8 +137,8 @@ namespace Webpin {
}); });
app_view.show_notification.connect ((notification) => { app_view.show_notification.connect ((notification) => {
desktop_notification (notification.title, notification.body); desktop_notification (notification.title, notification.body, icon_for_notification);
return false; return true;
}); });
app_view.permission_request.connect ((permission) => { app_view.permission_request.connect ((permission) => {