aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libempathy-gtk/empathy-contact-menu.c4
-rw-r--r--libempathy/empathy-contact.c24
-rw-r--r--libempathy/empathy-contact.h2
-rw-r--r--src/empathy-call-window.c12
4 files changed, 35 insertions, 7 deletions
diff --git a/libempathy-gtk/empathy-contact-menu.c b/libempathy-gtk/empathy-contact-menu.c
index 2bad5c9fe..0f98bbdce 100644
--- a/libempathy-gtk/empathy-contact-menu.c
+++ b/libempathy-gtk/empathy-contact-menu.c
@@ -167,7 +167,7 @@ empathy_contact_audio_call_menu_item_new (EmpathyContact *contact)
image = gtk_image_new_from_icon_name (EMPATHY_IMAGE_VOIP,
GTK_ICON_SIZE_MENU);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
- gtk_widget_set_sensitive (item, empathy_contact_can_voip (contact));
+ gtk_widget_set_sensitive (item, empathy_contact_can_voip_audio (contact));
gtk_widget_show (image);
g_signal_connect (item, "activate",
@@ -199,7 +199,7 @@ empathy_contact_video_call_menu_item_new (EmpathyContact *contact)
image = gtk_image_new_from_icon_name (EMPATHY_IMAGE_VIDEO_CALL,
GTK_ICON_SIZE_MENU);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
- gtk_widget_set_sensitive (item, empathy_contact_can_voip (contact));
+ gtk_widget_set_sensitive (item, empathy_contact_can_voip_video (contact));
gtk_widget_show (image);
g_signal_connect (item, "activate",
diff --git a/libempathy/empathy-contact.c b/libempathy/empathy-contact.c
index d351aecbc..c82ecd467 100644
--- a/libempathy/empathy-contact.c
+++ b/libempathy/empathy-contact.c
@@ -802,6 +802,30 @@ empathy_contact_can_voip (EmpathyContact *contact)
}
gboolean
+empathy_contact_can_voip_audio (EmpathyContact *contact)
+{
+ EmpathyContactPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), FALSE);
+
+ priv = GET_PRIV (contact);
+
+ return priv->capabilities & EMPATHY_CAPABILITIES_AUDIO;
+}
+
+gboolean
+empathy_contact_can_voip_video (EmpathyContact *contact)
+{
+ EmpathyContactPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), FALSE);
+
+ priv = GET_PRIV (contact);
+
+ return priv->capabilities & EMPATHY_CAPABILITIES_VIDEO;
+}
+
+gboolean
empathy_contact_can_send_files (EmpathyContact *contact)
{
EmpathyContactPriv *priv;
diff --git a/libempathy/empathy-contact.h b/libempathy/empathy-contact.h
index d4e385924..4e9c98756 100644
--- a/libempathy/empathy-contact.h
+++ b/libempathy/empathy-contact.h
@@ -99,6 +99,8 @@ void empathy_contact_set_is_user (EmpathyContact *contact,
gboolean empathy_contact_is_online (EmpathyContact *contact);
const gchar * empathy_contact_get_status (EmpathyContact *contact);
gboolean empathy_contact_can_voip (EmpathyContact *contact);
+gboolean empathy_contact_can_voip_audio (EmpathyContact *contact);
+gboolean empathy_contact_can_voip_video (EmpathyContact *contact);
gboolean empathy_contact_can_send_files (EmpathyContact *contact);
gboolean empathy_contact_can_use_stream_tube (EmpathyContact *contact);
guint empathy_contact_hash (gconstpointer key);
diff --git a/src/empathy-call-window.c b/src/empathy-call-window.c
index a71e9c8be..520a92821 100644
--- a/src/empathy-call-window.c
+++ b/src/empathy-call-window.c
@@ -809,7 +809,6 @@ static void
init_contact_avatar_with_size (EmpathyContact *contact, GtkWidget *image_widget,
gint size)
{
-
GdkPixbuf *pixbuf_avatar = NULL;
if (contact != NULL)
@@ -1347,6 +1346,8 @@ empathy_call_window_connected (gpointer user_data)
EmpathyCallWindow *self = EMPATHY_CALL_WINDOW (user_data);
EmpathyCallWindowPriv *priv = GET_PRIV (self);
EmpathyTpCall *call;
+ gboolean can_send_video = priv->video_input != NULL && priv->contact != NULL
+ && empathy_contact_can_voip_video (priv->contact);
g_object_get (priv->handler, "tp-call", &call, NULL);
@@ -1357,9 +1358,10 @@ empathy_call_window_connected (gpointer user_data)
gtk_widget_set_sensitive (priv->dtmf_panel, TRUE);
if (priv->video_input == NULL)
- empathy_call_window_set_send_video (self, FALSE);
+ empathy_call_window_set_send_video (self, FALSE);
- priv->sending_video = empathy_tp_call_is_sending_video (call);
+ priv->sending_video = can_send_video ?
+ empathy_tp_call_is_sending_video (call) : FALSE;
gtk_action_set_sensitive (priv->show_preview, TRUE);
gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (priv->show_preview),
@@ -1370,8 +1372,8 @@ empathy_call_window_connected (gpointer user_data)
gtk_toggle_tool_button_set_active (
GTK_TOGGLE_TOOL_BUTTON (priv->camera_button),
priv->sending_video && priv->video_input != NULL);
- gtk_widget_set_sensitive (priv->camera_button, priv->video_input != NULL);
- gtk_action_set_sensitive (priv->send_video, priv->video_input != NULL);
+ gtk_widget_set_sensitive (priv->camera_button, can_send_video);
+ gtk_action_set_sensitive (priv->send_video, can_send_video);
gtk_action_set_sensitive (priv->redial, FALSE);
gtk_widget_set_sensitive (priv->redial_button, FALSE);