From a2f7044f34eb5ac085eccd801883e8c9a892be8e Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Mon, 15 Mar 2010 15:01:22 +0100 Subject: [PATCH] merge "Tabbed UI" patch from Emmanuel --- gtk-glade/incall_view.c | 45 +- gtk-glade/main.c | 13 +- gtk-glade/main.glade | 938 ++++++++++++++++++---------------------- mediastreamer2 | 2 +- 4 files changed, 462 insertions(+), 536 deletions(-) diff --git a/gtk-glade/incall_view.c b/gtk-glade/incall_view.c index 4d38dc988..1167c5ccd 100644 --- a/gtk-glade/incall_view.c +++ b/gtk-glade/incall_view.c @@ -38,18 +38,36 @@ gboolean linphone_gtk_use_in_call_view(){ void linphone_gtk_show_in_call_view(void){ GtkWidget *main_window=linphone_gtk_get_main_window(); - GtkWidget *idle_frame=linphone_gtk_get_widget(main_window,"idle_frame"); + GtkNotebook *notebook=(GtkNotebook *)linphone_gtk_get_widget(main_window,"viewswitch"); GtkWidget *in_call_frame=linphone_gtk_get_widget(main_window,"in_call_frame"); - gtk_widget_hide(idle_frame); + gint idx; + + /* Make the in call frame visible and arrange for the notebook to + show that page */ gtk_widget_show(in_call_frame); + idx = gtk_notebook_page_num(notebook, in_call_frame); + if (idx >= 0) { + gtk_notebook_set_current_page(notebook, idx); + } } void linphone_gtk_show_idle_view(void){ GtkWidget *main_window=linphone_gtk_get_main_window(); + GtkNotebook *notebook=(GtkNotebook *)linphone_gtk_get_widget(main_window,"viewswitch"); GtkWidget *idle_frame=linphone_gtk_get_widget(main_window,"idle_frame"); GtkWidget *in_call_frame=linphone_gtk_get_widget(main_window,"in_call_frame"); - gtk_widget_show(idle_frame); - gtk_widget_hide(in_call_frame); + gint idx; + + /* Switch back to the idle frame page, maybe we should have + remembered where we were in gtk_show_in_call_view() to switch + back to that page of the notebook, but this should do in most + cases. */ + gtk_widget_show(idle_frame); /* Make sure it is visible... */ + idx = gtk_notebook_page_num(notebook, idle_frame); + if (idx >= 0) { + gtk_notebook_set_current_page(notebook, idx); + gtk_widget_hide(in_call_frame); + } } void display_peer_name_in_label(GtkWidget *label, const char *uri){ @@ -91,13 +109,11 @@ void linphone_gtk_in_call_view_set_calling(const char *uri){ GtkWidget *duration=linphone_gtk_get_widget(main_window,"in_call_duration"); GtkWidget *animation=linphone_gtk_get_widget(main_window,"in_call_animation"); GdkPixbufAnimation *pbuf=create_pixbuf_animation("calling_anim.gif"); - GtkWidget *terminate_button=linphone_gtk_get_widget(main_window,"in_call_terminate"); - gtk_widget_set_sensitive(terminate_button,TRUE); gtk_label_set_markup(GTK_LABEL(status),_("Calling...")); display_peer_name_in_label(callee,uri); - gtk_label_set_text(GTK_LABEL(duration),"00:00:00"); + gtk_label_set_text(GTK_LABEL(duration),_("00::00::00")); if (pbuf!=NULL){ gtk_image_set_from_animation(GTK_IMAGE(animation),pbuf); g_object_unref(G_OBJECT(pbuf)); @@ -112,13 +128,11 @@ void linphone_gtk_in_call_view_set_in_call(){ GtkWidget *duration=linphone_gtk_get_widget(main_window,"in_call_duration"); GtkWidget *animation=linphone_gtk_get_widget(main_window,"in_call_animation"); GdkPixbufAnimation *pbuf=create_pixbuf_animation("incall_anim.gif"); - GtkWidget *terminate_button=linphone_gtk_get_widget(main_window,"in_call_terminate"); const LinphoneAddress *uri=linphone_core_get_remote_uri(lc); char *tmp=linphone_address_as_string(uri); display_peer_name_in_label(callee,tmp); ms_free(tmp); - gtk_widget_set_sensitive(terminate_button,TRUE); gtk_label_set_markup(GTK_LABEL(status),_("In call with")); gtk_label_set_text(GTK_LABEL(duration),_("00::00::00")); @@ -150,10 +164,8 @@ void linphone_gtk_in_call_view_terminate(const char *error_msg){ GtkWidget *main_window=linphone_gtk_get_main_window(); GtkWidget *status=linphone_gtk_get_widget(main_window,"in_call_status"); GtkWidget *animation=linphone_gtk_get_widget(main_window,"in_call_animation"); - GtkWidget *terminate_button=linphone_gtk_get_widget(main_window,"in_call_terminate"); GdkPixbuf *pbuf=create_pixbuf(linphone_gtk_get_ui_config("stop_call_icon","red.png")); - gtk_widget_set_sensitive(terminate_button,FALSE); if (error_msg==NULL) gtk_label_set_markup(GTK_LABEL(status),_("Call ended.")); else{ @@ -174,11 +186,17 @@ void linphone_gtk_draw_mute_button(GtkToggleButton *button, gboolean active){ if (active){ GtkWidget *image=create_pixmap("mic_muted.png"); gtk_button_set_label(GTK_BUTTON(button),_("Unmute")); - if (image!=NULL) gtk_button_set_image(GTK_BUTTON(button),image); + if (image!=NULL) { + gtk_button_set_image(GTK_BUTTON(button),image); + gtk_widget_show(image); + } }else{ GtkWidget *image=create_pixmap("mic_active.png"); gtk_button_set_label(GTK_BUTTON(button),_("Mute")); - if (image!=NULL) gtk_button_set_image(GTK_BUTTON(button),image); + if (image!=NULL) { + gtk_button_set_image(GTK_BUTTON(button),image); + gtk_widget_show(image); + } } } @@ -190,5 +208,6 @@ void linphone_gtk_mute_toggled(GtkToggleButton *button){ void linphone_gtk_enable_mute_button(GtkToggleButton *button, gboolean sensitive){ gtk_widget_set_sensitive(GTK_WIDGET(button),sensitive); + gtk_object_set(GTK_OBJECT(button),"gtk-button-images",TRUE,NULL); linphone_gtk_draw_mute_button(button,FALSE); } diff --git a/gtk-glade/main.c b/gtk-glade/main.c index 22062fac0..918be5545 100644 --- a/gtk-glade/main.c +++ b/gtk-glade/main.c @@ -552,7 +552,6 @@ void linphone_gtk_call_terminated(const char *error){ GtkWidget *icw; gtk_widget_set_sensitive(linphone_gtk_get_widget(mw,"terminate_call"),FALSE); gtk_widget_set_sensitive(linphone_gtk_get_widget(mw,"start_call"),TRUE); - gtk_widget_hide_all(linphone_gtk_get_widget(mw,"go_to_call_view_box")); linphone_gtk_enable_mute_button(GTK_TOGGLE_BUTTON(linphone_gtk_get_widget(mw,"main_mute")),FALSE); if (linphone_gtk_use_in_call_view()) linphone_gtk_in_call_view_terminate(error); @@ -576,7 +575,6 @@ static gboolean in_call_timer(){ static void linphone_gtk_call_started(GtkWidget *mw){ gtk_widget_set_sensitive(linphone_gtk_get_widget(mw,"start_call"),FALSE); gtk_widget_set_sensitive(linphone_gtk_get_widget(mw,"terminate_call"),TRUE); - gtk_widget_show_all(linphone_gtk_get_widget(mw,"go_to_call_view_box")); update_video_title(); if (linphone_gtk_use_in_call_view()) g_timeout_add(250,(GSourceFunc)in_call_timer,NULL); @@ -1062,7 +1060,6 @@ static void linphone_gtk_configure_main_window(){ if (stop_call_icon){ GdkPixbuf *pbuf=create_pixbuf(stop_call_icon); gtk_image_set_from_pixbuf(GTK_IMAGE(linphone_gtk_get_widget(w,"terminate_call_icon")),pbuf); - gtk_image_set_from_pixbuf(GTK_IMAGE(linphone_gtk_get_widget(w,"in_call_terminate_icon")),pbuf); g_object_unref(G_OBJECT(pbuf)); } if (search_icon){ @@ -1096,6 +1093,8 @@ void linphone_gtk_manage_login(void){ } static void linphone_gtk_init_main_window(){ + GtkWidget *main_window; + linphone_gtk_configure_main_window(); linphone_gtk_manage_login(); load_uri_history(); @@ -1104,10 +1103,14 @@ static void linphone_gtk_init_main_window(){ linphone_gtk_show_friends(); linphone_gtk_connect_digits(); linphone_gtk_check_menu_items(); - linphone_gtk_enable_mute_button(GTK_TOGGLE_BUTTON(linphone_gtk_get_widget(linphone_gtk_get_main_window(), + main_window=linphone_gtk_get_main_window(); + linphone_gtk_enable_mute_button(GTK_TOGGLE_BUTTON(linphone_gtk_get_widget(main_window, "main_mute")),FALSE); - linphone_gtk_enable_mute_button(GTK_TOGGLE_BUTTON(linphone_gtk_get_widget(linphone_gtk_get_main_window(), + linphone_gtk_enable_mute_button(GTK_TOGGLE_BUTTON(linphone_gtk_get_widget(main_window, "incall_mute")),FALSE); + if (!linphone_gtk_use_in_call_view()) { + gtk_widget_show(linphone_gtk_get_widget(main_window, "main_mute")); + } if (linphone_core_in_call(linphone_gtk_get_core())) linphone_gtk_call_started( linphone_gtk_get_main_window());/*hide the call button, show terminate button*/ } diff --git a/gtk-glade/main.glade b/gtk-glade/main.glade index 62d730f31..55fa4fb61 100644 --- a/gtk-glade/main.glade +++ b/gtk-glade/main.glade @@ -10,6 +10,7 @@ True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + vertical True @@ -219,12 +220,11 @@ True - + True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK vertical - + True @@ -365,281 +365,373 @@ - + True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + True - + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK vertical - + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 0 - + True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 12 - 12 + vertical - + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - vertical + 0 - + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 12 + 12 - + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - Lookup: - - - 12 - 0 - - - - - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - - - 4 - 1 - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - in - - - 8 - 2 - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 0 - All users -Online users - - - - 4 - 3 - - - - - False - 0 - - - - - True - True - automatic - automatic - - - 120 - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - - - - - - - 1 - - - - - True - 0 - none - - - True + vertical - + True - True - - - - - + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Lookup: + + + 12 + 0 + + + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + + + 4 + 1 + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + in + + + 8 + 2 + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 0 + All users +Online users + + + + 4 + 3 + + + False 0 - + True True - True - none - + automatic + automatic - + + 120 + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + + + + + + + 1 + + + + + True + 0 + none + + True - + True - gtk-find + True + + + + + 0 - + True - Search + True + True + none + + + + True + + + True + gtk-find + + + 0 + + + + + True + Search + + + 1 + + + + + False 1 + + + True + <b>Add contacts from directory</b> + True + + + label_item + + False - 1 + False + 5 + 2 - - - True - <b>Add contacts from directory</b> - True - - - label_item - - + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + <b>Contact list</b> + True - False - False - 5 - 2 + label_item + + 8 + 0 + + + + + True + + + Mute + False + True + True + + + + False + 0 + + + + + False + False + 1 + + + + + + + True + Internet connection: + + + 0 + + + + + True + 0 + ADSL +Fiber Channel + + + + 1 + + + + + False + 2 + - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - <b>Contact list</b> - True - - label_item + 8 + 0 - 8 0 - + True - - Mute - False - True - True - + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 0 + + + True + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 12 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 0 + Default + + + + + + 0 + + + + + True + True + True + + + + False + 1 + + + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + My current identity: + True + + + label_item + + - False 0 False - False 1 - - - - - True - Internet connection: - - - 0 - - - - - True - 0 - ADSL -Fiber Channel - - - - 1 - - - - - False - 2 - - + + + + + True + Contacts - 8 - 0 + False + tab - + True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK vertical - + True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 0 + 0.5 + none True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 0 + 0 True @@ -647,6 +739,8 @@ Fiber Channel 4 4 4 + 20 + 10 True @@ -661,7 +755,7 @@ Fiber Channel 4 3 4 - + GTK_FILL @@ -678,7 +772,7 @@ Fiber Channel 3 3 4 - + GTK_FILL @@ -695,7 +789,7 @@ Fiber Channel 2 3 4 - + GTK_FILL @@ -710,7 +804,7 @@ Fiber Channel 3 4 - + GTK_FILL @@ -727,7 +821,7 @@ Fiber Channel 4 2 3 - + GTK_FILL @@ -744,7 +838,7 @@ Fiber Channel 3 2 3 - + GTK_FILL @@ -761,7 +855,7 @@ Fiber Channel 2 2 3 - + GTK_FILL @@ -776,7 +870,7 @@ Fiber Channel 2 3 - + GTK_FILL @@ -793,7 +887,7 @@ Fiber Channel 4 1 2 - + GTK_FILL @@ -810,7 +904,7 @@ Fiber Channel 3 1 2 - + GTK_FILL @@ -827,7 +921,7 @@ Fiber Channel 2 1 2 - + GTK_FILL @@ -842,7 +936,7 @@ Fiber Channel 1 2 - + GTK_FILL @@ -857,7 +951,7 @@ Fiber Channel 3 4 - + GTK_FILL @@ -872,7 +966,7 @@ Fiber Channel 2 3 - + GTK_FILL @@ -887,7 +981,7 @@ Fiber Channel 1 2 - + GTK_FILL @@ -900,7 +994,7 @@ Fiber Channel GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - + GTK_FILL @@ -909,85 +1003,154 @@ Fiber Channel - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - Digits - True - + label_item - False - False 0 + + + - False - False 1 - - - 1 - - - - - True - + True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 0 + Keypad + + + 1 + False + tab + + + + + 0.5 + none - + True + 12 + 12 - + True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 12 + vertical - + True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 0 - Default - + gtk-info + 5 + + 0 + + + + + True + 0 + + + True + label + center + + + + + True + True + + + label_item + + + + + 1 + + + + + True + 0 + + + True + vertical + + + True + Duration + center + + + 0 + + + + + + + True + Duration: + True + + + label_item + + + + + False + 2 + + + + + True + + + Mute + True + False + True + True + + + + False + False + 0 + + + + + False + False + 3 + - - 0 - - - - - True - True - True - - - - False - 1 - - + True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - My current identity: + In call True + center label_item @@ -995,57 +1158,23 @@ Fiber Channel - 0 + 2 - - - False - 2 - - - - - - True - True - - - - True - - - True - gtk-go-forward - - - 0 - - - - - True - Show current call - - - 1 - - - - + + True + Call Details - False - False - 8 - end - 0 + 2 + False + tab - 3 + 1 @@ -1053,231 +1182,6 @@ Fiber Channel 0 - - - 0.5 - - - True - 12 - 12 - - - True - vertical - - - True - gtk-info - 5 - - - 0 - - - - - True - 0 - - - True - label - center - - - - - True - True - - - label_item - - - - - 1 - - - - - True - 0 - - - True - vertical - - - True - Duration - center - - - 0 - - - - - - - True - Duration: - True - - - label_item - - - - - False - 2 - - - - - True - - - Mute - True - False - True - True - - - - False - False - 0 - - - - - False - False - 3 - - - - - True - center - - - True - True - True - - - - True - - - True - gtk-close - 3 - - - 0 - - - - - True - <b>Terminate call</b> - True - - - 1 - - - - - - - False - False - 0 - - - - - 8 - 4 - - - - - True - center - - - True - True - True - - - - True - - - True - gtk-go-back - 1 - - - 0 - - - - - True - Main view - - - 1 - - - - - - - False - False - end - 0 - - - - - False - False - 5 - - - - - - - - - True - In call - True - center - - - label_item - - - - - 1 - - 0 @@ -1445,7 +1349,7 @@ Fiber Channel - 2 + 1 diff --git a/mediastreamer2 b/mediastreamer2 index 2e18cdfe5..5bcbcae29 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 2e18cdfe53230763907f3f9b55adeb4c16d396a7 +Subproject commit 5bcbcae29d9cf6d22b4f6880489eafa98e100008