]> sjero.net Git - linphone/commitdiff
Merge remote-tracking branch 'origin/master' into dev_gtk_new_ui
authorMargaux Clerc <margaux.clerc@belledonne-communications>
Thu, 18 Oct 2012 13:32:21 +0000 (15:32 +0200)
committerMargaux Clerc <margaux.clerc@belledonne-communications>
Thu, 18 Oct 2012 13:32:21 +0000 (15:32 +0200)
Conflicts:
gtk/incall_view.c
gtk/main.ui

1  2 
coreapi/chat.c
gtk/Makefile.am
gtk/incall_view.c
gtk/main.c
gtk/main.ui
po/POTFILES.in

diff --combined coreapi/chat.c
index 2aca72ff841d4d7820f47060c3d9d65716c7c995,ea87c9740d6777c955142cbe687bcf2d4d06e133..00f237377aabc6f2ae87b9f15bb17850fb062e80
@@@ -22,8 -22,9 +22,9 @@@
   *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
   */
   
-  #include "linphonecore.h"
-  #include "private.h"
+ #include "linphonecore.h"
+ #include "private.h"
+ #include "lpconfig.h"
   
   LinphoneChatRoom * linphone_core_create_chat_room(LinphoneCore *lc, const char *to){
        LinphoneAddress *parsed_url=NULL;
@@@ -45,8 -46,6 +46,6 @@@
        lc->chatrooms=ms_list_remove(lc->chatrooms,(void *) cr);
        linphone_address_destroy(cr->peer_url);
        ms_free(cr->peer);
-       if (cr->op)
-                sal_op_release(cr->op);
   }
  
  
@@@ -56,26 -55,24 +55,24 @@@ static void _linphone_chat_room_send_me
        SalOp *op=NULL;
        LinphoneCall *call;
        char* content_type;
-       if((call = linphone_core_get_call_by_remote_address(cr->lc,cr->peer))!=NULL){
-               if (call->state==LinphoneCallConnected ||
-                   call->state==LinphoneCallStreamsRunning ||
-                   call->state==LinphoneCallPaused ||
-                   call->state==LinphoneCallPausing ||
-                   call->state==LinphoneCallPausedByRemote){
-                       ms_message("send SIP message through the existing call.");
-                       op = call->op;
-                       call->pending_message=msg;
+       
+       if (lp_config_get_int(cr->lc->config,"sip","chat_use_call_dialogs",1)){
+               if((call = linphone_core_get_call_by_remote_address(cr->lc,cr->peer))!=NULL){
+                       if (call->state==LinphoneCallConnected ||
+                       call->state==LinphoneCallStreamsRunning ||
+                       call->state==LinphoneCallPaused ||
+                       call->state==LinphoneCallPausing ||
+                       call->state==LinphoneCallPausedByRemote){
+                               ms_message("send SIP message through the existing call.");
+                               op = call->op;
+                               call->pending_message=msg;
+                       }
                }
        }
        if (op==NULL){
                /*sending out of calls*/
                op = sal_op_new(cr->lc->sal);
                sal_op_set_route(op,route);
-               if (cr->op!=NULL){
-                       sal_op_release (cr->op);
-                       cr->op=NULL;
-               }
-               cr->op=op;
                sal_op_set_user_pointer(op, msg); /*if out of call, directly store msg*/
        }
        if (msg->external_body_url) {
@@@ -245,4 -242,4 +242,4 @@@ LinphoneChatMessage* linphone_chat_mess
        new_message->cb=msg->cb;
        if (msg->from) new_message->from=linphone_address_clone(msg->from);
        return new_message;
 -}
 +}
diff --combined gtk/Makefile.am
index 70d4de886ae6e879b58af74beb004613e44b741e,d31a05bfead363dfcaf3579f64e0b8e4d7704550..78f5d0de7e22cc5b851500d0d3a2cbe9f53a8ad3
@@@ -4,12 -4,14 +4,13 @@@ UI_FILES=     about.ui 
                contact.ui \
                parameters.ui \
                sip_account.ui \
 -              chatroom.ui \
                call_logs.ui \
                log.ui \
                buddylookup.ui \
                tunnel_config.ui \
                waiting.ui \
-               dscp_settings.ui
+               dscp_settings.ui \
+               call_statistics.ui
  
  PIXMAPS=      \
                stock_people.png 
diff --combined gtk/incall_view.c
index 25ee2348a615051a665a73b680341308d9c744c9,9798a718db880ed25cd03972acdcbb7111a0eba3..346e8af6c61a99c427fdc47a1327a1e6ae323a1b
@@@ -107,6 -107,7 +107,6 @@@ static void linphone_gtk_in_call_set_an
  #endif
  }
  
 -
  static void linphone_gtk_transfer_call(LinphoneCall *dest_call){
        LinphoneCall *call=linphone_gtk_get_currently_displayed_call(NULL);
        if (call) linphone_core_transfer_call_to_another(linphone_gtk_get_core(),call,dest_call);
@@@ -140,6 -141,8 +140,6 @@@ static void transfer_button_clicked(Gtk
        gtk_widget_show(menu);
  }
  
 -
 -
  void linphone_gtk_enable_transfer_button(LinphoneCore *lc, gboolean value){
        const MSList *elem=linphone_core_get_calls(lc);
        for(;elem!=NULL;elem=elem->next){
@@@ -190,6 -193,102 +190,102 @@@ void linphone_gtk_enable_conference_but
        }
  }
  
+ static void show_used_codecs(GtkWidget *callstats, LinphoneCall *call){
+       const LinphoneCallParams *params=linphone_call_get_current_params(call);
+       if (params){
+               const PayloadType *acodec=linphone_call_params_get_used_audio_codec(params);
+               const PayloadType *vcodec=linphone_call_params_get_used_video_codec(params);
+               GtkWidget *acodec_ui=linphone_gtk_get_widget(callstats,"audio_codec");
+               GtkWidget *vcodec_ui=linphone_gtk_get_widget(callstats,"video_codec");
+               if (acodec){
+                       
+                       char tmp[64]={0};
+                       snprintf(tmp,sizeof(tmp)-1,"%s/%i/%i",acodec->mime_type,acodec->clock_rate,acodec->channels);
+                       gtk_label_set_label(GTK_LABEL(acodec_ui),tmp);
+               }else gtk_label_set_label(GTK_LABEL(acodec_ui),_("Not used"));
+               if (vcodec){
+                       gtk_label_set_label(GTK_LABEL(vcodec_ui),vcodec->mime_type);
+               }else gtk_label_set_label(GTK_LABEL(vcodec_ui),_("Not used"));
+       }
+ }
+ static const char *ice_state_to_string(LinphoneIceState ice_state){
+       switch(ice_state){
+               case LinphoneIceStateNotActivated:
+                       return _("ICE not activated");
+               case LinphoneIceStateFailed:
+                       return _("ICE failed");
+               case LinphoneIceStateInProgress:
+                       return _("ICE in progress");
+               case LinphoneIceStateReflexiveConnection:
+                       return _("Going through one or more NATs");
+               case LinphoneIceStateHostConnection:
+                       return _("Direct");
+               case LinphoneIceStateRelayConnection:
+                       return _("Through a relay server");
+       }
+       return "invalid";
+ }
+ static void _refresh_call_stats(GtkWidget *callstats, LinphoneCall *call){
+       const LinphoneCallStats *as=linphone_call_get_audio_stats(call);
+       const LinphoneCallStats *vs=linphone_call_get_video_stats(call);
+       LinphoneIceState ice_state=as->ice_state;
+       gchar *tmp=g_strdup_printf(_("download: %f\nupload: %f (kbit/s)"),
+               as->download_bandwidth,as->upload_bandwidth);
+       gtk_label_set_markup(GTK_LABEL(linphone_gtk_get_widget(callstats,"audio_bandwidth_usage")),tmp);
+       g_free(tmp);
+       tmp=g_strdup_printf(_("download: %f\nupload: %f (kbit/s)"),
+               vs->download_bandwidth,vs->upload_bandwidth);
+       gtk_label_set_markup(GTK_LABEL(linphone_gtk_get_widget(callstats,"video_bandwidth_usage")),tmp);
+       g_free(tmp);
+       gtk_label_set_text(GTK_LABEL(linphone_gtk_get_widget(callstats,"media_connectivity")),ice_state_to_string(ice_state));
+ }
+ static gboolean refresh_call_stats(GtkWidget *callstats){
+       LinphoneCall *call=(LinphoneCall*)g_object_get_data(G_OBJECT(callstats),"call");
+       switch (linphone_call_get_state(call)){
+               case LinphoneCallError:
+               case LinphoneCallEnd:
+               case LinphoneCallReleased:
+                       gtk_widget_destroy(callstats);
+                       return FALSE;
+               break;
+               case LinphoneCallStreamsRunning:
+                       _refresh_call_stats(callstats,call);
+               break;
+               default:
+               break;
+       }
+       return TRUE;
+ }
+ static void on_call_stats_destroyed(GtkWidget *call_view){
+       GtkWidget *call_stats=(GtkWidget*)g_object_get_data(G_OBJECT(call_view),"call_stats");
+       LinphoneCall *call=(LinphoneCall*)g_object_get_data(G_OBJECT(call_stats),"call");
+       g_source_remove(GPOINTER_TO_INT(g_object_get_data(G_OBJECT(call_stats),"tid")));
+       g_object_set_data(G_OBJECT(call_view),"call_stats",NULL);
+       linphone_call_unref(call);
+ }
+ static void linphone_gtk_show_call_stats(LinphoneCall *call){
+       GtkWidget *w=(GtkWidget*)linphone_call_get_user_pointer(call);
+       GtkWidget *call_stats=(GtkWidget*)g_object_get_data(G_OBJECT(w),"call_stats");
+       if (call_stats==NULL){
+               guint tid;
+               call_stats=linphone_gtk_create_window("call_statistics");
+               g_object_set_data(G_OBJECT(w),"call_stats",call_stats);
+               g_object_set_data(G_OBJECT(call_stats),"call",linphone_call_ref(call));
+               tid=g_timeout_add(1000,(GSourceFunc)refresh_call_stats,call_stats);
+               g_object_set_data(G_OBJECT(call_stats),"tid",GINT_TO_POINTER(tid));
+               g_signal_connect_swapped(G_OBJECT(call_stats),"destroy",(GCallback)on_call_stats_destroyed,(gpointer)w);
+               show_used_codecs(call_stats,call);
+               refresh_call_stats(call_stats);
+               gtk_widget_show(call_stats);
+       }
+       
+ }
  void linphone_gtk_create_in_call_view(LinphoneCall *call){
        GtkWidget *call_view=linphone_gtk_create_widget("main","in_call_frame");
        GtkWidget *main_window=linphone_gtk_get_main_window ();
        linphone_gtk_enable_hold_button (call,FALSE,TRUE);
        linphone_gtk_enable_mute_button(
                                        GTK_BUTTON(linphone_gtk_get_widget(call_view,"incall_mute")),FALSE);
 +      
 +      GtkWidget *button=linphone_gtk_get_widget(call_view,"terminate_call");
 +      GtkWidget *image=create_pixmap("stopcall-red.png");
 +      gtk_button_set_label(GTK_BUTTON(button),_("Stop"));
 +      gtk_button_set_image(GTK_BUTTON(button),image);
 +      gtk_widget_show(image);
+       g_signal_connect_swapped(G_OBJECT(linphone_gtk_get_widget(call_view,"quality_indicator")),"button-press-event",(GCallback)linphone_gtk_show_call_stats,call);
 +
  }
  
  static void video_button_clicked(GtkWidget *button, LinphoneCall *call){
@@@ -510,6 -603,7 +607,7 @@@ void linphone_gtk_in_call_view_set_in_c
        GtkWidget *duration=linphone_gtk_get_widget(callview,"in_call_duration");
        guint taskid=GPOINTER_TO_INT(g_object_get_data(G_OBJECT(callview),"taskid"));
        gboolean in_conf=linphone_call_params_local_conference_mode(linphone_call_get_current_params(call));
+       GtkWidget *call_stats=(GtkWidget*)g_object_get_data(G_OBJECT(callview),"call_stats");
        
        display_peer_name_in_label(callee,linphone_call_get_remote_address (call));
  
        linphone_gtk_in_call_view_enable_audio_view(call, !in_conf);
        linphone_gtk_in_call_view_show_encryption(call);
        if (in_conf) linphone_gtk_set_in_conference(call);
+       if (call_stats) show_used_codecs(call_stats,call);
  }
  
  void linphone_gtk_in_call_view_set_paused(LinphoneCall *call){
@@@ -574,8 -669,6 +673,8 @@@ void linphone_gtk_in_call_view_terminat
        
        gtk_widget_hide(linphone_gtk_get_widget(callview,"answer_decline_panel"));
        gtk_widget_hide(linphone_gtk_get_widget(callview,"incall_audioview"));
 +      gtk_widget_hide(linphone_gtk_get_widget(callview,"terminate_call"));
 +      gtk_widget_hide(linphone_gtk_get_widget(callview,"video_button"));
        linphone_gtk_enable_mute_button(
                GTK_BUTTON(linphone_gtk_get_widget(callview,"incall_mute")),FALSE);
        linphone_gtk_enable_hold_button(call,FALSE,TRUE);
@@@ -682,3 -775,8 +781,8 @@@ void linphone_gtk_enable_hold_button(Li
        gtk_widget_set_visible(GTK_WIDGET(button),sensitive);
        linphone_gtk_draw_hold_button(GTK_BUTTON(button),!holdon);
  }
+ void linphone_gtk_call_statistics_closed(GtkWidget *call_stats){
+       gtk_widget_destroy(call_stats);
+ }
diff --combined gtk/main.c
index 0acbf6d481c7bd91f29c055f8ada2db3fdfa6297,b773a5b7faed3b92e8bb2a608b1832bb46c9e119..8ec303e288dde9e515fa52ab36c96e2725fd9cbf
@@@ -170,6 -170,7 +170,6 @@@ char *linphone_gtk_get_config_file(cons
        return config_file;
  }
  
 -
  #define FACTORY_CONFIG_FILE "linphonerc.factory"
  static char _factory_config_file[1024];
  static const char *linphone_gtk_get_factory_config_file(){
@@@ -278,8 -279,10 +278,10 @@@ static void linphone_gtk_configure_wind
                linphone_gtk_visibility_set(shown,window_name,w,TRUE);
        if (icon_path) {
                GdkPixbuf *pbuf=create_pixbuf(icon_path);
-               gtk_window_set_icon(GTK_WINDOW(w),pbuf);
-               g_object_unref(G_OBJECT(pbuf));
+               if(pbuf != NULL) {
+                       gtk_window_set_icon(GTK_WINDOW(w),pbuf);
+                       g_object_unref(G_OBJECT(pbuf));
+               }
        }
  }
  
@@@ -480,7 -483,6 +482,7 @@@ static void set_video_window_decoration
        const char *icon_path=linphone_gtk_get_ui_config("icon",LINPHONE_ICON);
        char video_title[256];
        GdkPixbuf *pbuf=create_pixbuf(icon_path);
 +      
        if (!linphone_core_in_call(linphone_gtk_get_core())){
                snprintf(video_title,sizeof(video_title),"%s video",title);
                /* When not in call, treat the video as a normal window */
@@@ -688,6 -690,7 +690,6 @@@ void linphone_gtk_show_main_window()
  void linphone_gtk_call_terminated(LinphoneCall *call, const char *error){
        GtkWidget *mw=linphone_gtk_get_main_window();
        if (linphone_core_get_calls(linphone_gtk_get_core())==NULL){
 -          gtk_widget_set_sensitive(linphone_gtk_get_widget(mw,"terminate_call"),FALSE);
            gtk_widget_set_sensitive(linphone_gtk_get_widget(mw,"start_call"),TRUE);
        }
        if (linphone_gtk_use_in_call_view() && call)
@@@ -701,15 -704,15 +703,15 @@@ static void linphone_gtk_update_call_bu
        const MSList *calls=linphone_core_get_calls(lc);
        GtkWidget *button;
        bool_t start_active=TRUE;
 -      bool_t stop_active=FALSE;
 +      //bool_t stop_active=FALSE;
        bool_t add_call=FALSE;
        int call_list_size=ms_list_size(calls);
        
        if (calls==NULL){
                start_active=TRUE;
 -              stop_active=FALSE;
 +              //stop_active=FALSE;
        }else{
 -              stop_active=TRUE;       
 +              //stop_active=TRUE;     
                start_active=TRUE;
                add_call=TRUE;
        }
        }
        gtk_widget_set_visible(button,add_call);
        
 -      gtk_widget_set_sensitive(linphone_gtk_get_widget(mw,"terminate_call"),stop_active);
 +      //gtk_widget_set_sensitive(linphone_gtk_get_widget(mw,"terminate_call"),stop_active);
  
        linphone_gtk_enable_transfer_button(lc,call_list_size>1);
        linphone_gtk_enable_conference_button(lc,call_list_size>1);
@@@ -966,7 -969,6 +968,7 @@@ static void linphone_gtk_auth_info_requ
  static void linphone_gtk_display_status(LinphoneCore *lc, const char *status){
        GtkWidget *w=linphone_gtk_get_main_window();
        GtkWidget *status_bar=linphone_gtk_get_widget(w,"status_bar");
 +      
        gtk_statusbar_push(GTK_STATUSBAR(status_bar),
                        gtk_statusbar_get_context_id(GTK_STATUSBAR(status_bar),""),
                        status);
@@@ -1484,28 -1486,18 +1486,28 @@@ static void linphone_gtk_configure_main
        static const char *home;
        static const char *start_call_icon;
        static const char *add_call_icon;
 -      static const char *stop_call_icon;
 +      //static const char *stop_call_icon;
        static const char *search_icon;
        static gboolean update_check_menu;
        static gboolean buttons_have_borders;
        static gboolean show_abcd;
        GtkWidget *w=linphone_gtk_get_main_window();
 +      
 +      //Change the color
 +      GdkColor color;
 +      //RGB(246^2,249^2,252^2)
 +      color.pixel = 0;
 +      color.red=65025;
 +      color.green=46656;
 +      color.blue=50625;
 +      gtk_widget_modify_bg(GTK_WIDGET(w), GTK_STATE_NORMAL, &color);
 +      
        if (!config_loaded){
                title=linphone_gtk_get_ui_config("title","Linphone");
                home=linphone_gtk_get_ui_config("home","http://www.linphone.org");
                start_call_icon=linphone_gtk_get_ui_config("start_call_icon","startcall-green.png");
                add_call_icon=linphone_gtk_get_ui_config("add_call_icon","addcall-green.png");
 -              stop_call_icon=linphone_gtk_get_ui_config("stop_call_icon","stopcall-red.png");
 +              //stop_call_icon=linphone_gtk_get_ui_config("stop_call_icon","stopcall-red.png");
                search_icon=linphone_gtk_get_ui_config("directory_search_icon",NULL);
                update_check_menu=linphone_gtk_get_ui_config_int("update_check_menu",0);
                buttons_have_borders=linphone_gtk_get_ui_config_int("buttons_border",1);
                if (!buttons_have_borders)
                        gtk_button_set_relief(GTK_BUTTON(linphone_gtk_get_widget(w,"add_call")),GTK_RELIEF_NONE);
        }
 -      if (stop_call_icon){
 -              gtk_button_set_image(GTK_BUTTON(linphone_gtk_get_widget(w,"terminate_call")),
 -                                  create_pixmap (stop_call_icon));
 -              if (!buttons_have_borders)
 -                      gtk_button_set_relief(GTK_BUTTON(linphone_gtk_get_widget(w,"terminate_call")),GTK_RELIEF_NONE);
 -      }
        if (search_icon){
                GdkPixbuf *pbuf=create_pixbuf(search_icon);
-               gtk_image_set_from_pixbuf(GTK_IMAGE(linphone_gtk_get_widget(w,"directory_search_button_icon")),pbuf);
-               g_object_unref(G_OBJECT(pbuf));
+               if(pbuf != NULL) {
+                       gtk_image_set_from_pixbuf(GTK_IMAGE(linphone_gtk_get_widget(w,"directory_search_button_icon")),pbuf);
+                       g_object_unref(G_OBJECT(pbuf));
+               }
        }
        if (home){
                gchar *tmp;
diff --combined gtk/main.ui
index 1b147fed4518929ea2b0cbbd98178ae0498a1dd3,a57b79966fb27c0d09bb0c93eb4ebde9405866e0..8731a495a1179caf036949ce90f5b826f55de8d5
  <?xml version="1.0" encoding="UTF-8"?>
  <interface>
 -  <requires lib="gtk+" version="2.18"/>
 +  <!-- interface-requires gtk+ 3.0 -->
    <!-- interface-naming-policy toplevel-contextual -->
 +  <object class="GtkImage" id="add_image">
 +    <property name="visible">True</property>
 +    <property name="can_focus">False</property>
 +    <property name="stock">gtk-add</property>
 +  </object>
 +  <object class="GtkWindow" id="dummy_chat_window">
 +    <property name="can_focus">False</property>
 +    <child>
 +      <object class="GtkFrame" id="chatroom_frame">
 +        <property name="visible">True</property>
 +        <property name="can_focus">False</property>
 +        <property name="label_xalign">0</property>
 +        <property name="shadow_type">none</property>
 +        <child>
 +          <object class="GtkVBox" id="vbox4">
 +            <property name="visible">True</property>
 +            <property name="can_focus">False</property>
 +            <child>
 +              <object class="GtkScrolledWindow" id="scrolledwindow3">
 +                <property name="visible">True</property>
 +                <property name="can_focus">True</property>
 +                <property name="hscrollbar_policy">never</property>
 +                <child>
 +                  <object class="GtkTextView" id="textview">
 +                    <property name="visible">True</property>
 +                    <property name="can_focus">True</property>
 +                  </object>
 +                </child>
 +              </object>
 +              <packing>
 +                <property name="expand">True</property>
 +                <property name="fill">True</property>
 +                <property name="position">0</property>
 +              </packing>
 +            </child>
 +            <child>
 +              <object class="GtkHBox" id="hbox10">
 +                <property name="visible">True</property>
 +                <property name="can_focus">False</property>
 +                <child>
 +                  <object class="GtkEntry" id="text_entry">
 +                    <property name="visible">True</property>
 +                    <property name="can_focus">True</property>
 +                    <property name="has_focus">True</property>
 +                    <property name="invisible_char">•</property>
 +                    <property name="primary_icon_activatable">False</property>
 +                    <property name="secondary_icon_activatable">False</property>
 +                    <property name="primary_icon_sensitive">True</property>
 +                    <property name="secondary_icon_sensitive">True</property>
 +                  </object>
 +                  <packing>
 +                    <property name="expand">True</property>
 +                    <property name="fill">True</property>
 +                    <property name="position">0</property>
 +                  </packing>
 +                </child>
 +                <child>
 +                  <object class="GtkButton" id="send">
 +                    <property name="visible">True</property>
 +                    <property name="can_focus">True</property>
 +                    <property name="receives_default">True</property>
 +                    <property name="use_action_appearance">False</property>
 +                    <child>
 +                      <object class="GtkHBox" id="hbox11">
 +                        <property name="visible">True</property>
 +                        <property name="can_focus">False</property>
 +                        <child>
 +                          <object class="GtkImage" id="image13">
 +                            <property name="visible">True</property>
 +                            <property name="can_focus">False</property>
 +                            <property name="stock">gtk-ok</property>
 +                          </object>
 +                          <packing>
 +                            <property name="expand">True</property>
 +                            <property name="fill">True</property>
 +                            <property name="position">0</property>
 +                          </packing>
 +                        </child>
 +                        <child>
 +                          <object class="GtkLabel" id="label4">
 +                            <property name="visible">True</property>
 +                            <property name="can_focus">False</property>
 +                            <property name="label" translatable="yes">Send</property>
 +                          </object>
 +                          <packing>
 +                            <property name="expand">True</property>
 +                            <property name="fill">True</property>
 +                            <property name="padding">7</property>
 +                            <property name="position">1</property>
 +                          </packing>
 +                        </child>
 +                      </object>
 +                    </child>
 +                  </object>
 +                  <packing>
 +                    <property name="expand">False</property>
 +                    <property name="fill">False</property>
 +                    <property name="position">1</property>
 +                  </packing>
 +                </child>
 +              </object>
 +              <packing>
 +                <property name="expand">False</property>
 +                <property name="fill">False</property>
 +                <property name="position">1</property>
 +              </packing>
 +            </child>
 +          </object>
 +        </child>
 +        <child type="label_item">
 +          <placeholder/>
 +        </child>
 +      </object>
 +    </child>
 +  </object>
    <object class="GtkWindow" id="dummy_conf_window">
      <property name="can_focus">False</property>
      <child>
      <child>
        <object class="GtkFrame" id="in_call_frame">
          <property name="can_focus">False</property>
 +        <property name="extension_events">cursor</property>
          <property name="label_xalign">0.5</property>
          <property name="shadow_type">none</property>
          <child>
                    </object>
                    <packing>
                      <property name="expand">False</property>
 -                    <property name="fill">False</property>
 +                    <property name="fill">True</property>
                      <property name="position">2</property>
                    </packing>
                  </child>
                  <child>
                    <object class="GtkHBox" id="incall_audioview">
                      <property name="can_focus">False</property>
 +                    <property name="homogeneous">True</property>
                      <child>
                        <object class="GtkButton" id="incall_mute">
                          <property name="can_focus">True</property>
                          <signal name="clicked" handler="linphone_gtk_mute_clicked" swapped="no"/>
                        </object>
                        <packing>
 -                        <property name="expand">True</property>
 +                        <property name="expand">False</property>
                          <property name="fill">False</property>
                          <property name="position">0</property>
                        </packing>
                      </child>
                      <child>
                        <object class="GtkProgressBar" id="mic_audiolevel">
 +                        <property name="width_request">90</property>
 +                        <property name="height_request">10</property>
                          <property name="visible">True</property>
                          <property name="can_focus">False</property>
                        </object>
                        </packing>
                      </child>
                      <child>
 -                      <object class="GtkImage" id="incall_spk_icon">
 +                      <object class="GtkProgressBar" id="spk_audiolevel">
 +                        <property name="width_request">90</property>
                          <property name="visible">True</property>
                          <property name="can_focus">False</property>
 -                        <property name="stock">gtk-missing-image</property>
 -                        <property name="icon-size">1</property>
                        </object>
                        <packing>
 -                        <property name="expand">True</property>
 +                        <property name="expand">False</property>
                          <property name="fill">False</property>
 +                        <property name="pack_type">end</property>
                          <property name="position">2</property>
                        </packing>
                      </child>
                      <child>
 -                      <object class="GtkProgressBar" id="spk_audiolevel">
 +                      <object class="GtkImage" id="incall_spk_icon">
                          <property name="visible">True</property>
                          <property name="can_focus">False</property>
 +                        <property name="stock">gtk-missing-image</property>
 +                        <property name="icon-size">1</property>
                        </object>
                        <packing>
                          <property name="expand">False</property>
                    </object>
                    <packing>
                      <property name="expand">False</property>
 -                    <property name="fill">False</property>
 +                    <property name="fill">True</property>
                      <property name="position">3</property>
                    </packing>
                  </child>
                          <property name="position">0</property>
                        </packing>
                      </child>
 +                    <child>
 +                      <object class="GtkButton" id="terminate_call">
 +                        <property name="label" translatable="yes">Stop</property>
 +                        <property name="visible">True</property>
 +                        <property name="can_focus">True</property>
 +                        <property name="receives_default">True</property>
 +                        <property name="use_action_appearance">False</property>
 +                        <signal name="activate" handler="linphone_gtk_terminate_call" swapped="no"/>
 +                        <signal name="clicked" handler="linphone_gtk_terminate_call" swapped="no"/>
 +                      </object>
 +                      <packing>
 +                        <property name="expand">False</property>
 +                        <property name="fill">False</property>
 +                        <property name="position">1</property>
 +                      </packing>
 +                    </child>
                      <child>
                        <object class="GtkButton" id="video_button">
                          <property name="label" translatable="yes">Video</property>
                        <packing>
                          <property name="expand">False</property>
                          <property name="fill">False</property>
 -                        <property name="position">1</property>
 +                        <property name="position">2</property>
                        </packing>
                      </child>
                    </object>
              </child>
              <child>
                <object class="GtkProgressBar" id="quality_indicator">
 +                <property name="width_request">90</property>
                  <property name="visible">True</property>
                  <property name="can_focus">False</property>
 -                <property name="events">GDK_BUTTON_PRESS_MASK | GDK_STRUCTURE_MASK</property>
++                <property name="events">GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_STRUCTURE_MASK</property>
                  <property name="tooltip_text" translatable="yes">Call quality rating</property>
                </object>
                <packing>
        </object>
      </child>
    </object>
 +  <object class="GtkImage" id="edit_image">
 +    <property name="visible">True</property>
 +    <property name="can_focus">False</property>
 +    <property name="stock">gtk-edit</property>
 +  </object>
    <object class="GtkImage" id="image1">
      <property name="visible">True</property>
      <property name="can_focus">False</property>
                <object class="GtkVBox" id="main_frame">
                  <property name="visible">True</property>
                  <property name="can_focus">False</property>
 +                <property name="spacing">8</property>
                  <child>
                    <object class="GtkHBox" id="address_bar">
                      <property name="visible">True</property>
                      <property name="can_focus">False</property>
 -                    <child>
 -                      <object class="GtkButton" id="start_call">
 -                        <property name="visible">True</property>
 -                        <property name="can_focus">True</property>
 -                        <property name="receives_default">True</property>
 -                        <property name="use_action_appearance">False</property>
 -                        <signal name="clicked" handler="linphone_gtk_start_call" swapped="no"/>
 -                      </object>
 -                      <packing>
 -                        <property name="expand">False</property>
 -                        <property name="fill">False</property>
 -                        <property name="position">0</property>
 -                      </packing>
 -                    </child>
 -                    <child>
 -                      <object class="GtkButton" id="add_call">
 -                        <property name="can_focus">True</property>
 -                        <property name="receives_default">True</property>
 -                        <property name="tooltip_text" translatable="yes">Initiate a new call</property>
 -                        <property name="use_action_appearance">False</property>
 -                        <signal name="clicked" handler="linphone_gtk_start_call" swapped="no"/>
 -                      </object>
 -                      <packing>
 -                        <property name="expand">False</property>
 -                        <property name="fill">False</property>
 -                        <property name="position">1</property>
 -                      </packing>
 -                    </child>
                      <child>
                        <object class="GtkFrame" id="frame4">
                          <property name="visible">True</property>
                                    <object class="GtkEntry" id="uribar">
                                      <property name="visible">True</property>
                                      <property name="can_focus">True</property>
 -                                    <property name="has_focus">True</property>
 -                                    <property name="tooltip_text" translatable="yes">Enter username, phone number, or full sip address</property>
                                      <property name="invisible_char">●</property>
 +                                    <property name="invisible_char_set">True</property>
                                      <property name="primary_icon_activatable">False</property>
                                      <property name="secondary_icon_activatable">False</property>
                                      <property name="primary_icon_sensitive">True</property>
                        <packing>
                          <property name="expand">True</property>
                          <property name="fill">True</property>
 -                        <property name="position">2</property>
 +                        <property name="position">0</property>
                        </packing>
                      </child>
                      <child>
 -                      <object class="GtkButton" id="terminate_call">
 -                        <property name="visible">True</property>
 +                      <object class="GtkButton" id="add_call">
                          <property name="can_focus">True</property>
                          <property name="receives_default">True</property>
 +                        <property name="tooltip_text" translatable="yes">Initiate a new call</property>
                          <property name="use_action_appearance">False</property>
 -                        <signal name="clicked" handler="linphone_gtk_terminate_call" swapped="no"/>
 +                        <signal name="clicked" handler="linphone_gtk_start_call" swapped="no"/>
                        </object>
                        <packing>
                          <property name="expand">False</property>
                          <property name="fill">False</property>
 -                        <property name="position">3</property>
 +                        <property name="position">1</property>
 +                      </packing>
 +                    </child>
 +                    <child>
 +                      <object class="GtkButton" id="start_call">
 +                        <property name="visible">True</property>
 +                        <property name="can_focus">True</property>
 +                        <property name="receives_default">True</property>
 +                        <property name="use_action_appearance">False</property>
 +                        <signal name="clicked" handler="linphone_gtk_start_call" swapped="no"/>
 +                      </object>
 +                      <packing>
 +                        <property name="expand">False</property>
 +                        <property name="fill">True</property>
 +                        <property name="position">2</property>
                        </packing>
                      </child>
 +                    <child>
 +                      <placeholder/>
 +                    </child>
                    </object>
                    <packing>
                      <property name="expand">False</property>
                    </packing>
                  </child>
                  <child>
 -                  <object class="GtkNotebook" id="viewswitch">
 +                  <object class="GtkHBox" id="hbox">
                      <property name="visible">True</property>
 -                    <property name="can_focus">True</property>
 +                    <property name="can_focus">False</property>
                      <child>
 -                      <object class="GtkHBox" id="hbox5">
 +                      <object class="GtkVBox" id="vbox12">
                          <property name="visible">True</property>
                          <property name="can_focus">False</property>
 -                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                          <child>
 -                          <object class="GtkVBox" id="vbox7">
 +                          <object class="GtkEntry" id="search_bar">
                              <property name="visible">True</property>
 -                            <property name="can_focus">False</property>
 +                            <property name="can_focus">True</property>
                              <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 +                            <property name="invisible_char">●</property>
 +                            <property name="shadow_type">none</property>
 +                            <property name="invisible_char_set">True</property>
 +                            <property name="primary_icon_activatable">False</property>
 +                            <property name="secondary_icon_activatable">False</property>
 +                            <property name="primary_icon_sensitive">True</property>
 +                            <property name="secondary_icon_sensitive">True</property>
 +                            <signal name="changed" handler="linphone_gtk_show_friends" swapped="no"/>
 +                          </object>
 +                          <packing>
 +                            <property name="expand">False</property>
 +                            <property name="fill">True</property>
 +                            <property name="padding">4</property>
 +                            <property name="position">0</property>
 +                          </packing>
 +                        </child>
 +                        <child>
 +                          <placeholder/>
 +                        </child>
 +                        <child>
 +                          <object class="GtkScrolledWindow" id="scrolledwindow1">
 +                            <property name="visible">True</property>
 +                            <property name="can_focus">True</property>
 +                            <property name="hscrollbar_policy">automatic</property>
 +                            <property name="vscrollbar_policy">automatic</property>
                              <child>
 -                              <object class="GtkHBox" id="filtering_box">
 +                              <object class="GtkTreeView" id="contact_list">
                                  <property name="visible">True</property>
 -                                <property name="can_focus">False</property>
 -                                <child>
 -                                  <object class="GtkLabel" id="label2">
 -                                    <property name="visible">True</property>
 -                                    <property name="can_focus">False</property>
 -                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 -                                    <property name="label" translatable="yes">Lookup:</property>
 -                                  </object>
 -                                  <packing>
 -                                    <property name="expand">True</property>
 -                                    <property name="fill">True</property>
 -                                    <property name="padding">12</property>
 -                                    <property name="position">0</property>
 -                                  </packing>
 -                                </child>
 -                                <child>
 -                                  <object class="GtkEntry" id="search_bar">
 -                                    <property name="visible">True</property>
 -                                    <property name="can_focus">True</property>
 -                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 -                                    <property name="invisible_char">●</property>
 -                                    <property name="invisible_char_set">True</property>
 -                                    <property name="primary_icon_activatable">False</property>
 -                                    <property name="secondary_icon_activatable">False</property>
 -                                    <property name="primary_icon_sensitive">True</property>
 -                                    <property name="secondary_icon_sensitive">True</property>
 -                                    <signal name="changed" handler="linphone_gtk_show_friends" swapped="no"/>
 -                                  </object>
 -                                  <packing>
 -                                    <property name="expand">True</property>
 -                                    <property name="fill">True</property>
 -                                    <property name="padding">4</property>
 -                                    <property name="position">1</property>
 -                                  </packing>
 -                                </child>
 -                                <child>
 -                                  <object class="GtkLabel" id="label_in">
 -                                    <property name="visible">True</property>
 -                                    <property name="can_focus">False</property>
 -                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 -                                    <property name="label" translatable="yes">in</property>
 -                                  </object>
 -                                  <packing>
 -                                    <property name="expand">True</property>
 -                                    <property name="fill">True</property>
 -                                    <property name="padding">8</property>
 -                                    <property name="position">2</property>
 -                                  </packing>
 -                                </child>
 -                                <child>
 -                                  <object class="GtkComboBox" id="show_category">
 -                                    <property name="visible">True</property>
 -                                    <property name="can_focus">False</property>
 -                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 -                                    <property name="model">model1</property>
 -                                    <property name="active">0</property>
 -                                    <signal name="changed" handler="linphone_gtk_show_friends" swapped="no"/>
 -                                    <child>
 -                                      <object class="GtkCellRendererText" id="renderer1"/>
 -                                      <attributes>
 -                                        <attribute name="text">0</attribute>
 -                                      </attributes>
 -                                    </child>
 -                                  </object>
 -                                  <packing>
 -                                    <property name="expand">True</property>
 -                                    <property name="fill">True</property>
 -                                    <property name="padding">4</property>
 -                                    <property name="position">3</property>
 -                                  </packing>
 -                                </child>
 +                                <property name="can_focus">True</property>
 +                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 +                                <property name="reorderable">True</property>
 +                                <property name="search_column">0</property>
 +                                <signal name="button-press-event" handler="linphone_gtk_contact_list_button_pressed" swapped="no"/>
 +                                <signal name="cursor-changed" handler="linphone_gtk_contact_clicked" swapped="no"/>
 +                                <signal name="row-activated" handler="linphone_gtk_contact_activated" swapped="no"/>
 +                                <signal name="popup-menu" handler="linphone_gtk_popup_contact_menu" swapped="no"/>
                                </object>
 -                              <packing>
 -                                <property name="expand">False</property>
 -                                <property name="fill">True</property>
 -                                <property name="position">0</property>
 +                            </child>
 +                          </object>
 +                          <packing>
 +                            <property name="expand">True</property>
 +                            <property name="fill">True</property>
 +                            <property name="position">2</property>
 +                          </packing>
 +                        </child>
 +                        <child>
 +                          <object class="GtkHBox" id="hbox9">
 +                            <property name="visible">True</property>
 +                            <property name="can_focus">False</property>
 +                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 +                            <property name="has_tooltip">True</property>
 +                            <child>
 +                              <object class="GtkButton" id="add_button">
 +                                <property name="visible">True</property>
 +                                <property name="can_focus">True</property>
 +                                <property name="receives_default">True</property>
 +                                <property name="tooltip_text" translatable="yes">Add</property>
 +                                <property name="resize_mode">immediate</property>
 +                                <property name="use_action_appearance">False</property>
 +                                <property name="image">add_image</property>
 +                                <property name="xalign">1</property>
 +                                <signal name="clicked" handler="linphone_gtk_add_button_clicked" swapped="no"/>
 +                              </object>
 +                              <packing>
 +                                <property name="expand">False</property>
 +                                <property name="fill">False</property>
 +                                <property name="position">0</property>
                                </packing>
                              </child>
                              <child>
 -                              <object class="GtkScrolledWindow" id="scrolledwindow1">
 +                              <object class="GtkButton" id="edit_button">
                                  <property name="visible">True</property>
                                  <property name="can_focus">True</property>
 -                                <child>
 -                                  <object class="GtkTreeView" id="contact_list">
 -                                    <property name="visible">True</property>
 -                                    <property name="can_focus">True</property>
 -                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 -                                    <property name="reorderable">True</property>
 -                                    <property name="search_column">0</property>
 -                                    <signal name="button-press-event" handler="linphone_gtk_contact_list_button_pressed" swapped="no"/>
 -                                    <signal name="cursor-changed" handler="linphone_gtk_contact_clicked" swapped="no"/>
 -                                    <signal name="row-activated" handler="linphone_gtk_contact_activated" swapped="no"/>
 -                                    <signal name="popup-menu" handler="linphone_gtk_popup_contact_menu" swapped="no"/>
 -                                  </object>
 -                                </child>
 +                                <property name="receives_default">True</property>
 +                                <property name="tooltip_text" translatable="yes">Edit</property>
 +                                <property name="use_action_appearance">False</property>
 +                                <property name="image">edit_image</property>
 +                                <signal name="clicked" handler="linphone_gtk_edit_button_clicked" swapped="no"/>
                                </object>
                                <packing>
 -                                <property name="expand">True</property>
 -                                <property name="fill">True</property>
 +                                <property name="expand">False</property>
 +                                <property name="fill">False</property>
                                  <property name="position">1</property>
                                </packing>
                              </child>
                              <child>
 -                              <object class="GtkFrame" id="directory_search_box">
 +                              <object class="GtkButton" id="remove_button">
 +                                <property name="visible">True</property>
 +                                <property name="can_focus">True</property>
 +                                <property name="receives_default">True</property>
 +                                <property name="use_action_appearance">False</property>
 +                                <property name="image">remove_image</property>
 +                                <signal name="clicked" handler="linphone_gtk_remove_button_clicked" swapped="no"/>
 +                              </object>
 +                              <packing>
 +                                <property name="expand">False</property>
 +                                <property name="fill">False</property>
 +                                <property name="position">2</property>
 +                              </packing>
 +                            </child>
 +                          </object>
 +                          <packing>
 +                            <property name="expand">False</property>
 +                            <property name="fill">False</property>
 +                            <property name="position">3</property>
 +                          </packing>
 +                        </child>
 +                      </object>
 +                      <packing>
 +                        <property name="expand">False</property>
 +                        <property name="fill">False</property>
 +                        <property name="padding">12</property>
 +                        <property name="position">0</property>
 +                      </packing>
 +                    </child>
 +                    <child>
 +                      <object class="GtkNotebook" id="viewswitch">
 +                        <property name="visible">True</property>
 +                        <property name="can_focus">True</property>
 +                        <child>
 +                          <object class="GtkHBox" id="hbox5">
 +                            <property name="visible">True</property>
 +                            <property name="can_focus">False</property>
 +                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 +                            <child>
 +                              <object class="GtkVBox" id="vbox7">
 +                                <property name="visible">True</property>
                                  <property name="can_focus">False</property>
 -                                <property name="label_xalign">0</property>
 -                                <property name="shadow_type">none</property>
 +                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                                  <child>
 -                                  <object class="GtkHBox" id="directory_search_vbox">
 +                                  <object class="GtkFrame" id="frame3">
 +                                    <property name="visible">True</property>
                                      <property name="can_focus">False</property>
 +                                    <property name="label_xalign">0.5</property>
 +                                    <property name="shadow_type">none</property>
                                      <child>
 -                                      <object class="GtkEntry" id="directory_search_entry">
 +                                      <object class="GtkAlignment" id="alignment5">
                                          <property name="visible">True</property>
 -                                        <property name="can_focus">True</property>
 -                                        <property name="invisible_char">●</property>
 -                                        <property name="invisible_char_set">True</property>
 -                                        <property name="primary_icon_activatable">False</property>
 -                                        <property name="secondary_icon_activatable">False</property>
 -                                        <property name="primary_icon_sensitive">True</property>
 -                                        <property name="secondary_icon_sensitive">True</property>
 -                                        <signal name="activate" handler="linphone_gtk_directory_search_activate" swapped="no"/>
 -                                        <signal name="icon-press" handler="linphone_gtk_directory_search_activate" swapped="no"/>
 -                                        <signal name="focus-in-event" handler="linphone_gtk_directory_search_focus_in" swapped="no"/>
 -                                        <signal name="focus-out-event" handler="linphone_gtk_directory_search_focus_out" swapped="no"/>
 -                                      </object>
 -                                      <packing>
 -                                        <property name="expand">True</property>
 -                                        <property name="fill">True</property>
 -                                        <property name="position">0</property>
 -                                      </packing>
 -                                    </child>
 -                                    <child>
 -                                      <object class="GtkButton" id="directory_search_button">
 -                                        <property name="visible">True</property>
 -                                        <property name="can_focus">True</property>
 -                                        <property name="receives_default">True</property>
 -                                        <property name="use_action_appearance">False</property>
 -                                        <property name="relief">none</property>
 -                                        <signal name="clicked" handler="linphone_gtk_directory_search_button_clicked" swapped="no"/>
 +                                        <property name="can_focus">False</property>
 +                                        <property name="xscale">0</property>
 +                                        <property name="yscale">0</property>
                                          <child>
 -                                          <object class="GtkHBox" id="hbox12">
 +                                          <object class="GtkAspectFrame" id="aspectframe1">
                                              <property name="visible">True</property>
                                              <property name="can_focus">False</property>
 +                                            <property name="label_xalign">0</property>
                                              <child>
 -                                              <object class="GtkImage" id="directory_search_button_icon">
 +                                              <object class="GtkTable" id="dtmf_table">
                                                  <property name="visible">True</property>
                                                  <property name="can_focus">False</property>
 -                                                <property name="stock">gtk-find</property>
 +                                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 +                                                <property name="border_width">4</property>
 +                                                <property name="n_rows">4</property>
 +                                                <property name="n_columns">4</property>
 +                                                <property name="homogeneous">True</property>
 +                                                <child>
 +                                                  <object class="GtkButton" id="dtmf_D">
 +                                                    <property name="label" translatable="yes">D</property>
 +                                                    <property name="visible">True</property>
 +                                                    <property name="can_focus">True</property>
 +                                                    <property name="receives_default">True</property>
 +                                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 +                                                    <property name="use_action_appearance">False</property>
 +                                                  </object>
 +                                                  <packing>
 +                                                    <property name="left_attach">3</property>
 +                                                    <property name="right_attach">4</property>
 +                                                    <property name="top_attach">3</property>
 +                                                    <property name="bottom_attach">4</property>
 +                                                  </packing>
 +                                                </child>
 +                                                <child>
 +                                                  <object class="GtkButton" id="dtmf_hash">
 +                                                    <property name="label" translatable="yes">#</property>
 +                                                    <property name="visible">True</property>
 +                                                    <property name="can_focus">True</property>
 +                                                    <property name="receives_default">True</property>
 +                                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 +                                                    <property name="use_action_appearance">False</property>
 +                                                  </object>
 +                                                  <packing>
 +                                                    <property name="left_attach">2</property>
 +                                                    <property name="right_attach">3</property>
 +                                                    <property name="top_attach">3</property>
 +                                                    <property name="bottom_attach">4</property>
 +                                                  </packing>
 +                                                </child>
 +                                                <child>
 +                                                  <object class="GtkButton" id="dtmf_0">
 +                                                    <property name="label" translatable="yes">0</property>
 +                                                    <property name="visible">True</property>
 +                                                    <property name="can_focus">True</property>
 +                                                    <property name="receives_default">True</property>
 +                                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 +                                                    <property name="use_action_appearance">False</property>
 +                                                  </object>
 +                                                  <packing>
 +                                                    <property name="left_attach">1</property>
 +                                                    <property name="right_attach">2</property>
 +                                                    <property name="top_attach">3</property>
 +                                                    <property name="bottom_attach">4</property>
 +                                                  </packing>
 +                                                </child>
 +                                                <child>
 +                                                  <object class="GtkButton" id="dtmf_star">
 +                                                    <property name="label" translatable="yes">*</property>
 +                                                    <property name="visible">True</property>
 +                                                    <property name="can_focus">True</property>
 +                                                    <property name="receives_default">True</property>
 +                                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 +                                                    <property name="use_action_appearance">False</property>
 +                                                  </object>
 +                                                  <packing>
 +                                                    <property name="top_attach">3</property>
 +                                                    <property name="bottom_attach">4</property>
 +                                                  </packing>
 +                                                </child>
 +                                                <child>
 +                                                  <object class="GtkButton" id="dtmf_C">
 +                                                    <property name="label" translatable="yes">C</property>
 +                                                    <property name="visible">True</property>
 +                                                    <property name="can_focus">True</property>
 +                                                    <property name="receives_default">True</property>
 +                                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 +                                                    <property name="use_action_appearance">False</property>
 +                                                  </object>
 +                                                  <packing>
 +                                                    <property name="left_attach">3</property>
 +                                                    <property name="right_attach">4</property>
 +                                                    <property name="top_attach">2</property>
 +                                                    <property name="bottom_attach">3</property>
 +                                                  </packing>
 +                                                </child>
 +                                                <child>
 +                                                  <object class="GtkButton" id="dtmf_9">
 +                                                    <property name="label" translatable="yes">9</property>
 +                                                    <property name="visible">True</property>
 +                                                    <property name="can_focus">True</property>
 +                                                    <property name="receives_default">True</property>
 +                                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 +                                                    <property name="use_action_appearance">False</property>
 +                                                  </object>
 +                                                  <packing>
 +                                                    <property name="left_attach">2</property>
 +                                                    <property name="right_attach">3</property>
 +                                                    <property name="top_attach">2</property>
 +                                                    <property name="bottom_attach">3</property>
 +                                                  </packing>
 +                                                </child>
 +                                                <child>
 +                                                  <object class="GtkButton" id="dtmf_8">
 +                                                    <property name="label" translatable="yes">8</property>
 +                                                    <property name="visible">True</property>
 +                                                    <property name="can_focus">True</property>
 +                                                    <property name="receives_default">True</property>
 +                                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 +                                                    <property name="use_action_appearance">False</property>
 +                                                  </object>
 +                                                  <packing>
 +                                                    <property name="left_attach">1</property>
 +                                                    <property name="right_attach">2</property>
 +                                                    <property name="top_attach">2</property>
 +                                                    <property name="bottom_attach">3</property>
 +                                                  </packing>
 +                                                </child>
 +                                                <child>
 +                                                  <object class="GtkButton" id="dtmf_7">
 +                                                    <property name="label" translatable="yes">7</property>
 +                                                    <property name="visible">True</property>
 +                                                    <property name="can_focus">True</property>
 +                                                    <property name="receives_default">True</property>
 +                                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 +                                                    <property name="use_action_appearance">False</property>
 +                                                  </object>
 +                                                  <packing>
 +                                                    <property name="top_attach">2</property>
 +                                                    <property name="bottom_attach">3</property>
 +                                                  </packing>
 +                                                </child>
 +                                                <child>
 +                                                  <object class="GtkButton" id="dtmf_B">
 +                                                    <property name="label" translatable="yes">B</property>
 +                                                    <property name="visible">True</property>
 +                                                    <property name="can_focus">True</property>
 +                                                    <property name="receives_default">True</property>
 +                                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 +                                                    <property name="use_action_appearance">False</property>
 +                                                  </object>
 +                                                  <packing>
 +                                                    <property name="left_attach">3</property>
 +                                                    <property name="right_attach">4</property>
 +                                                    <property name="top_attach">1</property>
 +                                                    <property name="bottom_attach">2</property>
 +                                                  </packing>
 +                                                </child>
 +                                                <child>
 +                                                  <object class="GtkButton" id="dtmf_6">
 +                                                    <property name="label" translatable="yes">6</property>
 +                                                    <property name="visible">True</property>
 +                                                    <property name="can_focus">True</property>
 +                                                    <property name="receives_default">True</property>
 +                                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 +                                                    <property name="use_action_appearance">False</property>
 +                                                  </object>
 +                                                  <packing>
 +                                                    <property name="left_attach">2</property>
 +                                                    <property name="right_attach">3</property>
 +                                                    <property name="top_attach">1</property>
 +                                                    <property name="bottom_attach">2</property>
 +                                                  </packing>
 +                                                </child>
 +                                                <child>
 +                                                  <object class="GtkButton" id="dtmf_5">
 +                                                    <property name="label" translatable="yes">5</property>
 +                                                    <property name="visible">True</property>
 +                                                    <property name="can_focus">True</property>
 +                                                    <property name="receives_default">True</property>
 +                                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 +                                                    <property name="use_action_appearance">False</property>
 +                                                  </object>
 +                                                  <packing>
 +                                                    <property name="left_attach">1</property>
 +                                                    <property name="right_attach">2</property>
 +                                                    <property name="top_attach">1</property>
 +                                                    <property name="bottom_attach">2</property>
 +                                                  </packing>
 +                                                </child>
 +                                                <child>
 +                                                  <object class="GtkButton" id="dtmf_4">
 +                                                    <property name="label" translatable="yes">4</property>
 +                                                    <property name="visible">True</property>
 +                                                    <property name="can_focus">True</property>
 +                                                    <property name="receives_default">True</property>
 +                                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 +                                                    <property name="use_action_appearance">False</property>
 +                                                  </object>
 +                                                  <packing>
 +                                                    <property name="top_attach">1</property>
 +                                                    <property name="bottom_attach">2</property>
 +                                                  </packing>
 +                                                </child>
 +                                                <child>
 +                                                  <object class="GtkButton" id="dtmf_A">
 +                                                    <property name="label" translatable="yes">A</property>
 +                                                    <property name="visible">True</property>
 +                                                    <property name="can_focus">True</property>
 +                                                    <property name="receives_default">True</property>
 +                                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 +                                                    <property name="use_action_appearance">False</property>
 +                                                  </object>
 +                                                  <packing>
 +                                                    <property name="left_attach">3</property>
 +                                                    <property name="right_attach">4</property>
 +                                                  </packing>
 +                                                </child>
 +                                                <child>
 +                                                  <object class="GtkButton" id="dtmf_3">
 +                                                    <property name="label" translatable="yes">3</property>
 +                                                    <property name="visible">True</property>
 +                                                    <property name="can_focus">True</property>
 +                                                    <property name="receives_default">True</property>
 +                                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 +                                                    <property name="use_action_appearance">False</property>
 +                                                  </object>
 +                                                  <packing>
 +                                                    <property name="left_attach">2</property>
 +                                                    <property name="right_attach">3</property>
 +                                                  </packing>
 +                                                </child>
 +                                                <child>
 +                                                  <object class="GtkButton" id="dtmf_2">
 +                                                    <property name="label" translatable="yes">2</property>
 +                                                    <property name="visible">True</property>
 +                                                    <property name="can_focus">True</property>
 +                                                    <property name="receives_default">True</property>
 +                                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 +                                                    <property name="use_action_appearance">False</property>
 +                                                  </object>
 +                                                  <packing>
 +                                                    <property name="left_attach">1</property>
 +                                                    <property name="right_attach">2</property>
 +                                                  </packing>
 +                                                </child>
 +                                                <child>
 +                                                  <object class="GtkButton" id="dtmf_1">
 +                                                    <property name="label" translatable="yes">1</property>
 +                                                    <property name="width_request">40</property>
 +                                                    <property name="height_request">40</property>
 +                                                    <property name="visible">True</property>
 +                                                    <property name="can_focus">True</property>
 +                                                    <property name="receives_default">True</property>
 +                                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 +                                                    <property name="use_action_appearance">False</property>
 +                                                  </object>
 +                                                </child>
                                                </object>
 -                                              <packing>
 -                                                <property name="expand">True</property>
 -                                                <property name="fill">True</property>
 -                                                <property name="position">0</property>
 -                                              </packing>
                                              </child>
 +                                          </object>
 +                                        </child>
 +                                      </object>
 +                                    </child>
 +                                    <child type="label_item">
 +                                      <placeholder/>
 +                                    </child>
 +                                  </object>
 +                                  <packing>
 +                                    <property name="expand">True</property>
 +                                    <property name="fill">True</property>
 +                                    <property name="position">0</property>
 +                                  </packing>
 +                                </child>
 +                                <child>
 +                                  <object class="GtkFrame" id="directory_search_box">
 +                                    <property name="can_focus">False</property>
 +                                    <property name="label_xalign">0</property>
 +                                    <property name="shadow_type">none</property>
 +                                    <child>
 +                                      <object class="GtkHBox" id="directory_search_vbox">
 +                                        <property name="can_focus">False</property>
 +                                        <child>
 +                                          <object class="GtkEntry" id="directory_search_entry">
 +                                            <property name="visible">True</property>
 +                                            <property name="can_focus">True</property>
 +                                            <property name="invisible_char">●</property>
 +                                            <property name="invisible_char_set">True</property>
 +                                            <property name="primary_icon_activatable">False</property>
 +                                            <property name="secondary_icon_activatable">False</property>
 +                                            <property name="primary_icon_sensitive">True</property>
 +                                            <property name="secondary_icon_sensitive">True</property>
 +                                            <signal name="activate" handler="linphone_gtk_directory_search_activate" swapped="no"/>
 +                                            <signal name="icon-press" handler="linphone_gtk_directory_search_activate" swapped="no"/>
 +                                            <signal name="focus-in-event" handler="linphone_gtk_directory_search_focus_in" swapped="no"/>
 +                                            <signal name="focus-out-event" handler="linphone_gtk_directory_search_focus_out" swapped="no"/>
 +                                          </object>
 +                                          <packing>
 +                                            <property name="expand">True</property>
 +                                            <property name="fill">True</property>
 +                                            <property name="position">0</property>
 +                                          </packing>
 +                                        </child>
 +                                        <child>
 +                                          <object class="GtkButton" id="directory_search_button">
 +                                            <property name="visible">True</property>
 +                                            <property name="can_focus">True</property>
 +                                            <property name="receives_default">True</property>
 +                                            <property name="use_action_appearance">False</property>
 +                                            <property name="relief">none</property>
 +                                            <signal name="clicked" handler="linphone_gtk_directory_search_button_clicked" swapped="no"/>
                                              <child>
 -                                              <object class="GtkLabel" id="directory_search_button_label">
 +                                              <object class="GtkHBox" id="hbox12">
                                                  <property name="visible">True</property>
                                                  <property name="can_focus">False</property>
 -                                                <property name="label" translatable="yes">Search</property>
 +                                                <child>
 +                                                  <object class="GtkImage" id="directory_search_button_icon">
 +                                                    <property name="visible">True</property>
 +                                                    <property name="can_focus">False</property>
 +                                                    <property name="stock">gtk-find</property>
 +                                                  </object>
 +                                                  <packing>
 +                                                    <property name="expand">True</property>
 +                                                    <property name="fill">True</property>
 +                                                    <property name="position">0</property>
 +                                                  </packing>
 +                                                </child>
 +                                                <child>
 +                                                  <object class="GtkLabel" id="directory_search_button_label">
 +                                                    <property name="visible">True</property>
 +                                                    <property name="can_focus">False</property>
 +                                                    <property name="label" translatable="yes">Search</property>
 +                                                  </object>
 +                                                  <packing>
 +                                                    <property name="expand">True</property>
 +                                                    <property name="fill">True</property>
 +                                                    <property name="position">1</property>
 +                                                  </packing>
 +                                                </child>
                                                </object>
 -                                              <packing>
 -                                                <property name="expand">True</property>
 -                                                <property name="fill">True</property>
 -                                                <property name="position">1</property>
 -                                              </packing>
                                              </child>
                                            </object>
 +                                          <packing>
 +                                            <property name="expand">False</property>
 +                                            <property name="fill">True</property>
 +                                            <property name="position">1</property>
 +                                          </packing>
                                          </child>
                                        </object>
 -                                      <packing>
 -                                        <property name="expand">False</property>
 -                                        <property name="fill">True</property>
 -                                        <property name="position">1</property>
 -                                      </packing>
 +                                    </child>
 +                                    <child type="label">
 +                                      <object class="GtkLabel" id="label14">
 +                                        <property name="visible">True</property>
 +                                        <property name="can_focus">False</property>
 +                                        <property name="label" translatable="yes">&lt;b&gt;Add contacts from directory&lt;/b&gt;</property>
 +                                        <property name="use_markup">True</property>
 +                                      </object>
                                      </child>
                                    </object>
 +                                  <packing>
 +                                    <property name="expand">False</property>
 +                                    <property name="fill">False</property>
 +                                    <property name="padding">5</property>
 +                                    <property name="position">2</property>
 +                                  </packing>
                                  </child>
 -                                <child type="label">
 -                                  <object class="GtkLabel" id="label14">
 +                                <child>
 +                                  <object class="GtkHButtonBox" id="hbuttonbox1">
                                      <property name="visible">True</property>
                                      <property name="can_focus">False</property>
 -                                    <property name="label" translatable="yes">&lt;b&gt;Add contacts from directory&lt;/b&gt;</property>
 -                                    <property name="use_markup">True</property>
 -                                  </object>
 -                                </child>
 -                              </object>
 -                              <packing>
 -                                <property name="expand">False</property>
 -                                <property name="fill">False</property>
 -                                <property name="padding">5</property>
 -                                <property name="position">2</property>
 -                              </packing>
 -                            </child>
 -                            <child>
 -                              <object class="GtkHButtonBox" id="hbuttonbox1">
 -                                <property name="visible">True</property>
 -                                <property name="can_focus">False</property>
 -                                <child>
 -                                  <object class="GtkButton" id="add_contact_button">
 -                                    <property name="label" translatable="yes">Add contact</property>
 -                                    <property name="can_focus">True</property>
 -                                    <property name="receives_default">True</property>
 -                                    <property name="use_action_appearance">False</property>
 -                                    <property name="image">image10</property>
 -                                    <signal name="clicked" handler="linphone_gtk_add_contact" swapped="no"/>
 +                                    <child>
 +                                      <object class="GtkButton" id="add_contact_button">
 +                                        <property name="label" translatable="yes">Add contact</property>
 +                                        <property name="can_focus">True</property>
 +                                        <property name="receives_default">True</property>
 +                                        <property name="use_action_appearance">False</property>
 +                                        <property name="image">image10</property>
 +                                        <signal name="clicked" handler="linphone_gtk_add_contact" swapped="no"/>
 +                                      </object>
 +                                      <packing>
 +                                        <property name="expand">False</property>
 +                                        <property name="fill">False</property>
 +                                        <property name="position">0</property>
 +                                      </packing>
 +                                    </child>
                                    </object>
                                    <packing>
                                      <property name="expand">False</property>
                                      <property name="fill">False</property>
 -                                    <property name="position">0</property>
 +                                    <property name="position">3</property>
                                    </packing>
                                  </child>
                                </object>
                                <packing>
 -                                <property name="expand">False</property>
 -                                <property name="fill">False</property>
 -                                <property name="position">3</property>
 +                                <property name="expand">True</property>
 +                                <property name="fill">True</property>
 +                                <property name="position">0</property>
                                </packing>
                              </child>
                            </object>
 -                          <packing>
 -                            <property name="expand">True</property>
 -                            <property name="fill">True</property>
 -                            <property name="position">0</property>
 -                          </packing>
 -                        </child>
 -                      </object>
 -                    </child>
 -                    <child type="tab">
 -                      <object class="GtkHBox" id="hbox2">
 -                        <property name="visible">True</property>
 -                        <property name="can_focus">False</property>
 -                        <child>
 -                          <object class="GtkImage" id="contact_tab_icon">
 -                            <property name="visible">True</property>
 -                            <property name="can_focus">False</property>
 -                            <property name="stock">gtk-directory</property>
 -                            <property name="icon-size">1</property>
 -                          </object>
 -                          <packing>
 -                            <property name="expand">True</property>
 -                            <property name="fill">True</property>
 -                            <property name="position">0</property>
 -                          </packing>
                          </child>
 -                        <child>
 -                          <object class="GtkLabel" id="label15">
 +                        <child type="tab">
 +                          <object class="GtkHBox" id="hbox2">
                              <property name="visible">True</property>
                              <property name="can_focus">False</property>
 -                            <property name="label" translatable="yes">Contacts</property>
 -                          </object>
 -                          <packing>
 -                            <property name="expand">True</property>
 -                            <property name="fill">True</property>
 -                            <property name="position">1</property>
 -                          </packing>
 -                        </child>
 -                      </object>
 -                      <packing>
 -                        <property name="tab_fill">False</property>
 -                      </packing>
 -                    </child>
 -                    <child>
 -                      <object class="GtkVBox" id="keypad_frame">
 -                        <property name="visible">True</property>
 -                        <property name="can_focus">False</property>
 -                        <child>
 -                          <object class="GtkVBox" id="call_logs_box">
 -                            <property name="visible">True</property>
 -                            <property name="can_focus">False</property>
 -                            <property name="spacing">2</property>
                              <child>
 -                              <object class="GtkHButtonBox" id="dialog-action_area1">
 +                              <object class="GtkImage" id="keypad_tab_icon">
                                  <property name="visible">True</property>
                                  <property name="can_focus">False</property>
 -                                <property name="layout_style">end</property>
 -                                <child>
 -                                  <object class="GtkButton" id="erase_call_logs_button">
 -                                    <property name="label">gtk-clear</property>
 -                                    <property name="visible">True</property>
 -                                    <property name="can_focus">True</property>
 -                                    <property name="receives_default">True</property>
 -                                    <property name="use_action_appearance">False</property>
 -                                    <property name="use_stock">True</property>
 -                                    <signal name="clicked" handler="linphone_gtk_clear_call_logs" swapped="no"/>
 -                                  </object>
 -                                  <packing>
 -                                    <property name="expand">False</property>
 -                                    <property name="fill">False</property>
 -                                    <property name="position">0</property>
 -                                  </packing>
 -                                </child>
 -                                <child>
 -                                  <placeholder/>
 -                                </child>
 -                                <child>
 -                                  <placeholder/>
 -                                </child>
 +                                <property name="stock">gtk-missing-image</property>
 +                                <property name="icon-size">1</property>
                                </object>
                                <packing>
 -                                <property name="expand">False</property>
 +                                <property name="expand">True</property>
                                  <property name="fill">True</property>
 -                                <property name="pack_type">end</property>
                                  <property name="position">0</property>
                                </packing>
                              </child>
                              <child>
 -                              <object class="GtkScrolledWindow" id="scrolledwindow2">
 +                              <object class="GtkLabel" id="Keypad">
                                  <property name="visible">True</property>
 -                                <property name="can_focus">True</property>
 -                                <property name="hscrollbar_policy">never</property>
 -                                <child>
 -                                  <object class="GtkTreeView" id="logs_view">
 -                                    <property name="visible">True</property>
 -                                    <property name="can_focus">True</property>
 -                                    <property name="headers_visible">False</property>
 -                                    <signal name="cursor-changed" handler="linphone_gtk_history_row_selected" swapped="no"/>
 -                                    <signal name="row-activated" handler="linphone_gtk_history_row_activated" swapped="no"/>
 -                                  </object>
 -                                </child>
 +                                <property name="can_focus">False</property>
 +                                <property name="label" translatable="yes">Keypad</property>
                                </object>
                                <packing>
                                  <property name="expand">True</property>
                              </child>
                            </object>
                            <packing>
 -                            <property name="expand">True</property>
 -                            <property name="fill">True</property>
 -                            <property name="position">0</property>
 -                          </packing>
 -                        </child>
 -                      </object>
 -                      <packing>
 -                        <property name="position">1</property>
 -                      </packing>
 -                    </child>
 -                    <child type="tab">
 -                      <object class="GtkHBox" id="hbox6">
 -                        <property name="visible">True</property>
 -                        <property name="can_focus">False</property>
 -                        <child>
 -                          <object class="GtkImage" id="history_tab_icon">
 -                            <property name="visible">True</property>
 -                            <property name="can_focus">False</property>
 -                            <property name="stock">gtk-refresh</property>
 -                            <property name="icon-size">1</property>
 -                          </object>
 -                          <packing>
 -                            <property name="expand">True</property>
 -                            <property name="fill">True</property>
 -                            <property name="position">0</property>
 +                            <property name="tab_fill">False</property>
                            </packing>
                          </child>
                          <child>
 -                          <object class="GtkLabel" id="label1">
 +                          <object class="GtkVBox" id="keypad_frame">
                              <property name="visible">True</property>
                              <property name="can_focus">False</property>
 -                            <property name="yalign">0.49000000953674316</property>
 -                            <property name="label" translatable="yes">Recent calls</property>
 -                          </object>
 -                          <packing>
 -                            <property name="expand">True</property>
 -                            <property name="fill">True</property>
 -                            <property name="position">1</property>
 -                          </packing>
 -                        </child>
 -                      </object>
 -                      <packing>
 -                        <property name="position">1</property>
 -                        <property name="tab_fill">False</property>
 -                      </packing>
 -                    </child>
 -                    <child>
 -                      <object class="GtkFrame" id="frame3">
 -                        <property name="visible">True</property>
 -                        <property name="can_focus">False</property>
 -                        <property name="label_xalign">0.5</property>
 -                        <property name="shadow_type">none</property>
 -                        <child>
 -                          <object class="GtkAlignment" id="alignment5">
 -                            <property name="visible">True</property>
 -                            <property name="can_focus">False</property>
 -                            <property name="xscale">0</property>
 -                            <property name="yscale">0</property>
                              <child>
 -                              <object class="GtkAspectFrame" id="aspectframe1">
 +                              <object class="GtkVBox" id="call_logs_box">
                                  <property name="visible">True</property>
                                  <property name="can_focus">False</property>
 -                                <property name="label_xalign">0</property>
 +                                <property name="spacing">2</property>
                                  <child>
 -                                  <object class="GtkTable" id="dtmf_table">
 +                                  <object class="GtkHButtonBox" id="dialog-action_area1">
                                      <property name="visible">True</property>
                                      <property name="can_focus">False</property>
 -                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 -                                    <property name="border_width">4</property>
 -                                    <property name="n_rows">4</property>
 -                                    <property name="n_columns">4</property>
 -                                    <property name="homogeneous">True</property>
 -                                    <child>
 -                                      <object class="GtkButton" id="dtmf_D">
 -                                        <property name="label" translatable="yes">D</property>
 -                                        <property name="visible">True</property>
 -                                        <property name="can_focus">True</property>
 -                                        <property name="receives_default">True</property>
 -                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 -                                        <property name="use_action_appearance">False</property>
 -                                      </object>
 -                                      <packing>
 -                                        <property name="left_attach">3</property>
 -                                        <property name="right_attach">4</property>
 -                                        <property name="top_attach">3</property>
 -                                        <property name="bottom_attach">4</property>
 -                                      </packing>
 -                                    </child>
 -                                    <child>
 -                                      <object class="GtkButton" id="dtmf_hash">
 -                                        <property name="label" translatable="yes">#</property>
 -                                        <property name="visible">True</property>
 -                                        <property name="can_focus">True</property>
 -                                        <property name="receives_default">True</property>
 -                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 -                                        <property name="use_action_appearance">False</property>
 -                                      </object>
 -                                      <packing>
 -                                        <property name="left_attach">2</property>
 -                                        <property name="right_attach">3</property>
 -                                        <property name="top_attach">3</property>
 -                                        <property name="bottom_attach">4</property>
 -                                      </packing>
 -                                    </child>
 -                                    <child>
 -                                      <object class="GtkButton" id="dtmf_0">
 -                                        <property name="label" translatable="yes">0</property>
 -                                        <property name="visible">True</property>
 -                                        <property name="can_focus">True</property>
 -                                        <property name="receives_default">True</property>
 -                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 -                                        <property name="use_action_appearance">False</property>
 -                                      </object>
 -                                      <packing>
 -                                        <property name="left_attach">1</property>
 -                                        <property name="right_attach">2</property>
 -                                        <property name="top_attach">3</property>
 -                                        <property name="bottom_attach">4</property>
 -                                      </packing>
 -                                    </child>
 -                                    <child>
 -                                      <object class="GtkButton" id="dtmf_star">
 -                                        <property name="label" translatable="yes">*</property>
 -                                        <property name="visible">True</property>
 -                                        <property name="can_focus">True</property>
 -                                        <property name="receives_default">True</property>
 -                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 -                                        <property name="use_action_appearance">False</property>
 -                                      </object>
 -                                      <packing>
 -                                        <property name="top_attach">3</property>
 -                                        <property name="bottom_attach">4</property>
 -                                      </packing>
 -                                    </child>
 -                                    <child>
 -                                      <object class="GtkButton" id="dtmf_C">
 -                                        <property name="label" translatable="yes">C</property>
 -                                        <property name="visible">True</property>
 -                                        <property name="can_focus">True</property>
 -                                        <property name="receives_default">True</property>
 -                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 -                                        <property name="use_action_appearance">False</property>
 -                                      </object>
 -                                      <packing>
 -                                        <property name="left_attach">3</property>
 -                                        <property name="right_attach">4</property>
 -                                        <property name="top_attach">2</property>
 -                                        <property name="bottom_attach">3</property>
 -                                      </packing>
 -                                    </child>
 -                                    <child>
 -                                      <object class="GtkButton" id="dtmf_9">
 -                                        <property name="label" translatable="yes">9</property>
 -                                        <property name="visible">True</property>
 -                                        <property name="can_focus">True</property>
 -                                        <property name="receives_default">True</property>
 -                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 -                                        <property name="use_action_appearance">False</property>
 -                                      </object>
 -                                      <packing>
 -                                        <property name="left_attach">2</property>
 -                                        <property name="right_attach">3</property>
 -                                        <property name="top_attach">2</property>
 -                                        <property name="bottom_attach">3</property>
 -                                      </packing>
 -                                    </child>
 -                                    <child>
 -                                      <object class="GtkButton" id="dtmf_8">
 -                                        <property name="label" translatable="yes">8</property>
 -                                        <property name="visible">True</property>
 -                                        <property name="can_focus">True</property>
 -                                        <property name="receives_default">True</property>
 -                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 -                                        <property name="use_action_appearance">False</property>
 -                                      </object>
 -                                      <packing>
 -                                        <property name="left_attach">1</property>
 -                                        <property name="right_attach">2</property>
 -                                        <property name="top_attach">2</property>
 -                                        <property name="bottom_attach">3</property>
 -                                      </packing>
 -                                    </child>
 -                                    <child>
 -                                      <object class="GtkButton" id="dtmf_7">
 -                                        <property name="label" translatable="yes">7</property>
 -                                        <property name="visible">True</property>
 -                                        <property name="can_focus">True</property>
 -                                        <property name="receives_default">True</property>
 -                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 -                                        <property name="use_action_appearance">False</property>
 -                                      </object>
 -                                      <packing>
 -                                        <property name="top_attach">2</property>
 -                                        <property name="bottom_attach">3</property>
 -                                      </packing>
 -                                    </child>
 -                                    <child>
 -                                      <object class="GtkButton" id="dtmf_B">
 -                                        <property name="label" translatable="yes">B</property>
 -                                        <property name="visible">True</property>
 -                                        <property name="can_focus">True</property>
 -                                        <property name="receives_default">True</property>
 -                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 -                                        <property name="use_action_appearance">False</property>
 -                                      </object>
 -                                      <packing>
 -                                        <property name="left_attach">3</property>
 -                                        <property name="right_attach">4</property>
 -                                        <property name="top_attach">1</property>
 -                                        <property name="bottom_attach">2</property>
 -                                      </packing>
 -                                    </child>
 -                                    <child>
 -                                      <object class="GtkButton" id="dtmf_6">
 -                                        <property name="label" translatable="yes">6</property>
 -                                        <property name="visible">True</property>
 -                                        <property name="can_focus">True</property>
 -                                        <property name="receives_default">True</property>
 -                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 -                                        <property name="use_action_appearance">False</property>
 -                                      </object>
 -                                      <packing>
 -                                        <property name="left_attach">2</property>
 -                                        <property name="right_attach">3</property>
 -                                        <property name="top_attach">1</property>
 -                                        <property name="bottom_attach">2</property>
 -                                      </packing>
 -                                    </child>
 +                                    <property name="layout_style">end</property>
                                      <child>
 -                                      <object class="GtkButton" id="dtmf_5">
 -                                        <property name="label" translatable="yes">5</property>
 +                                      <object class="GtkButton" id="erase_call_logs_button">
 +                                        <property name="label">gtk-clear</property>
                                          <property name="visible">True</property>
                                          <property name="can_focus">True</property>
                                          <property name="receives_default">True</property>
 -                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                                          <property name="use_action_appearance">False</property>
 +                                        <property name="use_stock">True</property>
 +                                        <signal name="clicked" handler="linphone_gtk_clear_call_logs" swapped="no"/>
                                        </object>
                                        <packing>
 -                                        <property name="left_attach">1</property>
 -                                        <property name="right_attach">2</property>
 -                                        <property name="top_attach">1</property>
 -                                        <property name="bottom_attach">2</property>
 -                                      </packing>
 -                                    </child>
 -                                    <child>
 -                                      <object class="GtkButton" id="dtmf_4">
 -                                        <property name="label" translatable="yes">4</property>
 -                                        <property name="visible">True</property>
 -                                        <property name="can_focus">True</property>
 -                                        <property name="receives_default">True</property>
 -                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 -                                        <property name="use_action_appearance">False</property>
 -                                      </object>
 -                                      <packing>
 -                                        <property name="top_attach">1</property>
 -                                        <property name="bottom_attach">2</property>
 -                                      </packing>
 -                                    </child>
 -                                    <child>
 -                                      <object class="GtkButton" id="dtmf_A">
 -                                        <property name="label" translatable="yes">A</property>
 -                                        <property name="visible">True</property>
 -                                        <property name="can_focus">True</property>
 -                                        <property name="receives_default">True</property>
 -                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 -                                        <property name="use_action_appearance">False</property>
 -                                      </object>
 -                                      <packing>
 -                                        <property name="left_attach">3</property>
 -                                        <property name="right_attach">4</property>
 +                                        <property name="expand">False</property>
 +                                        <property name="fill">False</property>
 +                                        <property name="position">0</property>
                                        </packing>
                                      </child>
                                      <child>
 -                                      <object class="GtkButton" id="dtmf_3">
 -                                        <property name="label" translatable="yes">3</property>
 -                                        <property name="visible">True</property>
 -                                        <property name="can_focus">True</property>
 -                                        <property name="receives_default">True</property>
 -                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 -                                        <property name="use_action_appearance">False</property>
 -                                      </object>
 -                                      <packing>
 -                                        <property name="left_attach">2</property>
 -                                        <property name="right_attach">3</property>
 -                                      </packing>
 +                                      <placeholder/>
                                      </child>
                                      <child>
 -                                      <object class="GtkButton" id="dtmf_2">
 -                                        <property name="label" translatable="yes">2</property>
 -                                        <property name="visible">True</property>
 -                                        <property name="can_focus">True</property>
 -                                        <property name="receives_default">True</property>
 -                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 -                                        <property name="use_action_appearance">False</property>
 -                                      </object>
 -                                      <packing>
 -                                        <property name="left_attach">1</property>
 -                                        <property name="right_attach">2</property>
 -                                      </packing>
 +                                      <placeholder/>
                                      </child>
 +                                  </object>
 +                                  <packing>
 +                                    <property name="expand">False</property>
 +                                    <property name="fill">True</property>
 +                                    <property name="pack_type">end</property>
 +                                    <property name="position">0</property>
 +                                  </packing>
 +                                </child>
 +                                <child>
 +                                  <object class="GtkScrolledWindow" id="scrolledwindow2">
 +                                    <property name="visible">True</property>
 +                                    <property name="can_focus">True</property>
 +                                    <property name="hscrollbar_policy">never</property>
                                      <child>
 -                                      <object class="GtkButton" id="dtmf_1">
 -                                        <property name="label" translatable="yes">1</property>
 -                                        <property name="width_request">40</property>
 -                                        <property name="height_request">40</property>
 +                                      <object class="GtkTreeView" id="logs_view">
 +                                        <property name="width_request">266</property>
                                          <property name="visible">True</property>
                                          <property name="can_focus">True</property>
 -                                        <property name="receives_default">True</property>
 -                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 -                                        <property name="use_action_appearance">False</property>
 +                                        <property name="headers_visible">False</property>
 +                                        <signal name="cursor-changed" handler="linphone_gtk_history_row_selected" swapped="no"/>
 +                                        <signal name="row-activated" handler="linphone_gtk_history_row_activated" swapped="no"/>
                                        </object>
                                      </child>
                                    </object>
 +                                  <packing>
 +                                    <property name="expand">True</property>
 +                                    <property name="fill">True</property>
 +                                    <property name="position">1</property>
 +                                  </packing>
                                  </child>
                                </object>
 +                              <packing>
 +                                <property name="expand">True</property>
 +                                <property name="fill">True</property>
 +                                <property name="position">0</property>
 +                              </packing>
                              </child>
                            </object>
 -                        </child>
 -                        <child type="label_item">
 -                          <placeholder/>
 -                        </child>
 -                      </object>
 -                      <packing>
 -                        <property name="position">2</property>
 -                      </packing>
 -                    </child>
 -                    <child type="tab">
 -                      <object class="GtkHBox" id="hbox8">
 -                        <property name="visible">True</property>
 -                        <property name="can_focus">False</property>
 -                        <child>
 -                          <object class="GtkImage" id="keypad_tab_icon">
 -                            <property name="visible">True</property>
 -                            <property name="can_focus">False</property>
 -                            <property name="stock">gtk-missing-image</property>
 -                            <property name="icon-size">1</property>
 -                          </object>
                            <packing>
 -                            <property name="expand">True</property>
 -                            <property name="fill">True</property>
 -                            <property name="position">0</property>
 +                            <property name="position">1</property>
                            </packing>
                          </child>
 -                        <child>
 -                          <object class="GtkLabel" id="label16">
 +                        <child type="tab">
 +                          <object class="GtkHBox" id="hbox6">
                              <property name="visible">True</property>
                              <property name="can_focus">False</property>
 -                            <property name="label" translatable="yes">Keypad</property>
 +                            <child>
 +                              <object class="GtkImage" id="history_tab_icon">
 +                                <property name="visible">True</property>
 +                                <property name="can_focus">False</property>
 +                                <property name="stock">gtk-refresh</property>
 +                                <property name="icon-size">1</property>
 +                              </object>
 +                              <packing>
 +                                <property name="expand">True</property>
 +                                <property name="fill">True</property>
 +                                <property name="position">0</property>
 +                              </packing>
 +                            </child>
 +                            <child>
 +                              <object class="GtkLabel" id="label3">
 +                                <property name="visible">True</property>
 +                                <property name="can_focus">False</property>
 +                                <property name="yalign">0.49000000953674316</property>
 +                                <property name="label" translatable="yes">Recent calls</property>
 +                              </object>
 +                              <packing>
 +                                <property name="expand">True</property>
 +                                <property name="fill">True</property>
 +                                <property name="position">1</property>
 +                              </packing>
 +                            </child>
                            </object>
                            <packing>
 -                            <property name="expand">True</property>
 -                            <property name="fill">True</property>
                              <property name="position">1</property>
 +                            <property name="tab_fill">False</property>
                            </packing>
                          </child>
 +                        <child>
 +                          <placeholder/>
 +                        </child>
 +                        <child type="tab">
 +                          <placeholder/>
 +                        </child>
                        </object>
                        <packing>
 -                        <property name="position">2</property>
 -                        <property name="tab_fill">False</property>
 +                        <property name="expand">True</property>
 +                        <property name="fill">True</property>
 +                        <property name="padding">4</property>
 +                        <property name="position">1</property>
                        </packing>
                      </child>
                    </object>
        </row>
      </data>
    </object>
 +  <object class="GtkImage" id="remove_image">
 +    <property name="visible">True</property>
 +    <property name="can_focus">False</property>
 +    <property name="tooltip_text" translatable="yes">Delete</property>
 +    <property name="stock">gtk-remove</property>
 +  </object>
  </interface>
diff --combined po/POTFILES.in
index 683f1492fdb1d2e53790933cf60b35a4cbd6e500,fdc209b3cd35d84849a6e9c11fdcfc7eecaf170e..1af3423bb9eff9d70c158f1f5fb704ce08876c70
@@@ -20,10 -20,12 +20,11 @@@ gtk/loginframe.
  [type: gettext/glade]gtk/call_logs.ui
  [type: gettext/glade]gtk/main.ui
  [type: gettext/glade]gtk/sip_account.ui
 -[type: gettext/glade]gtk/chatroom.ui
  [type: gettext/glade]gtk/parameters.ui
  [type: gettext/glade]gtk/buddylookup.ui
  [type: gettext/glade]gtk/waiting.ui
  [type: gettext/glade]gtk/dscp_settings.ui
+ [type: gettext/glade]gtk/call_statistics.ui
  [type: gettext/glade]gtk/tunnel_config.ui
  coreapi/linphonecore.c
  coreapi/misc.c