diff pidgin/gtkmedia.c @ 24984:0829a08038c6

Remove the screenname attribute from PurpleMedia.
author Mike Ruprecht <maiku@soc.pidgin.im>
date Tue, 16 Dec 2008 02:06:55 +0000
parents 0ad1b8e950d7
children 83704757fa36
line wrap: on
line diff
--- a/pidgin/gtkmedia.c	Tue Dec 16 01:27:51 2008 +0000
+++ b/pidgin/gtkmedia.c	Tue Dec 16 02:06:55 2008 +0000
@@ -51,6 +51,7 @@
 struct _PidginMediaPrivate
 {
 	PurpleMedia *media;
+	gchar *screenname;
 	GstElement *send_level;
 	GstElement *recv_level;
 
@@ -93,6 +94,7 @@
 enum {
 	PROP_0,
 	PROP_MEDIA,
+	PROP_SCREENNAME,
 	PROP_SEND_LEVEL,
 	PROP_RECV_LEVEL
 };
@@ -138,6 +140,12 @@
 			"The PurpleMedia associated with this media.",
 			PURPLE_TYPE_MEDIA,
 			G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
+	g_object_class_install_property(gobject_class, PROP_SCREENNAME,
+			g_param_spec_string("screenname",
+			"Screenname",
+			"The screenname of the user this session is with.",
+			NULL,
+			G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
 	g_object_class_install_property(gobject_class, PROP_SEND_LEVEL,
 			g_param_spec_object("send-level",
 			"Send level",
@@ -473,23 +481,20 @@
 {
 	PurpleMediaSessionType type = purple_media_get_overall_type(media);
 	gchar *message;
-	gchar *name = purple_media_get_screenname(media);
 
 	if (type & PURPLE_MEDIA_AUDIO && type & PURPLE_MEDIA_VIDEO) {
 		message = g_strdup_printf(_("%s wishes to start an audio/video session with you."),
-					  name);
+					  gtkmedia->priv->screenname);
 	} else if (type & PURPLE_MEDIA_AUDIO) {
 		message = g_strdup_printf(_("%s wishes to start an audio session with you."),
-					  name);
+					  gtkmedia->priv->screenname);
 	} else if (type & PURPLE_MEDIA_VIDEO) {
 		message = g_strdup_printf(_("%s wishes to start a video session with you."),
-					  name);
+					  gtkmedia->priv->screenname);
 	} else {
-		g_free(name);
 		return;
 	}
 
-	g_free(name);
 	pidgin_media_emit_message(gtkmedia, message);
 	g_free(message);
 }
@@ -547,6 +552,11 @@
 			g_signal_connect(G_OBJECT(media->priv->media), "got-accept",
 				G_CALLBACK(pidgin_media_accept_cb), media);
 			break;
+		case PROP_SCREENNAME:
+			if (media->priv->screenname)
+				g_free(media->priv->screenname);
+			media->priv->screenname = g_value_dup_string(value);
+			break;
 		case PROP_SEND_LEVEL:
 			if (media->priv->send_level)
 				gst_object_unref(media->priv->send_level);
@@ -577,6 +587,9 @@
 		case PROP_MEDIA:
 			g_value_set_object(value, media->priv->media);
 			break;
+		case PROP_SCREENNAME:
+			g_value_set_string(value, media->priv->screenname);
+			break;
 		case PROP_SEND_LEVEL:
 			g_value_set_object(value, media->priv->send_level);
 			break;
@@ -590,10 +603,11 @@
 }
 
 GtkWidget *
-pidgin_media_new(PurpleMedia *media)
+pidgin_media_new(PurpleMedia *media, const gchar *screenname)
 {
 	PidginMedia *gtkmedia = g_object_new(pidgin_media_get_type(),
-					     "media", media, NULL);
+					     "media", media,
+					     "screenname", screenname, NULL);
 	return GTK_WIDGET(gtkmedia);
 }