diff pidgin/gtkmedia.c @ 25687:ddbea813862e

Notify the user which type of media session the remote user wants to initiate.
author Mike Ruprecht <maiku@soc.pidgin.im>
date Thu, 12 Jun 2008 03:59:26 +0000
parents 3bf9748fdef0
children 9c6915254610
line wrap: on
line diff
--- a/pidgin/gtkmedia.c	Tue Jun 10 05:18:29 2008 +0000
+++ b/pidgin/gtkmedia.c	Thu Jun 12 03:59:26 2008 +0000
@@ -427,6 +427,29 @@
 }
 
 static void
+pidgin_media_got_request_cb(PurpleMedia *media, PidginMedia *gtkmedia)
+{
+	PurpleMediaStreamType type = purple_media_get_overall_type(media);
+	gchar *message;
+
+	if (type & PURPLE_MEDIA_AUDIO && type & PURPLE_MEDIA_VIDEO) {
+		message = g_strdup_printf(_("%s wishes to start an audio/video session with you."),
+					  purple_media_get_screenname(media));
+	} else if (type & PURPLE_MEDIA_AUDIO) {
+		message = g_strdup_printf(_("%s wishes to start an audio session with you."),
+					  purple_media_get_screenname(media));
+	} else if (type & PURPLE_MEDIA_VIDEO) {
+		message = g_strdup_printf(_("%s wishes to start a video session with you."),
+					  purple_media_get_screenname(media));
+	} else {
+		return;
+	}
+
+	pidgin_media_emit_message(gtkmedia, message);
+	g_free(message);
+}
+
+static void
 pidgin_media_got_hangup_cb(PurpleMedia *media, PidginMedia *gtkmedia)
 {
 	pidgin_media_emit_message(gtkmedia, _("The call has been terminated."));
@@ -470,6 +493,8 @@
 				G_CALLBACK(pidgin_media_hangup_cb), media);
 			g_signal_connect(G_OBJECT(media->priv->media), "reject",
 				G_CALLBACK(pidgin_media_reject_cb), media);
+			g_signal_connect(G_OBJECT(media->priv->media), "got-request",
+				G_CALLBACK(pidgin_media_got_request_cb), media);
 			g_signal_connect(G_OBJECT(media->priv->media), "got-hangup",
 				G_CALLBACK(pidgin_media_got_hangup_cb), media);
 			g_signal_connect(G_OBJECT(media->priv->media), "got-accept",