aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXavier Claessens <xclaesse@src.gnome.org>2008-06-13 19:13:49 +0800
committerXavier Claessens <xclaesse@src.gnome.org>2008-06-13 19:13:49 +0800
commit8de05ae8857fcee08bb2d7e7cbaccb9ae1585d3e (patch)
tree0571ae1721cb5b7dffe3d5f6e559aadee681fbfb
parent0622581d232de8d2eb6da3fdf6ff209b38e52ddf (diff)
downloadgsoc2013-empathy-8de05ae8857fcee08bb2d7e7cbaccb9ae1585d3e.tar
gsoc2013-empathy-8de05ae8857fcee08bb2d7e7cbaccb9ae1585d3e.tar.gz
gsoc2013-empathy-8de05ae8857fcee08bb2d7e7cbaccb9ae1585d3e.tar.bz2
gsoc2013-empathy-8de05ae8857fcee08bb2d7e7cbaccb9ae1585d3e.tar.lz
gsoc2013-empathy-8de05ae8857fcee08bb2d7e7cbaccb9ae1585d3e.tar.xz
gsoc2013-empathy-8de05ae8857fcee08bb2d7e7cbaccb9ae1585d3e.tar.zst
gsoc2013-empathy-8de05ae8857fcee08bb2d7e7cbaccb9ae1585d3e.zip
Do not show the keypad when the media channel does not have the DTMF interface (Alban Crequy)
svn path=/trunk/; revision=1162
-rw-r--r--libempathy/empathy-tp-call.c10
-rw-r--r--src/empathy-call-window.c11
2 files changed, 21 insertions, 0 deletions
diff --git a/libempathy/empathy-tp-call.c b/libempathy/empathy-tp-call.c
index 4dab14a1e..1f3371eea 100644
--- a/libempathy/empathy-tp-call.c
+++ b/libempathy/empathy-tp-call.c
@@ -25,6 +25,7 @@
#include <telepathy-glib/proxy-subclass.h>
#include <telepathy-glib/dbus.h>
+#include <telepathy-glib/_gen/telepathy-interfaces.h>
#include <extensions/extensions.h>
@@ -61,6 +62,7 @@ enum
PROP_CHANNEL,
PROP_CONTACT,
PROP_IS_INCOMING,
+ PROP_HAS_DTMF,
PROP_STATUS,
PROP_AUDIO_STREAM,
PROP_VIDEO_STREAM
@@ -571,6 +573,10 @@ tp_call_get_property (GObject *object,
case PROP_IS_INCOMING:
g_value_set_boolean (value, priv->is_incoming);
break;
+ case PROP_HAS_DTMF:
+ g_value_set_boolean (value, tp_proxy_has_interface_by_id (priv->channel,
+ TP_IFACE_QUARK_CHANNEL_INTERFACE_DTMF));
+ break;
case PROP_STATUS:
g_value_set_uint (value, priv->status);
break;
@@ -613,6 +619,10 @@ empathy_tp_call_class_init (EmpathyTpCallClass *klass)
g_param_spec_boolean ("is-incoming", "Is media stream incoming",
"Is media stream incoming", FALSE, G_PARAM_READABLE |
G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
+ g_object_class_install_property (object_class, PROP_HAS_DTMF,
+ g_param_spec_boolean ("has-dtmf", "Has the media channel DTMF",
+ "Has the media channel DTMF", FALSE, G_PARAM_READABLE |
+ G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
g_object_class_install_property (object_class, PROP_STATUS,
g_param_spec_uint ("status", "Call status",
"Call status", 0, 255, 0, G_PARAM_READABLE | G_PARAM_STATIC_NICK |
diff --git a/src/empathy-call-window.c b/src/empathy-call-window.c
index 67a3d87a8..8a33e4639 100644
--- a/src/empathy-call-window.c
+++ b/src/empathy-call-window.c
@@ -340,6 +340,7 @@ call_window_update (EmpathyCallWindow *window)
EmpathyTpCallStream *audio_stream;
EmpathyTpCallStream *video_stream;
gboolean is_incoming;
+ gboolean has_dtmf;
gchar *title;
g_object_get (window->call,
@@ -348,6 +349,7 @@ call_window_update (EmpathyCallWindow *window)
"video-stream", &video_stream,
"contact", &contact,
"is-incoming", &is_incoming,
+ "has-dtmf", &has_dtmf,
NULL);
if (video_stream->state > audio_stream->state)
@@ -359,6 +361,15 @@ call_window_update (EmpathyCallWindow *window)
"is-incoming: %d video-stream direction: %d",
window->status, stream_state, is_incoming, video_stream->direction);
+ if (has_dtmf)
+ {
+ gtk_widget_show (window->keypad_expander);
+ }
+ else
+ {
+ gtk_widget_hide (window->keypad_expander);
+ }
+
/* Depending on the status we have to set:
* - window's title
* - status's label