diff options
-rw-r--r-- | libempathy-gtk/empathy-notify-manager.h | 15 | ||||
-rw-r--r-- | src/empathy-chat-window.c | 11 | ||||
-rw-r--r-- | src/empathy-event-manager.h | 1 | ||||
-rw-r--r-- | src/empathy-notifications-approver.c | 35 |
4 files changed, 40 insertions, 22 deletions
diff --git a/libempathy-gtk/empathy-notify-manager.h b/libempathy-gtk/empathy-notify-manager.h index dd7565c9f..0b937e1d5 100644 --- a/libempathy-gtk/empathy-notify-manager.h +++ b/libempathy-gtk/empathy-notify-manager.h @@ -43,6 +43,21 @@ G_BEGIN_DECLS #define EMPATHY_NOTIFY_MANAGER_CAP_X_CANONICAL_PRIVATE_SYNCHRONOUS "x-canonical-private-synchronous" #define EMPATHY_NOTIFY_MANAGER_CAP_X_CANONICAL_TRUNCATION "x-canonical-truncation" +/* Categories associated with EMPATHY_NOTIFY_MANAGER_CAP_CATEGORY. + * Uses x-empathy as prefix for unofficial categories. See + * http://www.galago-project.org/specs/notification/0.9/x211.html */ +#define EMPATHY_NOTIFICATION_CATEGORY_CHAT "im.received" +#define EMPATHY_NOTIFICATION_CATEGORY_PRESENCE_ONLINE "presence.online" +#define EMPATHY_NOTIFICATION_CATEGORY_PRESENCE_OFFLINE "presence.offline" +/* Yes, these two are the same. */ +#define EMPATHY_NOTIFICATION_CATEGORY_VOIP "x-empathy.call.incoming" +#define EMPATHY_NOTIFICATION_CATEGORY_CALL "x-empathy.call.incoming" +#define EMPATHY_NOTIFICATION_CATEGORY_TRANSFER "x-empathy.transfer.incoming" +#define EMPATHY_NOTIFICATION_CATEGORY_INVITATION "x-empathy.im.room-invitation" +#define EMPATHY_NOTIFICATION_CATEGORY_AUTH "x-empathy.network.auth-request" +#define EMPATHY_NOTIFICATION_CATEGORY_SUBSCRIPTION "x-empathy.im.subscription-request" +#define EMPATHY_NOTIFICATION_CATEGORY_MENTIONED "x-empathy.im.mentioned" + #define EMPATHY_TYPE_NOTIFY_MANAGER (empathy_notify_manager_get_type ()) #define EMPATHY_NOTIFY_MANAGER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_NOTIFY_MANAGER, EmpathyNotifyManager)) #define EMPATHY_NOTIFY_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EMPATHY_TYPE_NOTIFY_MANAGER, EmpathyNotifyManagerClass)) diff --git a/src/empathy-chat-window.c b/src/empathy-chat-window.c index f80f09611..ac3584f34 100644 --- a/src/empathy-chat-window.c +++ b/src/empathy-chat-window.c @@ -1568,9 +1568,14 @@ chat_window_show_or_update_notification (EmpathyChatWindow *window, EMPATHY_NOTIFY_MANAGER_CAP_X_CANONICAL_APPEND, "1"); } - notify_notification_set_hint (notification, - EMPATHY_NOTIFY_MANAGER_CAP_CATEGORY, - g_variant_new_string ("im.received")); + { + const gchar *category = empathy_chat_is_room (chat) + ? EMPATHY_NOTIFICATION_CATEGORY_MENTIONED + : EMPATHY_NOTIFICATION_CATEGORY_CHAT; + notify_notification_set_hint (notification, + EMPATHY_NOTIFY_MANAGER_CAP_CATEGORY, + g_variant_new_string (category)); + } } pixbuf = empathy_notify_manager_get_pixbuf_for_notification (priv->notify_mgr, diff --git a/src/empathy-event-manager.h b/src/empathy-event-manager.h index 91c6e1f99..e50ab8884 100644 --- a/src/empathy-event-manager.h +++ b/src/empathy-event-manager.h @@ -58,6 +58,7 @@ typedef enum { EMPATHY_EVENT_TYPE_PRESENCE_OFFLINE, EMPATHY_EVENT_TYPE_INVITATION, EMPATHY_EVENT_TYPE_AUTH, + EMPATHY_EVENT_TYPE_MENTIONED, } EmpathyEventType; typedef struct { diff --git a/src/empathy-notifications-approver.c b/src/empathy-notifications-approver.c index 7a4f03731..92b3f7475 100644 --- a/src/empathy-notifications-approver.c +++ b/src/empathy-notifications-approver.c @@ -185,6 +185,7 @@ add_notification_actions (EmpathyNotificationsApprover *self, switch (self->priv->event->type) { case EMPATHY_EVENT_TYPE_CHAT: + case EMPATHY_EVENT_TYPE_MENTIONED: notify_notification_add_action (notification, "respond", _("Respond"), (NotifyActionCallback) notification_approve_cb, self, NULL); @@ -265,6 +266,7 @@ notification_is_urgent (EmpathyNotificationsApprover *self, case EMPATHY_EVENT_TYPE_TRANSFER: case EMPATHY_EVENT_TYPE_INVITATION: case EMPATHY_EVENT_TYPE_AUTH: + case EMPATHY_EVENT_TYPE_MENTIONED: return TRUE; case EMPATHY_EVENT_TYPE_SUBSCRIPTION: @@ -276,30 +278,25 @@ notification_is_urgent (EmpathyNotificationsApprover *self, return FALSE; } -/* Use x-empathy as prefix for unofficial categories - * http://www.galago-project.org/specs/notification/0.9/x211.html */ static const gchar * get_category_for_event_type (EmpathyEventType type) { +#define CASE(x) \ + case EMPATHY_EVENT_TYPE_##x: \ + return EMPATHY_NOTIFICATION_CATEGORY_##x; switch (type) { - case EMPATHY_EVENT_TYPE_CHAT: - return "im.received"; - case EMPATHY_EVENT_TYPE_PRESENCE_ONLINE: - return "presence.online"; - case EMPATHY_EVENT_TYPE_PRESENCE_OFFLINE: - return "presence.offline"; - case EMPATHY_EVENT_TYPE_VOIP: - case EMPATHY_EVENT_TYPE_CALL: - return "x-empathy.call.incoming"; - case EMPATHY_EVENT_TYPE_TRANSFER: - return "x-empathy.transfer.incoming"; - case EMPATHY_EVENT_TYPE_INVITATION: - return "x-empathy.im.room-invitation"; - case EMPATHY_EVENT_TYPE_AUTH: - return "x-empathy.network.auth-request"; - case EMPATHY_EVENT_TYPE_SUBSCRIPTION: - return "x-empathy.im.subscription-request"; + CASE(CHAT) + CASE(PRESENCE_ONLINE) + CASE(PRESENCE_OFFLINE) + CASE(VOIP) + CASE(CALL) + CASE(TRANSFER) + CASE(INVITATION) + CASE(AUTH) + CASE(SUBSCRIPTION) + CASE(MENTIONED) } +#undef CASE return NULL; } |