[empathy] Add Accept/Decline button in subscription notifications (#630706)



commit 877ea6bc7673b4a3a31be2528a3f6e4bcad4262e
Author: Guillaume Desmottes <guillaume desmottes collabora co uk>
Date:   Thu Oct 28 15:08:18 2010 +0200

    Add Accept/Decline button in subscription notifications (#630706)

 src/empathy-status-icon.c |   54 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 54 insertions(+), 0 deletions(-)
---
diff --git a/src/empathy-status-icon.c b/src/empathy-status-icon.c
index e61e0cf..6bfb2f3 100644
--- a/src/empathy-status-icon.c
+++ b/src/empathy-status-icon.c
@@ -35,6 +35,7 @@
 #include <telepathy-glib/account-manager.h>
 #include <telepathy-glib/util.h>
 
+#include <libempathy/empathy-contact-manager.h>
 #include <libempathy/empathy-gsettings.h>
 #include <libempathy/empathy-utils.h>
 
@@ -130,6 +131,48 @@ notification_decline_cb (NotifyNotification *notification,
 }
 
 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;
 	}



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]