comparison pidgin/gtkmedia.c @ 23784:741a702033e0

Show a message when the remote end terminates a session.
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Sat, 15 Mar 2008 07:37:03 +0000
parents 1ec6a26cfefc
children 92e71f6e10d4
comparison
equal deleted inserted replaced
23783:c96b34b58b85 23784:741a702033e0
72 PROP_SEND_LEVEL, 72 PROP_SEND_LEVEL,
73 PROP_RECV_LEVEL 73 PROP_RECV_LEVEL
74 }; 74 };
75 75
76 GType 76 GType
77 pidgin_media_get_type() 77 pidgin_media_get_type(void)
78 { 78 {
79 static GType type = 0; 79 static GType type = 0;
80 80
81 if (type == 0) { 81 if (type == 0) {
82 static const GTypeInfo info = { 82 static const GTypeInfo info = {
170 static void 170 static void
171 pidgin_media_emit_message(PidginMedia *gtkmedia, const char *msg) 171 pidgin_media_emit_message(PidginMedia *gtkmedia, const char *msg)
172 { 172 {
173 g_signal_emit(gtkmedia, pidgin_media_signals[MESSAGE], 0, msg); 173 g_signal_emit(gtkmedia, pidgin_media_signals[MESSAGE], 0, msg);
174 } 174 }
175 175
176 static gboolean 176 static gboolean
177 level_message_cb(GstBus *bus, GstMessage *message, PidginMedia *gtkmedia) 177 level_message_cb(GstBus *bus, GstMessage *message, PidginMedia *gtkmedia)
178 { 178 {
179 const GstStructure *s; 179 const GstStructure *s;
180 const gchar *name; 180 const gchar *name;
182 int channels; 182 int channels;
183 gdouble rms_db, peak_db, decay_db; 183 gdouble rms_db, peak_db, decay_db;
184 gdouble rms; 184 gdouble rms;
185 const GValue *list; 185 const GValue *list;
186 const GValue *value; 186 const GValue *value;
187 187
188 GstElement *src = GST_MESSAGE_SRC(message); 188 GstElement *src = GST_ELEMENT(message);
189 189
190 if (message->type != GST_MESSAGE_ELEMENT) 190 if (message->type != GST_MESSAGE_ELEMENT)
191 return TRUE; 191 return TRUE;
192 192
193 s = gst_message_get_structure(message); 193 s = gst_message_get_structure(message);
234 pidgin_media_emit_message(gtkmedia, _("You have ended the call.")); 234 pidgin_media_emit_message(gtkmedia, _("You have ended the call."));
235 gtk_widget_destroy(GTK_WIDGET(gtkmedia)); 235 gtk_widget_destroy(GTK_WIDGET(gtkmedia));
236 } 236 }
237 237
238 static void 238 static void
239 pidgin_media_got_hangup_cb(PurpleMedia *media, PidginMedia *gtkmedia)
240 {
241 pidgin_media_emit_message(gtkmedia, _("The call has been terminated."));
242 gtk_widget_destroy(GTK_WIDGET(gtkmedia));
243 }
244
245 static void
239 pidgin_media_reject_cb(PurpleMedia *media, PidginMedia *gtkmedia) 246 pidgin_media_reject_cb(PurpleMedia *media, PidginMedia *gtkmedia)
240 { 247 {
241 pidgin_media_emit_message(gtkmedia, _("You have rejected the call.")); 248 pidgin_media_emit_message(gtkmedia, _("You have rejected the call."));
242 gtk_widget_destroy(GTK_WIDGET(gtkmedia)); 249 gtk_widget_destroy(GTK_WIDGET(gtkmedia));
243 } 250 }
245 static void 252 static void
246 pidgin_media_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) 253 pidgin_media_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
247 { 254 {
248 PidginMedia *media; 255 PidginMedia *media;
249 g_return_if_fail(PIDGIN_IS_MEDIA(object)); 256 g_return_if_fail(PIDGIN_IS_MEDIA(object));
250 257
251 media = PIDGIN_MEDIA(object); 258 media = PIDGIN_MEDIA(object);
252 switch (prop_id) { 259 switch (prop_id) {
253 case PROP_MEDIA: 260 case PROP_MEDIA:
254 if (media->priv->media) 261 if (media->priv->media)
255 g_object_unref(media->priv->media); 262 g_object_unref(media->priv->media);
268 G_CALLBACK(pidgin_media_ready_cb), media); 275 G_CALLBACK(pidgin_media_ready_cb), media);
269 g_signal_connect(G_OBJECT(media->priv->media), "hangup", 276 g_signal_connect(G_OBJECT(media->priv->media), "hangup",
270 G_CALLBACK(pidgin_media_hangup_cb), media); 277 G_CALLBACK(pidgin_media_hangup_cb), media);
271 g_signal_connect(G_OBJECT(media->priv->media), "reject", 278 g_signal_connect(G_OBJECT(media->priv->media), "reject",
272 G_CALLBACK(pidgin_media_reject_cb), media); 279 G_CALLBACK(pidgin_media_reject_cb), media);
280 g_signal_connect(G_OBJECT(media->priv->media), "got-hangup",
281 G_CALLBACK(pidgin_media_got_hangup_cb), media);
273 break; 282 break;
274 case PROP_SEND_LEVEL: 283 case PROP_SEND_LEVEL:
275 if (media->priv->send_level) 284 if (media->priv->send_level)
276 gst_object_unref(media->priv->send_level); 285 gst_object_unref(media->priv->send_level);
277 media->priv->send_level = g_value_get_object(value); 286 media->priv->send_level = g_value_get_object(value);