From 877ea6bc7673b4a3a31be2528a3f6e4bcad4262e Mon Sep 17 00:00:00 2001 From: Guillaume Desmottes Date: Thu, 28 Oct 2010 15:08:18 +0200 Subject: Add Accept/Decline button in subscription notifications (#630706) --- src/empathy-status-icon.c | 54 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) (limited to 'src') diff --git a/src/empathy-status-icon.c b/src/empathy-status-icon.c index e61e0cfd4..6bfb2f3a0 100644 --- a/src/empathy-status-icon.c +++ b/src/empathy-status-icon.c @@ -35,6 +35,7 @@ #include #include +#include #include #include @@ -129,6 +130,48 @@ notification_decline_cb (NotifyNotification *notification, empathy_event_decline (priv->event); } +static void +notification_decline_subscription_cb (NotifyNotification *notification, + gchar *action, + EmpathyStatusIcon *icon) +{ + EmpathyStatusIconPriv *priv = GET_PRIV (icon); + EmpathyContactManager *manager; + + if (priv->event == NULL) + return; + + + manager = empathy_contact_manager_dup_singleton (); + empathy_contact_list_remove (EMPATHY_CONTACT_LIST (manager), + priv->event->contact, ""); + + empathy_event_remove (priv->event); + + g_object_unref (manager); +} + +static void +notification_accept_subscription_cb (NotifyNotification *notification, + gchar *action, + EmpathyStatusIcon *icon) +{ + EmpathyStatusIconPriv *priv = GET_PRIV (icon); + EmpathyContactManager *manager; + + if (priv->event == NULL) + return; + + + manager = empathy_contact_manager_dup_singleton (); + empathy_contact_list_add (EMPATHY_CONTACT_LIST (manager), + priv->event->contact, ""); + + empathy_event_remove (priv->event); + + g_object_unref (manager); +} + static void add_notification_actions (EmpathyStatusIcon *self, NotifyNotification *notification) @@ -163,6 +206,17 @@ add_notification_actions (EmpathyStatusIcon *self, self, NULL); break; + case EMPATHY_EVENT_TYPE_SUBSCRIPTION: + notify_notification_add_action (notification, + "decline", _("Decline"), + (NotifyActionCallback) notification_decline_subscription_cb, + self, NULL); + + notify_notification_add_action (notification, + "accept", _("Accept"), + (NotifyActionCallback) notification_accept_subscription_cb, + self, NULL); + default: break; } -- cgit v1.2.3