diff pidgin/gtkmedia.c @ 25688:9c6915254610

Move the audio progress bar widgets to be beside the video displays.
author Mike Ruprecht <maiku@soc.pidgin.im>
date Thu, 19 Jun 2008 17:38:04 +0000
parents ddbea813862e
children c17d26b6f236
line wrap: on
line diff
--- a/pidgin/gtkmedia.c	Thu Jun 12 03:59:26 2008 +0000
+++ b/pidgin/gtkmedia.c	Thu Jun 19 17:38:04 2008 +0000
@@ -166,23 +166,12 @@
 	media->priv->hangup = gtk_button_new_with_label("Hangup");
 	media->priv->accept = gtk_button_new_with_label("Accept");
 	media->priv->reject = gtk_button_new_with_label("Reject");
-	media->priv->send_progress = gtk_progress_bar_new();
-	media->priv->recv_progress = gtk_progress_bar_new();
-
-	gtk_widget_set_size_request(media->priv->send_progress, 70, 5);
-	gtk_widget_set_size_request(media->priv->recv_progress, 70, 5);
 
 	gtk_box_pack_start(GTK_BOX(media), media->priv->calling, FALSE, FALSE, 0);
 	gtk_box_pack_start(GTK_BOX(media), media->priv->hangup, FALSE, FALSE, 0);
 	gtk_box_pack_start(GTK_BOX(media), media->priv->accept, FALSE, FALSE, 0);
 	gtk_box_pack_start(GTK_BOX(media), media->priv->reject, FALSE, FALSE, 0);
 
-	gtk_box_pack_start(GTK_BOX(media), media->priv->send_progress, FALSE, FALSE, 6);
-	gtk_box_pack_start(GTK_BOX(media), media->priv->recv_progress, FALSE, FALSE, 6);
-
-	gtk_widget_show(media->priv->send_progress);
-	gtk_widget_show(media->priv->recv_progress);
-
 	gtk_widget_show_all(media->priv->accept);
 	gtk_widget_show_all(media->priv->reject);
 
@@ -330,6 +319,7 @@
 pidgin_media_ready_cb(PurpleMedia *media, PidginMedia *gtkmedia)
 {
 	GstElement *element = purple_media_get_pipeline(media);
+	GtkWidget *send_widget = NULL, *recv_widget = NULL;
 
 	GstElement *audiosendbin = NULL, *audiosendlevel = NULL;
 	GstElement *audiorecvbin = NULL, *audiorecvlevel = NULL;
@@ -364,6 +354,15 @@
 				       NULL);
 	}
 
+	send_widget = gtk_hbox_new(FALSE, 0);
+	recv_widget = gtk_hbox_new(FALSE, 0);
+
+	gtk_box_pack_start(GTK_BOX(gtkmedia->priv->display), send_widget, TRUE, TRUE, 0);
+	gtk_box_pack_start(GTK_BOX(gtkmedia->priv->display), recv_widget, TRUE, TRUE, 0);
+
+	gtk_widget_show(send_widget);
+	gtk_widget_show(recv_widget);
+
 	if (videorecvbin || videosendbin) {
 		GtkWidget *aspect;
 		GtkWidget *remote_video;
@@ -373,7 +372,7 @@
 
 		aspect = gtk_aspect_frame_new(NULL, 0.5, 0.5, 4.0/3.0, FALSE);
 		gtk_frame_set_shadow_type(GTK_FRAME(aspect), GTK_SHADOW_IN);
-		gtk_box_pack_start(GTK_BOX(gtkmedia->priv->display), aspect, TRUE, TRUE, 0);
+		gtk_box_pack_start(GTK_BOX(send_widget), aspect, TRUE, TRUE, 0);
 
 		remote_video = gtk_drawing_area_new();
 		gtk_container_add(GTK_CONTAINER(aspect), remote_video);
@@ -383,7 +382,7 @@
 
 		aspect = gtk_aspect_frame_new(NULL, 0.5, 0.5, 4.0/3.0, FALSE);
 		gtk_frame_set_shadow_type(GTK_FRAME(aspect), GTK_SHADOW_IN);
-		gtk_box_pack_start(GTK_BOX(gtkmedia->priv->display), aspect, TRUE, TRUE, 0);
+		gtk_box_pack_start(GTK_BOX(recv_widget), aspect, TRUE, TRUE, 0);
 
 		local_video = gtk_drawing_area_new();
 		gtk_container_add(GTK_CONTAINER(aspect), local_video);
@@ -394,6 +393,29 @@
 		gtkmedia->priv->remote_video = remote_video;
 	}
 
+	if (audiorecvbin || audiosendbin) {
+		gtk_widget_show(gtkmedia->priv->display);
+
+		gtkmedia->priv->send_progress = gtk_progress_bar_new();
+		gtkmedia->priv->recv_progress = gtk_progress_bar_new();
+
+		gtk_widget_set_size_request(gtkmedia->priv->send_progress, 5, 70);
+		gtk_widget_set_size_request(gtkmedia->priv->recv_progress, 5, 70);
+
+		gtk_progress_bar_set_orientation(GTK_PROGRESS_BAR(gtkmedia->priv->send_progress),
+						 GTK_PROGRESS_BOTTOM_TO_TOP);
+		gtk_progress_bar_set_orientation(GTK_PROGRESS_BAR(gtkmedia->priv->recv_progress),
+						 GTK_PROGRESS_BOTTOM_TO_TOP);
+
+		gtk_box_pack_start(GTK_BOX(send_widget),
+				   gtkmedia->priv->send_progress, FALSE, FALSE, 0);
+		gtk_box_pack_start(GTK_BOX(recv_widget),
+				   gtkmedia->priv->recv_progress, FALSE, FALSE, 0);
+
+		gtk_widget_show(gtkmedia->priv->send_progress);
+		gtk_widget_show(gtkmedia->priv->recv_progress);
+	}
+
 	bus = gst_pipeline_get_bus(GST_PIPELINE(element));
 	gst_bus_add_signal_watch(GST_BUS(bus));
 	g_signal_connect(G_OBJECT(gst_pipeline_get_bus(GST_PIPELINE(element))),