comparison 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
comparison
equal deleted inserted replaced
25687:ddbea813862e 25688:9c6915254610
164 media->priv = PIDGIN_MEDIA_GET_PRIVATE(media); 164 media->priv = PIDGIN_MEDIA_GET_PRIVATE(media);
165 media->priv->calling = gtk_label_new_with_mnemonic("Calling..."); 165 media->priv->calling = gtk_label_new_with_mnemonic("Calling...");
166 media->priv->hangup = gtk_button_new_with_label("Hangup"); 166 media->priv->hangup = gtk_button_new_with_label("Hangup");
167 media->priv->accept = gtk_button_new_with_label("Accept"); 167 media->priv->accept = gtk_button_new_with_label("Accept");
168 media->priv->reject = gtk_button_new_with_label("Reject"); 168 media->priv->reject = gtk_button_new_with_label("Reject");
169 media->priv->send_progress = gtk_progress_bar_new();
170 media->priv->recv_progress = gtk_progress_bar_new();
171
172 gtk_widget_set_size_request(media->priv->send_progress, 70, 5);
173 gtk_widget_set_size_request(media->priv->recv_progress, 70, 5);
174 169
175 gtk_box_pack_start(GTK_BOX(media), media->priv->calling, FALSE, FALSE, 0); 170 gtk_box_pack_start(GTK_BOX(media), media->priv->calling, FALSE, FALSE, 0);
176 gtk_box_pack_start(GTK_BOX(media), media->priv->hangup, FALSE, FALSE, 0); 171 gtk_box_pack_start(GTK_BOX(media), media->priv->hangup, FALSE, FALSE, 0);
177 gtk_box_pack_start(GTK_BOX(media), media->priv->accept, FALSE, FALSE, 0); 172 gtk_box_pack_start(GTK_BOX(media), media->priv->accept, FALSE, FALSE, 0);
178 gtk_box_pack_start(GTK_BOX(media), media->priv->reject, FALSE, FALSE, 0); 173 gtk_box_pack_start(GTK_BOX(media), media->priv->reject, FALSE, FALSE, 0);
179
180 gtk_box_pack_start(GTK_BOX(media), media->priv->send_progress, FALSE, FALSE, 6);
181 gtk_box_pack_start(GTK_BOX(media), media->priv->recv_progress, FALSE, FALSE, 6);
182
183 gtk_widget_show(media->priv->send_progress);
184 gtk_widget_show(media->priv->recv_progress);
185 174
186 gtk_widget_show_all(media->priv->accept); 175 gtk_widget_show_all(media->priv->accept);
187 gtk_widget_show_all(media->priv->reject); 176 gtk_widget_show_all(media->priv->reject);
188 177
189 media->priv->display = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE); 178 media->priv->display = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
328 317
329 static void 318 static void
330 pidgin_media_ready_cb(PurpleMedia *media, PidginMedia *gtkmedia) 319 pidgin_media_ready_cb(PurpleMedia *media, PidginMedia *gtkmedia)
331 { 320 {
332 GstElement *element = purple_media_get_pipeline(media); 321 GstElement *element = purple_media_get_pipeline(media);
322 GtkWidget *send_widget = NULL, *recv_widget = NULL;
333 323
334 GstElement *audiosendbin = NULL, *audiosendlevel = NULL; 324 GstElement *audiosendbin = NULL, *audiosendlevel = NULL;
335 GstElement *audiorecvbin = NULL, *audiorecvlevel = NULL; 325 GstElement *audiorecvbin = NULL, *audiorecvlevel = NULL;
336 GstElement *videosendbin = NULL; 326 GstElement *videosendbin = NULL;
337 GstElement *videorecvbin = NULL; 327 GstElement *videorecvbin = NULL;
362 g_object_set(gtkmedia, "send-level", audiosendlevel, 352 g_object_set(gtkmedia, "send-level", audiosendlevel,
363 "recv-level", audiorecvlevel, 353 "recv-level", audiorecvlevel,
364 NULL); 354 NULL);
365 } 355 }
366 356
357 send_widget = gtk_hbox_new(FALSE, 0);
358 recv_widget = gtk_hbox_new(FALSE, 0);
359
360 gtk_box_pack_start(GTK_BOX(gtkmedia->priv->display), send_widget, TRUE, TRUE, 0);
361 gtk_box_pack_start(GTK_BOX(gtkmedia->priv->display), recv_widget, TRUE, TRUE, 0);
362
363 gtk_widget_show(send_widget);
364 gtk_widget_show(recv_widget);
365
367 if (videorecvbin || videosendbin) { 366 if (videorecvbin || videosendbin) {
368 GtkWidget *aspect; 367 GtkWidget *aspect;
369 GtkWidget *remote_video; 368 GtkWidget *remote_video;
370 GtkWidget *local_video; 369 GtkWidget *local_video;
371 370
372 gtk_widget_show(gtkmedia->priv->display); 371 gtk_widget_show(gtkmedia->priv->display);
373 372
374 aspect = gtk_aspect_frame_new(NULL, 0.5, 0.5, 4.0/3.0, FALSE); 373 aspect = gtk_aspect_frame_new(NULL, 0.5, 0.5, 4.0/3.0, FALSE);
375 gtk_frame_set_shadow_type(GTK_FRAME(aspect), GTK_SHADOW_IN); 374 gtk_frame_set_shadow_type(GTK_FRAME(aspect), GTK_SHADOW_IN);
376 gtk_box_pack_start(GTK_BOX(gtkmedia->priv->display), aspect, TRUE, TRUE, 0); 375 gtk_box_pack_start(GTK_BOX(send_widget), aspect, TRUE, TRUE, 0);
377 376
378 remote_video = gtk_drawing_area_new(); 377 remote_video = gtk_drawing_area_new();
379 gtk_container_add(GTK_CONTAINER(aspect), remote_video); 378 gtk_container_add(GTK_CONTAINER(aspect), remote_video);
380 gtk_widget_set_size_request (GTK_WIDGET(remote_video), 100, -1); 379 gtk_widget_set_size_request (GTK_WIDGET(remote_video), 100, -1);
381 gtk_widget_show(remote_video); 380 gtk_widget_show(remote_video);
382 gtk_widget_show(aspect); 381 gtk_widget_show(aspect);
383 382
384 aspect = gtk_aspect_frame_new(NULL, 0.5, 0.5, 4.0/3.0, FALSE); 383 aspect = gtk_aspect_frame_new(NULL, 0.5, 0.5, 4.0/3.0, FALSE);
385 gtk_frame_set_shadow_type(GTK_FRAME(aspect), GTK_SHADOW_IN); 384 gtk_frame_set_shadow_type(GTK_FRAME(aspect), GTK_SHADOW_IN);
386 gtk_box_pack_start(GTK_BOX(gtkmedia->priv->display), aspect, TRUE, TRUE, 0); 385 gtk_box_pack_start(GTK_BOX(recv_widget), aspect, TRUE, TRUE, 0);
387 386
388 local_video = gtk_drawing_area_new(); 387 local_video = gtk_drawing_area_new();
389 gtk_container_add(GTK_CONTAINER(aspect), local_video); 388 gtk_container_add(GTK_CONTAINER(aspect), local_video);
390 gtk_widget_show(local_video); 389 gtk_widget_show(local_video);
391 gtk_widget_show(aspect); 390 gtk_widget_show(aspect);
392 391
393 gtkmedia->priv->local_video = local_video; 392 gtkmedia->priv->local_video = local_video;
394 gtkmedia->priv->remote_video = remote_video; 393 gtkmedia->priv->remote_video = remote_video;
394 }
395
396 if (audiorecvbin || audiosendbin) {
397 gtk_widget_show(gtkmedia->priv->display);
398
399 gtkmedia->priv->send_progress = gtk_progress_bar_new();
400 gtkmedia->priv->recv_progress = gtk_progress_bar_new();
401
402 gtk_widget_set_size_request(gtkmedia->priv->send_progress, 5, 70);
403 gtk_widget_set_size_request(gtkmedia->priv->recv_progress, 5, 70);
404
405 gtk_progress_bar_set_orientation(GTK_PROGRESS_BAR(gtkmedia->priv->send_progress),
406 GTK_PROGRESS_BOTTOM_TO_TOP);
407 gtk_progress_bar_set_orientation(GTK_PROGRESS_BAR(gtkmedia->priv->recv_progress),
408 GTK_PROGRESS_BOTTOM_TO_TOP);
409
410 gtk_box_pack_start(GTK_BOX(send_widget),
411 gtkmedia->priv->send_progress, FALSE, FALSE, 0);
412 gtk_box_pack_start(GTK_BOX(recv_widget),
413 gtkmedia->priv->recv_progress, FALSE, FALSE, 0);
414
415 gtk_widget_show(gtkmedia->priv->send_progress);
416 gtk_widget_show(gtkmedia->priv->recv_progress);
395 } 417 }
396 418
397 bus = gst_pipeline_get_bus(GST_PIPELINE(element)); 419 bus = gst_pipeline_get_bus(GST_PIPELINE(element));
398 gst_bus_add_signal_watch(GST_BUS(bus)); 420 gst_bus_add_signal_watch(GST_BUS(bus));
399 g_signal_connect(G_OBJECT(gst_pipeline_get_bus(GST_PIPELINE(element))), 421 g_signal_connect(G_OBJECT(gst_pipeline_get_bus(GST_PIPELINE(element))),