diff options
| author | Xan Lopez <xlopez@igalia.com> | 2011-08-29 21:49:08 +0800 | 
|---|---|---|
| committer | Xan Lopez <xlopez@igalia.com> | 2011-08-29 21:49:08 +0800 | 
| commit | 540c0c0ac46399462dfad2c3fd0a50a412882307 (patch) | |
| tree | e030bf92f223f7b35e30b3e06a430b9a82e8d9ba | |
| parent | e6785d3ccc5a5a7c933a50b1a224fc01ee741c9c (diff) | |
| download | gsoc2013-epiphany-540c0c0ac46399462dfad2c3fd0a50a412882307.tar.gz gsoc2013-epiphany-540c0c0ac46399462dfad2c3fd0a50a412882307.tar.zst gsoc2013-epiphany-540c0c0ac46399462dfad2c3fd0a50a412882307.zip  | |
Show a notification when the newly created web-app is ready to be used
This will probably go away in 3.4 when the new dash design is
introduced, but for now it's the best we have.
| -rw-r--r-- | configure.ac | 2 | ||||
| -rw-r--r-- | src/ephy-main.c | 6 | ||||
| -rw-r--r-- | src/window-commands.c | 35 | 
3 files changed, 41 insertions, 2 deletions
diff --git a/configure.ac b/configure.ac index cdf52a845..dec2be9f9 100644 --- a/configure.ac +++ b/configure.ac @@ -91,6 +91,7 @@ WEBKIT_GTK_REQUIRED=1.5.2  LIBSOUP_GNOME_REQUIRED=2.33.1  GNOME_KEYRING_REQUIRED=2.26.0  GSETTINGS_DESKTOP_SCHEMAS_REQUIRED=0.0.1 +LIBNOTIFY_REQUIRED=0.5.1  # Tests @@ -118,6 +119,7 @@ PKG_CHECK_MODULES([DEPENDENCIES], [  		  libsoup-gnome-2.4 >= $LIBSOUP_GNOME_REQUIRED  		  gnome-keyring-1 >= $GNOME_KEYRING_REQUIRED  		  gsettings-desktop-schemas >= $GSETTINGS_DESKTOP_SCHEMAS_REQUIRED +		  libnotify >= $LIBNOTIFY_REQUIRED  		  ])  # ****************** diff --git a/src/ephy-main.c b/src/ephy-main.c index c74b2e7ef..19b4100f8 100644 --- a/src/ephy-main.c +++ b/src/ephy-main.c @@ -35,6 +35,7 @@  #include "eggsmclient.h"  #include <libxml/xmlversion.h> +#include <libnotify/notify.h>  #include <glib/gi18n.h> @@ -261,6 +262,8 @@ main (int argc,     */    LIBXML_TEST_VERSION; +  notify_init (PACKAGE); +    /* If we're given -remote arguments, translate them */    if (argc >= 2 && strcmp (argv[1], "-remote") == 0) {      const char *opening, *closing; @@ -463,6 +466,9 @@ main (int argc,    /* Shutdown */    g_object_unref (ephy_shell); +  if (notify_is_initted ()) +    notify_uninit (); +    ephy_file_save_accels ();    ephy_state_save ();    ephy_settings_shutdown (); diff --git a/src/window-commands.c b/src/window-commands.c index 341ea4014..3cdbcf686 100644 --- a/src/window-commands.c +++ b/src/window-commands.c @@ -58,6 +58,7 @@  #include <gtk/gtk.h>  #include <glib/gi18n.h>  #include <webkit/webkit.h> +#include <libnotify/notify.h>  static void  page_setup_done_cb (GtkPageSetup *setup, @@ -503,6 +504,20 @@ fill_default_application_title (EphyApplicationDialogData *data)  	gtk_entry_set_text (GTK_ENTRY (data->entry), title);  } +static void +notify_launch_cb (NotifyNotification *notification, +		  char *action, +		  gpointer user_data) +{ +	char * desktop_file = user_data; +	/* A gross hack to be able to launch epiphany from within +	 * Epiphany. Might be a good idea to figure out a better +	 * solution... */ +	g_unsetenv (EPHY_UUID_ENVVAR); +	ephy_file_launch_desktop_file (desktop_file, NULL, 0, NULL); +	g_free (desktop_file); +} +  void  window_cmd_file_save_as_application (GtkAction *action,  				     EphyWindow *window) @@ -558,14 +573,30 @@ window_cmd_file_save_as_application (GtkAction *action,  	if (response == GTK_RESPONSE_OK)  	{  		char *desktop_file; +		char *message; +		NotifyNotification *notification;  		/* Create Web Application, including a new profile and .desktop file. */  		desktop_file = ephy_web_view_create_web_application (view,  								     gtk_entry_get_text (GTK_ENTRY (data->entry)),  								     gtk_image_get_pixbuf (GTK_IMAGE (data->image))); -		/* TODO: show a notification when the app is totally -		 * created and ready to be launched */ +		message = g_strdup_printf (_("The application '%s' is ready to be used"), +					   gtk_entry_get_text (GTK_ENTRY (data->entry))); +					    +		notification = notify_notification_new (message, +							NULL, NULL); +		g_free (message); +		notify_notification_add_action (notification, "launch", _("Launch"), +						(NotifyActionCallback)notify_launch_cb, +						g_path_get_basename (desktop_file), +						NULL); +		notify_notification_set_icon_from_pixbuf (notification, gtk_image_get_pixbuf (GTK_IMAGE (data->image))); +		notify_notification_set_timeout (notification, NOTIFY_EXPIRES_DEFAULT); +		notify_notification_set_urgency (notification, NOTIFY_URGENCY_LOW); +		notify_notification_set_hint (notification, "transient", g_variant_new_boolean (TRUE)); +		notify_notification_show (notification, NULL); +  		g_free (desktop_file);  	}  | 
