new option: mute notifications
This commit is contained in:
		
							parent
							
								
									1b105158ba
								
							
						
					
					
						commit
						1b72375dd7
					
				
					 3 changed files with 52 additions and 6 deletions
				
			
		|  | @ -63,6 +63,19 @@ namespace Webpin { | |||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public bool mute_notifications { | ||||
|             get { | ||||
|                 this.file = new GLib.KeyFile(); | ||||
|                 try { | ||||
|                     file.load_from_file (info.filename, KeyFileFlags.NONE); | ||||
|                     return file.get_string ("Desktop Entry", "WebpinMuteNotifications") == "true"; | ||||
|                 } catch (Error e) { | ||||
|                     warning (e.message); | ||||
|                 } | ||||
|                 return false; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public DesktopFile (string name, string url, string icon, bool stay_open) { | ||||
|             this.name = name; | ||||
|             this.url = url.replace ("%", "%%"); | ||||
|  |  | |||
|  | @ -37,6 +37,7 @@ namespace Webpin { | |||
|         Gtk.Spinner spinner; | ||||
| 
 | ||||
|         public DesktopFile desktop_file { get; private set; } | ||||
|         private Notification desktop_notification; | ||||
| 
 | ||||
|         public WebWindow (DesktopFile desktop_file) { | ||||
|             this.desktop_file = desktop_file; | ||||
|  | @ -45,6 +46,8 @@ namespace Webpin { | |||
|             set_wmclass (desktop_file.url, desktop_file.url); | ||||
|             web_app = new WebApp (desktop_file.url); | ||||
| 
 | ||||
|             desktop_notification = new Notification (""); | ||||
| 
 | ||||
|             var headerbar = new Gtk.HeaderBar (); | ||||
|             headerbar.title = desktop_file.name; | ||||
|             headerbar.show_close_button = true; | ||||
|  | @ -63,6 +66,31 @@ namespace Webpin { | |||
|             }); | ||||
|             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); | ||||
| 
 | ||||
|             var width = desktop_file.info.get_string ("WebpinWindowWidth"); | ||||
|  | @ -101,6 +129,14 @@ namespace Webpin { | |||
|                 } | ||||
|             }); | ||||
| 
 | ||||
|             web_app.desktop_notification.connect ((title, body) => { | ||||
|                 if (!desktop_file.mute_notifications) { | ||||
|                     desktop_notification.set_title (title); | ||||
|                     desktop_notification.set_body (body); | ||||
|                     WebpinApp.instance.send_notification (null, desktop_notification); | ||||
|                 } | ||||
|             }); | ||||
| 
 | ||||
|             web_app.request_begin.connect (() => { | ||||
|                 spinner.active = true; | ||||
|             }); | ||||
|  |  | |||
|  | @ -37,11 +37,11 @@ namespace Webpin { | |||
|         private WebKit.CookieManager cookie_manager; | ||||
|         private Gtk.Box container; | ||||
|         Granite.Widgets.Toast app_notification; | ||||
|         Notification desktop_notification; | ||||
| 
 | ||||
|         public signal void external_request (WebKit.NavigationAction action); | ||||
|         public signal void request_begin (); | ||||
|         public signal void request_finished (); | ||||
|         public signal void desktop_notification (string title, string body); | ||||
| 
 | ||||
| 
 | ||||
|         public WebApp (string app_url) { | ||||
|  | @ -76,7 +76,6 @@ namespace Webpin { | |||
|             container.valign = Gtk.Align.FILL; | ||||
| 
 | ||||
|             app_notification = new Granite.Widgets.Toast (""); | ||||
|             desktop_notification = new Notification (""); | ||||
| 
 | ||||
|             //overlay trick to make snapshot work even with the spinner | ||||
|             var overlay = new Gtk.Overlay (); | ||||
|  | @ -135,9 +134,7 @@ namespace Webpin { | |||
|             }); | ||||
| 
 | ||||
|             app_view.show_notification.connect ((notification) => { | ||||
|                 desktop_notification.set_title (notification.title); | ||||
|                 desktop_notification.set_body (notification.body); | ||||
|                 WebpinApp.instance.send_notification (null, desktop_notification); | ||||
|                 desktop_notification (notification.title, notification.body); | ||||
|                 return false; | ||||
|             }); | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Artem Anufrij
						Artem Anufrij