-empathy_call_window_show (EmpathyTpCall *call)
-{
- EmpathyCallWindow *window;
- GladeXML *glade;
-
- window = g_slice_new0 (EmpathyCallWindow);
-
- glade = empathy_glade_get_file ("empathy-call-window.glade",
- "window",
- NULL,
- "window", &window->window,
- "input_volume_scale", &window->input_volume_scale,
- "output_volume_scale", &window->output_volume_scale,
- "input_mute_togglebutton", &window->input_mute_togglebutton,
- "output_mute_togglebutton", &window->output_mute_togglebutton,
- "preview_video_frame", &window->preview_video_frame,
- "output_video_frame", &window->output_video_frame,
- "send_video_checkbutton", &window->send_video_checkbutton,
- NULL);
-
- empathy_glade_connect (glade,
- window,
- "window", "destroy", call_window_destroy_cb,
- "input_mute_togglebutton", "toggled", call_window_input_mute_toggled_cb,
- "output_mute_togglebutton", "toggled", call_window_output_mute_toggled_cb,
- "output_volume_scale", "value-changed", call_window_output_volume_changed_cb,
- "send_video_checkbutton", "toggled", call_window_send_video_toggled_cb,
- NULL);
- g_object_unref (glade);
-
- /* Set output window socket */
- window->output_video_socket = gtk_socket_new ();
- gtk_widget_show (window->output_video_socket);
- gtk_container_add (GTK_CONTAINER (window->output_video_frame),
- window->output_video_socket);
-
- /* Set preview window socket */
- window->preview_video_socket = gtk_socket_new ();
- gtk_widget_show (window->preview_video_socket);
- gtk_container_add (GTK_CONTAINER (window->preview_video_frame),
- window->preview_video_socket);
-
- /* Setup TpCall */
- window->call = g_object_ref (call);
- empathy_tp_call_add_preview_window (window->call,
- gtk_socket_get_id (GTK_SOCKET (window->preview_video_socket)));
- g_signal_connect (window->call, "notify::status",
- G_CALLBACK (call_window_status_notify_cb),
- window);
-
- gtk_widget_show (window->window);
-
- return window->window;
+empathy_call_window_new (EmpathyTpCall *call)
+{
+ EmpathyCallWindow *window;
+ GladeXML *glade;
+ guint status;
+
+ g_return_val_if_fail (EMPATHY_IS_TP_CALL (call), NULL);
+
+ window = g_slice_new0 (EmpathyCallWindow);
+ window->call = g_object_ref (call);
+
+ glade = empathy_glade_get_file ("empathy-call-window.glade",
+ "window",
+ NULL,
+ "window", &window->window,
+ "status_label", &window->status_label,
+ "start_call_button", &window->start_call_button,
+ "end_call_button", &window->end_call_button,
+ "input_volume_scale", &window->input_volume_scale,
+ "output_volume_scale", &window->output_volume_scale,
+ "input_mute_button", &window->input_mute_button,
+ "output_mute_button", &window->output_mute_button,
+ "preview_video_frame", &window->preview_video_frame,
+ "output_video_frame", &window->output_video_frame,
+ "video_button", &window->video_button,
+ NULL);
+
+ empathy_glade_connect (glade,
+ window,
+ "window", "destroy", call_window_destroy_cb,
+ "window", "delete_event", call_window_delete_event_cb,
+ "input_mute_button", "toggled", call_window_input_mute_button_toggled_cb,
+ "output_mute_button", "toggled", call_window_output_mute_button_toggled_cb,
+ "output_volume_scale", "value-changed", call_window_output_volume_changed_cb,
+ "start_call_button", "clicked", call_window_start_call_button_clicked_cb,
+ "end_call_button", "clicked", call_window_end_call_button_clicked_cb,
+ NULL);
+
+ g_object_unref (glade);
+
+ /* Output video label */
+ window->output_video_label = g_object_ref (gtk_label_new ("No video output"));
+ gtk_container_add (GTK_CONTAINER (window->output_video_frame),
+ window->output_video_label);
+ gtk_widget_show (window->output_video_label);
+
+ /* Output video socket */
+ window->output_video_socket = g_object_ref (gtk_socket_new ());
+ g_signal_connect (GTK_OBJECT (window->output_video_socket), "realize",
+ G_CALLBACK (call_window_socket_realized_cb), window);
+ gtk_widget_show (window->output_video_socket);
+
+ /* Preview video socket */
+ window->preview_video_socket = g_object_ref (gtk_socket_new ());
+ g_signal_connect (GTK_OBJECT (window->preview_video_socket), "realize",
+ G_CALLBACK (call_window_socket_realized_cb), window);
+ gtk_container_add (GTK_CONTAINER (window->preview_video_frame),
+ window->preview_video_socket);
+ gtk_widget_show (window->preview_video_socket);
+
+ g_signal_connect (G_OBJECT (window->call), "status-changed",
+ G_CALLBACK (call_window_status_changed_cb),
+ window);
+ g_signal_connect (G_OBJECT (window->call), "receiving-video",
+ G_CALLBACK (call_window_receiving_video_cb),
+ window);
+ g_signal_connect (G_OBJECT (window->call), "sending-video",
+ G_CALLBACK (call_window_sending_video_cb),
+ window);
+
+ window->is_drawing = FALSE;
+
+ g_object_get (G_OBJECT (window->call), "status", &status, NULL);
+
+ if (status == EMPATHY_TP_CALL_STATUS_READYING)
+ {
+ gtk_window_set_title (GTK_WINDOW (window->window), "Empathy Call");
+ gtk_label_set_text (GTK_LABEL (window->status_label), "Readying");
+ }
+
+ gtk_widget_show (window->window);
+
+ return window->window;