[empathy: 68/99] Also add Answer with video to the notification dialogs



commit c849a5a953b0ffa1df1dc1383018dbc48254a2fa
Author: Sjoerd Simons <sjoerd simons collabora co uk>
Date:   Tue Mar 22 16:41:51 2011 +0000

    Also add Answer with video to the notification dialogs
    
    Conflicts:
    
    	src/empathy-status-icon.c

 src/empathy-event-manager.c          |    1 +
 src/empathy-event-manager.h          |    1 +
 src/empathy-notifications-approver.c |   35 +++++++++++++++++++++++++++++++++-
 3 files changed, 36 insertions(+), 1 deletions(-)
---
diff --git a/src/empathy-event-manager.c b/src/empathy-event-manager.c
index 5c17d7e..c413be0 100644
--- a/src/empathy-event-manager.c
+++ b/src/empathy-event-manager.c
@@ -237,6 +237,7 @@ event_manager_add (EmpathyEventManager *manager,
   event->public.header = g_strdup (header);
   event->public.message = g_strdup (message);
   event->public.must_ack = (func != NULL);
+  event->public.handler_instance = approval->handler_instance;
   event->inhibit = FALSE;
   event->func = func;
   event->user_data = user_data;
diff --git a/src/empathy-event-manager.h b/src/empathy-event-manager.h
index fd47423..91c6e1f 100644
--- a/src/empathy-event-manager.h
+++ b/src/empathy-event-manager.h
@@ -68,6 +68,7 @@ typedef struct {
     gchar *header;
     gchar *message;
     gboolean must_ack;
+    GObject *handler_instance;
 } EmpathyEvent;
 
 GType                empathy_event_manager_get_type      (void) G_GNUC_CONST;
diff --git a/src/empathy-notifications-approver.c b/src/empathy-notifications-approver.c
index 8939ecb..b4d7a1b 100644
--- a/src/empathy-notifications-approver.c
+++ b/src/empathy-notifications-approver.c
@@ -25,7 +25,10 @@
 #include <libnotify/notify.h>
 #include <telepathy-glib/telepathy-glib.h>
 
+#include <telepathy-yell/telepathy-yell.h>
+
 #include <libempathy/empathy-contact-manager.h>
+#include <libempathy/empathy-tp-streamed-media.h>
 
 #include <libempathy-gtk/empathy-notify-manager.h>
 
@@ -119,6 +122,20 @@ notification_close_helper (EmpathyNotificationsApprover *self)
 }
 
 static void
+notification_approve_no_video_cb (NotifyNotification *notification,
+    gchar *action,
+    EmpathyNotificationsApprover *self)
+{
+  if (self->priv->event)
+    {
+      tpy_call_channel_send_video (
+          TPY_CALL_CHANNEL (self->priv->event->handler_instance),
+          FALSE);
+      empathy_event_approve (self->priv->event);
+    }
+}
+
+static void
 notification_approve_cb (NotifyNotification *notification,
     gchar *action,
     EmpathyNotificationsApprover *self)
@@ -178,6 +195,8 @@ static void
 add_notification_actions (EmpathyNotificationsApprover *self,
     NotifyNotification *notification)
 {
+  gboolean video;
+
   switch (self->priv->event->type) {
     case EMPATHY_EVENT_TYPE_CHAT:
       notify_notification_add_action (notification,
@@ -187,12 +206,26 @@ add_notification_actions (EmpathyNotificationsApprover *self,
 
     case EMPATHY_EVENT_TYPE_VOIP:
     case EMPATHY_EVENT_TYPE_CALL:
+      if (self->priv->event->type == EMPATHY_EVENT_TYPE_VOIP)
+        video = empathy_tp_streamed_media_has_initial_video (
+            EMPATHY_TP_STREAMED_MEDIA (self->priv->event->handler_instance));
+      else
+        video = tpy_call_channel_has_initial_video (
+            TPY_CALL_CHANNEL (self->priv->event->handler_instance));
+
       notify_notification_add_action (notification,
         "reject", _("Reject"), (NotifyActionCallback) notification_decline_cb,
           self, NULL);
 
+      if (video && self->priv->event->type == EMPATHY_EVENT_TYPE_CALL)
+          notify_notification_add_action (notification,
+          "answer", _("Answer"),
+          (NotifyActionCallback) notification_approve_no_video_cb,
+          self, NULL);
+
       notify_notification_add_action (notification,
-        "answer", _("Answer"), (NotifyActionCallback) notification_approve_cb,
+          "answer", video ? _("Answer with video") : _("Answer"),
+          (NotifyActionCallback) notification_approve_cb,
           self, NULL);
       break;
 



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