diff options
author | Jonathan Tellier <jonathan.tellier@gmail.com> | 2009-07-03 00:08:43 +0800 |
---|---|---|
committer | jtellier <jonathan.tellier@collabora.co.uk> | 2009-07-03 00:08:43 +0800 |
commit | 9fe194288e580fcbd79fcae90050ccb8b6380a63 (patch) | |
tree | e852b5515218042a5ac459e68090f3946a618c8e | |
parent | 5dae9d1185b972651a7c7e8d4431f8dcdd2e0cd3 (diff) | |
download | gsoc2013-empathy-9fe194288e580fcbd79fcae90050ccb8b6380a63.tar gsoc2013-empathy-9fe194288e580fcbd79fcae90050ccb8b6380a63.tar.gz gsoc2013-empathy-9fe194288e580fcbd79fcae90050ccb8b6380a63.tar.bz2 gsoc2013-empathy-9fe194288e580fcbd79fcae90050ccb8b6380a63.tar.lz gsoc2013-empathy-9fe194288e580fcbd79fcae90050ccb8b6380a63.tar.xz gsoc2013-empathy-9fe194288e580fcbd79fcae90050ccb8b6380a63.tar.zst gsoc2013-empathy-9fe194288e580fcbd79fcae90050ccb8b6380a63.zip |
Added functions to determine if a contact has video capabilities
Activating the "Video Call" button only if the remote contact support
video.
The call window's "Send Video" is only sensitive if the contact has
video capabilities.
-rw-r--r-- | libempathy-gtk/empathy-contact-menu.c | 4 | ||||
-rw-r--r-- | libempathy/empathy-contact.c | 24 | ||||
-rw-r--r-- | libempathy/empathy-contact.h | 2 | ||||
-rw-r--r-- | src/empathy-call-window.c | 12 |
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); |