diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/daemon/daemon.c | 32 | 
1 files changed, 25 insertions, 7 deletions
| diff --git a/src/daemon/daemon.c b/src/daemon/daemon.c index c418809..d8bab28 100644 --- a/src/daemon/daemon.c +++ b/src/daemon/daemon.c @@ -873,9 +873,8 @@ static void _calculate_timeout(NotifyDaemon* daemon, NotifyTimeout* nt, int time  	}  } -static NotifyTimeout* _store_notification(NotifyDaemon* daemon, GtkWindow* nw, int timeout) +static guint _generate_id(NotifyDaemon* daemon)  { -	NotifyTimeout* nt;  	guint id = 0;  	do { @@ -897,6 +896,14 @@ static NotifyTimeout* _store_notification(NotifyDaemon* daemon, GtkWindow* nw, i  	} while (id == 0); +	return id; +} + +static NotifyTimeout* _store_notification(NotifyDaemon* daemon, GtkWindow* nw, int timeout) +{ +	NotifyTimeout* nt; +	guint id = _generate_id(daemon); +  	nt = g_new0(NotifyTimeout, 1);  	nt->id = id;  	nt->nw = nw; @@ -1311,6 +1318,7 @@ static gboolean notify_daemon_notify_handler(NotifyDaemonNotifications *object,  	guint return_id;  	char* sound_file = NULL;  	gboolean sound_enabled; +	gboolean do_not_disturb;  	gint i;  	GdkPixbuf* pixbuf;  	GSettings* gsettings; @@ -1321,6 +1329,21 @@ static gboolean notify_daemon_notify_handler(NotifyDaemonNotifications *object,  		return FALSE;  	} +	/* Grab the settings */ +	gsettings = g_settings_new (GSETTINGS_SCHEMA); +	sound_enabled = g_settings_get_boolean (gsettings, GSETTINGS_KEY_SOUND_ENABLED); +	do_not_disturb = g_settings_get_boolean (gsettings, GSETTINGS_KEY_DO_NOT_DISTURB); +	g_object_unref (gsettings); + +	/* If we are in do-not-disturb mode, just grab a new id and close the notification */ +	if (do_not_disturb) +	{ +		/* FIXME: does this break things if we enable the option with an action notification up */ +		return_id = _generate_id (daemon); +		notify_daemon_notifications_complete_notify (object, invocation, return_id); +		return TRUE; +	} +  	if (id > 0)  	{  		nt = (NotifyTimeout *) g_hash_table_lookup (daemon->notification_hash, &id); @@ -1376,11 +1399,6 @@ static gboolean notify_daemon_notify_handler(NotifyDaemonNotifications *object,  		}  	} -	/* Deal with sound hints */ -	gsettings = g_settings_new (GSETTINGS_SCHEMA); -	sound_enabled = g_settings_get_boolean (gsettings, GSETTINGS_KEY_SOUND_ENABLED); -	g_object_unref (gsettings); -  	if (g_variant_lookup(hints, "suppress-sound", "v", &data)) {  		if (g_variant_get_type (data) == G_VARIANT_TYPE_BOOLEAN )  		{ | 
