]> sjero.net Git - linphone/commitdiff
work in progress: chat, new ui blabla
authorMargaux Clerc <margaux.clerc@belledonne-communications>
Thu, 18 Oct 2012 13:03:14 +0000 (15:03 +0200)
committerMargaux Clerc <margaux.clerc@belledonne-communications>
Thu, 18 Oct 2012 13:03:14 +0000 (15:03 +0200)
20 files changed:
coreapi/chat.c
gtk/Makefile.am
gtk/chat.c
gtk/chatroom.ui [deleted file]
gtk/friendlist.c
gtk/incall_view.c
gtk/linphone.h
gtk/main.c
gtk/main.ui
pixmaps/Makefile.am
pixmaps/addcall-green.png
pixmaps/call.png [new file with mode: 0644]
pixmaps/chat.png [new file with mode: 0644]
pixmaps/hold_off.png
pixmaps/hold_on.png
pixmaps/mic_active.png
pixmaps/mic_muted.png
pixmaps/startcall-green.png
pixmaps/stopcall-red.png
po/POTFILES.in

index 941cce423c45c15a2f524fe737612f402345cd61..2aca72ff841d4d7820f47060c3d9d65716c7c995 100644 (file)
@@ -245,4 +245,4 @@ LinphoneChatMessage* linphone_chat_message_clone(const LinphoneChatMessage* msg)
        new_message->cb=msg->cb;
        if (msg->from) new_message->from=linphone_address_clone(msg->from);
        return new_message;
-}
\ No newline at end of file
+}
index ede08b900ce2696dca5211d897b85785e846420d..70d4de886ae6e879b58af74beb004613e44b741e 100644 (file)
@@ -4,7 +4,6 @@ UI_FILES=       about.ui \
                contact.ui \
                parameters.ui \
                sip_account.ui \
-               chatroom.ui \
                call_logs.ui \
                log.ui \
                buddylookup.ui \
index aa1e7dff677ab3d9c10741614a9d466111d8f9cf..c434e4a61334a83032e85c32f1635f6e9ef481f6 100644 (file)
@@ -24,38 +24,34 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #include <gtkosxapplication.h>
 #endif
 
-GtkWidget * linphone_gtk_init_chatroom(LinphoneChatRoom *cr, const char *with){
-       GtkWidget *w;
-       GtkTextBuffer *b;
-       gchar *tmp;
-       w=linphone_gtk_create_window("chatroom");
-       tmp=g_strdup_printf(_("Chat with %s"),with);
-       gtk_window_set_title(GTK_WINDOW(w),tmp);
-       g_free(tmp);
-       g_object_set_data(G_OBJECT(w),"cr",cr);
-       gtk_widget_show(w);
-       linphone_chat_room_set_user_data(cr,w);
-       b=gtk_text_view_get_buffer(GTK_TEXT_VIEW(linphone_gtk_get_widget(w,"textlog")));
-       gtk_text_buffer_create_tag(b,"blue","foreground","blue",NULL);
-       gtk_text_buffer_create_tag(b,"green","foreground","green",NULL);
-       return w;
+void linphone_gtk_quit_chatroom(LinphoneChatRoom *cr) {
+       GtkWidget *main_window=linphone_gtk_get_main_window ();
+       GtkWidget *w=linphone_gtk_get_widget(main_window,"chatroom_frame");
+       GtkWidget *nb=linphone_gtk_get_widget(main_window,"viewswitch");
+       int idx;
+       g_return_if_fail(w!=NULL);
+       idx=gtk_notebook_page_num(GTK_NOTEBOOK(nb),w);
+       gtk_notebook_remove_page (GTK_NOTEBOOK(nb),idx);
+       linphone_chat_room_set_user_data(cr,NULL);
+       gtk_widget_destroy(w);
 }
 
-void linphone_gtk_create_chatroom(const char *with){
+GtkWidget *create_tab_chat_header(LinphoneChatRoom *cr){
+       GtkWidget *w=gtk_hbox_new (FALSE,0);
+       GtkWidget *i=create_pixmap ("chat.png");
+       GtkWidget *l;
+       GtkWidget *b=gtk_button_new_with_label("x");
+       gtk_widget_set_size_request(b,20,20);
+       g_signal_connect_swapped(G_OBJECT(b),"clicked",G_CALLBACK(linphone_gtk_quit_chatroom),cr);
        
-       LinphoneChatRoom *cr=linphone_core_create_chat_room(linphone_gtk_get_core(),with);
-       if (!cr) return;
-       linphone_gtk_init_chatroom(cr,with);
-}
-
-void linphone_gtk_chat_destroyed(GtkWidget *w){
-       LinphoneChatRoom *cr=(LinphoneChatRoom*)g_object_get_data(G_OBJECT(w),"cr");
-       linphone_chat_room_destroy(cr);
-}
-
-void linphone_gtk_chat_close(GtkWidget *button){
-       GtkWidget *w=gtk_widget_get_toplevel(button);
-       gtk_widget_destroy(w);
+       gchar *text=g_strdup_printf("Chat ");
+       l=gtk_label_new (text);
+       gtk_box_pack_start (GTK_BOX(w),i,FALSE,FALSE,0);
+       gtk_box_pack_start (GTK_BOX(w),l,FALSE,FALSE,0);
+       gtk_box_pack_end(GTK_BOX(w),b,TRUE,TRUE,0);
+       gtk_widget_show_all(w);
+       
+       return w;
 }
 
 void linphone_gtk_push_text(GtkTextView *v, const char *from, const char *message, gboolean me){
@@ -69,7 +65,7 @@ void linphone_gtk_push_text(GtkTextView *v, const char *from, const char *messag
        gtk_text_buffer_insert(b,&iter,":\t",-1);
        gtk_text_buffer_get_end_iter(b,&iter);
        gtk_text_buffer_get_iter_at_offset(b,&begin,off);
-       gtk_text_buffer_apply_tag_by_name(b,me ? "green" : "blue" ,&begin,&iter);
+       //gtk_text_buffer_apply_tag_by_name(b,me ? "green" : "blue" ,&begin,&iter);
        gtk_text_buffer_insert(b,&iter,message,-1);
        gtk_text_buffer_get_end_iter(b,&iter);
        gtk_text_buffer_insert(b,&iter,"\n",-1);
@@ -82,27 +78,61 @@ void linphone_gtk_push_text(GtkTextView *v, const char *from, const char *messag
        //gtk_text_view_scroll_to_iter(v,&iter,0,TRUE,1.0,1.0);
 }
 
+/*void linphone_gtk_push_text_start(GtkTextView *v, const char *from, const char *message){
+       GtkTextBuffer *b=gtk_text_view_get_buffer(v);
+       GtkTextIter iter,begin;
+       int off;
+       gtk_text_buffer_get_end_iter(b,&iter);
+       off=gtk_text_iter_get_offset(&iter);
+       gtk_text_buffer_insert(b,&iter,from,-1);
+       gtk_text_buffer_get_end_iter(b,&iter);
+       gtk_text_buffer_insert(b,&iter,":\t",-1);
+       gtk_text_buffer_get_end_iter(b,&iter);
+       gtk_text_buffer_get_iter_at_offset(b,&begin,off);
+       //gtk_text_buffer_apply_tag_by_name(b,me ? "green" : "blue" ,&begin,&iter);
+       gtk_text_buffer_insert(b,&iter,message,-1);
+       gtk_text_buffer_get_end_iter(b,&iter);
+       gtk_text_buffer_insert(b,&iter,"\n",-1);
+       gtk_text_buffer_get_end_iter(b,&iter);
+       
+       //GtkTextMark *mark=gtk_text_buffer_create_mark(b,NULL,&iter,FALSE);
+       //gtk_text_view_scroll_mark_onscreen(v,mark);
+       //gtk_text_buffer_get_end_iter(b,&iter);
+       //gtk_text_iter_forward_to_line_end(&iter);
+       //gtk_text_view_scroll_to_iter(v,&iter,0,TRUE,1.0,1.0);
+}*/
+
 const char* linphone_gtk_get_used_identity(){
        LinphoneCore *lc=linphone_gtk_get_core();
        LinphoneProxyConfig *cfg;
        linphone_core_get_default_proxy(lc,&cfg);
-       if (cfg) return linphone_proxy_config_get_identity(cfg);
-       else return linphone_core_get_primary_contact(lc);
+       const char* display;
+       const LinphoneAddress* u;
+       if (cfg) {
+               u = linphone_address_new(linphone_proxy_config_get_identity(cfg));
+       } else {
+               u = linphone_core_get_primary_contact_parsed(lc);
+       }
+       display=linphone_address_get_display_name(u);
+       if (display==NULL || display[0]=='\0') {
+                       display=linphone_address_as_string(u);
+       }
+       return display;
 }
 
 static void on_chat_state_changed(LinphoneChatMessage *msg, LinphoneChatMessageState state, void *user_pointer){
        g_message("chat message state is %s",linphone_chat_message_state_to_string(state));
 }
 
-void linphone_gtk_send_text(GtkWidget *button){
-       GtkWidget *w=gtk_widget_get_toplevel(button);
-       GtkWidget *entry=linphone_gtk_get_widget(w,"text_entry");
-       LinphoneChatRoom *cr=(LinphoneChatRoom*)g_object_get_data(G_OBJECT(w),"cr");
+void linphone_gtk_send_text(LinphoneChatRoom *cr){
+       GtkWidget *chat_view=(GtkWidget*)linphone_chat_room_get_user_data(cr);
+       GtkWidget *entry= linphone_gtk_get_widget(chat_view,"text_entry");
        const gchar *entered;
        entered=gtk_entry_get_text(GTK_ENTRY(entry));
+       
        if (strlen(entered)>0) {
                LinphoneChatMessage *msg;
-               linphone_gtk_push_text(GTK_TEXT_VIEW(linphone_gtk_get_widget(w,"textlog")),
+               linphone_gtk_push_text(GTK_TEXT_VIEW(linphone_gtk_get_widget(chat_view,"textview")),
                                linphone_gtk_get_used_identity(),
                                entered,TRUE);
                msg=linphone_chat_room_create_message(cr,entered);
@@ -111,31 +141,98 @@ void linphone_gtk_send_text(GtkWidget *button){
        }
 }
 
+
+void linphone_gtk_init_chatroom(LinphoneChatRoom *cr, const char *with){
+       GtkWidget *chat_view=linphone_gtk_create_widget("main","chatroom_frame");
+       GtkWidget *main_window=linphone_gtk_get_main_window ();
+       GtkNotebook *notebook=(GtkNotebook *)linphone_gtk_get_widget(main_window,"viewswitch");
+       GtkTextBuffer *b;
+       int idx;
+
+       b=gtk_text_view_get_buffer(GTK_TEXT_VIEW(linphone_gtk_get_widget(chat_view,"textview")));
+       gtk_text_buffer_create_tag(b,"blue","foreground","blue",NULL);
+       gtk_text_buffer_create_tag(b,"green","foreground","green",NULL);
+       gtk_notebook_append_page (notebook,chat_view,create_tab_chat_header(cr));
+       idx = gtk_notebook_page_num(notebook, chat_view);
+       gtk_notebook_set_current_page(notebook, idx);
+       gtk_widget_show(chat_view);
+       g_object_set_data(G_OBJECT(chat_view),"cr",cr);
+       linphone_chat_room_set_user_data(cr,chat_view);
+       
+       //linphone_gtk_get_used_identity()
+       
+       GtkWidget *text=linphone_gtk_get_widget(chat_view,"textview");
+       gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW(text),GTK_WRAP_WORD);
+       //linphone_gtk_push_text(GTK_TEXT_VIEW(linphone_gtk_get_widget(chat_view,"textview")),NULL,
+       //                                              "Conversation avec moi",FALSE);
+       
+       //linphone_gtk_push_text(GTK_TEXT_VIEW(linphone_gtk_get_widget(chat_view,"textview")),with,
+       //                                              "Conversation avec ",FALSE);
+       
+       //Initialisation des signaux
+       GtkWidget *button = linphone_gtk_get_widget(chat_view,"send");
+       g_signal_connect_swapped(G_OBJECT(button),"clicked",(GCallback)linphone_gtk_send_text,cr);
+       
+       GtkWidget *entry = linphone_gtk_get_widget(chat_view,"text_entry");
+       g_signal_connect_swapped(G_OBJECT(entry),"activate",(GCallback)linphone_gtk_send_text,cr);
+}
+
+
+LinphoneChatRoom * linphone_gtk_create_chatroom(const char *with){
+       LinphoneChatRoom *cr=linphone_core_create_chat_room(linphone_gtk_get_core(),with);
+       if (!cr) return NULL;
+       linphone_gtk_init_chatroom(cr,with);
+       return cr;
+}
+
+void linphone_gtk_load_chatroom(LinphoneChatRoom *cr,const char* uri){
+       GtkWidget *w=(GtkWidget*)linphone_chat_room_get_user_data(cr);
+       if(w==NULL){
+               linphone_gtk_init_chatroom(cr, uri);
+       } else {
+               //TODO
+       }
+}
+
+void linphone_gtk_chat_destroyed(GtkWidget *w){
+       LinphoneChatRoom *cr=(LinphoneChatRoom*)g_object_get_data(G_OBJECT(w),"cr");
+       linphone_chat_room_destroy(cr);
+}
+
+void linphone_gtk_chat_close(GtkWidget *button){
+       GtkWidget *w=gtk_widget_get_toplevel(button);
+       gtk_widget_destroy(w);
+}
+
+
 void linphone_gtk_text_received(LinphoneCore *lc, LinphoneChatRoom *room, const LinphoneAddress *from, const char *message){
        GtkWidget *w=(GtkWidget*)linphone_chat_room_get_user_data(room);        
        if (w==NULL){           
-               w=linphone_gtk_init_chatroom(room,linphone_address_as_string_uri_only(from));
-               g_object_set_data(G_OBJECT(w),"is_notified",GINT_TO_POINTER(FALSE));
+               linphone_gtk_init_chatroom(room,linphone_address_as_string_uri_only(from));
+               w=(GtkWidget*)linphone_chat_room_get_user_data(room);
        }
 
        #ifdef HAVE_GTK_OSX
        /* Notified when a new message is sent */
        linphone_gtk_status_icon_set_blinking(TRUE);
        #else 
-       if (!gtk_window_is_active((GtkWindow*)w)){
-               if(!GPOINTER_TO_INT(g_object_get_data(G_OBJECT(w),"is_notified"))){
-                       linphone_gtk_notify(NULL,message);
-                       g_object_set_data(G_OBJECT(w),"is_notified",GINT_TO_POINTER(TRUE));
-               }
+       if(!GPOINTER_TO_INT(g_object_get_data(G_OBJECT(w),"is_notified"))){
+               linphone_gtk_notify(NULL,message);
+               g_object_set_data(G_OBJECT(w),"is_notified",GINT_TO_POINTER(TRUE));
        } else {
                g_object_set_data(G_OBJECT(w),"is_notified",GINT_TO_POINTER(FALSE));
        }
        #endif
        
-       linphone_gtk_push_text(GTK_TEXT_VIEW(linphone_gtk_get_widget(w,"textlog")),
-                               linphone_address_as_string_uri_only(from),
+       
+       const char* display = linphone_address_get_display_name(from);
+       if(display==NULL){
+               display = linphone_address_as_string(from);
+       }
+       linphone_gtk_push_text(GTK_TEXT_VIEW(linphone_gtk_get_widget(w,"textview")),
+                               display,
                                message,FALSE);
-       gtk_window_present(GTK_WINDOW(w));
+       //gtk_window_present(GTK_WINDOW(w));
        /*gtk_window_set_urgency_hint(GTK_WINDOW(w),TRUE);*/
 }
 
diff --git a/gtk/chatroom.ui b/gtk/chatroom.ui
deleted file mode 100644 (file)
index dc39271..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<interface>
-  <!-- interface-requires gtk+ 2.12 -->
-  <!-- interface-naming-policy toplevel-contextual -->
-  <object class="GtkWindow" id="chatroom">
-    <signal name="destroy" handler="linphone_gtk_chat_destroyed"/>
-    <child>
-      <object class="GtkVBox" id="vbox1">
-        <property name="visible">True</property>
-        <child>
-          <object class="GtkScrolledWindow" id="scrolledwindow1">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="hscrollbar_policy">never</property>
-            <property name="vscrollbar_policy">automatic</property>
-            <child>
-              <object class="GtkTextView" id="textlog">
-                <property name="width_request">400</property>
-                <property name="height_request">200</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="editable">False</property>
-                <property name="wrap_mode">word</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkHBox" id="hbox1">
-            <property name="visible">True</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>
-                <signal name="activate" handler="linphone_gtk_send_text"/>
-              </object>
-              <packing>
-                <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>
-                <signal name="clicked" handler="linphone_gtk_send_text"/>
-                <child>
-                  <object class="GtkHBox" id="hbox2">
-                    <property name="visible">True</property>
-                    <child>
-                      <object class="GtkImage" id="image1">
-                        <property name="visible">True</property>
-                        <property name="stock">gtk-ok</property>
-                      </object>
-                      <packing>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" id="label1">
-                        <property name="visible">True</property>
-                        <property name="label" translatable="yes">Send</property>
-                      </object>
-                      <packing>
-                        <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>
-        <child>
-          <object class="GtkHButtonBox" id="hbuttonbox1">
-            <property name="visible">True</property>
-            <property name="layout_style">end</property>
-            <child>
-              <object class="GtkButton" id="button1">
-                <property name="label">gtk-close</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-                <signal name="clicked" handler="linphone_gtk_chat_close"/>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="pack_type">end</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="position">2</property>
-          </packing>
-        </child>
-      </object>
-    </child>
-  </object>
-</interface>
index d5a056feff907b5bf5249e598d3084cf5e8747c7..114e931e9c342b54b5b94a9eab0d15e645747bee 100644 (file)
@@ -27,8 +27,11 @@ enum{
        FRIEND_NAME,
        FRIEND_PRESENCE_STATUS,
        FRIEND_ID,
+       FRIEND_CHATROOM,
        FRIEND_SIP_ADDRESS,
        FRIEND_ICON,
+       FRIEND_CALL,
+       FRIEND_CHAT,
        FRIEND_LIST_NCOL
 };
 
@@ -67,6 +70,18 @@ static GdkPixbuf *create_status_picture(LinphoneOnlineStatus ss){
        return NULL;
 }
 
+static GdkPixbuf *create_call_picture(){
+       GdkPixbuf *pixbuf;
+       pixbuf = create_pixbuf("call.png");
+       return pixbuf;
+}
+
+static GdkPixbuf *create_chat_picture(){
+       GdkPixbuf *pixbuf;
+       pixbuf = create_pixbuf("chat.png");
+       return pixbuf;
+}
+
 void linphone_gtk_set_friend_status(GtkWidget *friendlist , LinphoneFriend * fid, const gchar *url, const gchar *status, const gchar *img){
        GtkTreeIter iter;
        LinphoneFriend *tmp=0;
@@ -86,11 +101,9 @@ void linphone_gtk_set_friend_status(GtkWidget *friendlist , LinphoneFriend * fid
                                }
                        }
                }while(gtk_tree_model_iter_next(model,&iter));
-       }
-       
+       }       
 }
 
-
 static void linphone_gtk_set_selection_to_uri_bar(GtkTreeView *treeview){
        GtkTreeSelection *select;
        GtkTreeIter iter;
@@ -107,6 +120,46 @@ static void linphone_gtk_set_selection_to_uri_bar(GtkTreeView *treeview){
        }
 }
 
+void linphone_gtk_add_contact(){
+       GtkWidget *w=linphone_gtk_create_window("contact");
+       int presence_enabled=linphone_gtk_get_ui_config_int("use_subscribe_notify",1);
+       
+       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(linphone_gtk_get_widget(w,"show_presence")),presence_enabled);
+       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(linphone_gtk_get_widget(w,"allow_presence")),
+                                       presence_enabled);
+       gtk_widget_show(w);
+}
+
+void linphone_gtk_edit_contact(GtkWidget *button){
+       GtkWidget *w=gtk_widget_get_toplevel(button);
+       GtkTreeSelection *select;
+       GtkTreeIter iter;
+       GtkTreeModel *model;
+       LinphoneFriend *lf=NULL;
+       select = gtk_tree_view_get_selection(GTK_TREE_VIEW(linphone_gtk_get_widget(w,"contact_list")));
+       if (gtk_tree_selection_get_selected (select, &model, &iter))
+       {
+               gtk_tree_model_get (model, &iter,FRIEND_ID , &lf, -1);
+               linphone_gtk_show_contact(lf);
+       }
+}
+
+
+void linphone_gtk_remove_contact(GtkWidget *button){
+       GtkWidget *w=gtk_widget_get_toplevel(button);
+       GtkTreeSelection *select;
+       GtkTreeIter iter;
+       GtkTreeModel *model;
+       LinphoneFriend *lf=NULL;
+       select = gtk_tree_view_get_selection(GTK_TREE_VIEW(linphone_gtk_get_widget(w,"contact_list")));
+       if (gtk_tree_selection_get_selected (select, &model, &iter))
+       {
+               gtk_tree_model_get (model, &iter,FRIEND_ID , &lf, -1);
+               linphone_core_remove_friend(linphone_gtk_get_core(),lf);
+               linphone_gtk_show_friends();
+       }
+}
+
 static void linphone_gtk_call_selected(GtkTreeView *treeview){
        linphone_gtk_set_selection_to_uri_bar(treeview);
        linphone_gtk_start_call(linphone_gtk_get_widget(gtk_widget_get_toplevel(GTK_WIDGET(treeview)),
@@ -118,11 +171,25 @@ void linphone_gtk_contact_activated(GtkTreeView     *treeview,
                                     GtkTreeViewColumn *column,
                                         gpointer         user_data)
 {
-       linphone_gtk_call_selected(treeview);
+       //linphone_gtk_call_selected(treeview);
 }
 
 void linphone_gtk_contact_clicked(GtkTreeView     *treeview){
        linphone_gtk_set_selection_to_uri_bar(treeview);
+       
+}
+
+
+void linphone_gtk_add_button_clicked(void){
+       linphone_gtk_add_contact();
+}
+
+void linphone_gtk_edit_button_clicked(GtkWidget *button){
+       linphone_gtk_edit_contact(button);
+}
+
+void linphone_gtk_remove_button_clicked(GtkWidget *button){
+       linphone_gtk_remove_contact(button);
 }
 
 static GtkWidget * create_presence_menu(){
@@ -320,12 +387,12 @@ static int friend_compare_func(const LinphoneFriend *lf1, const LinphoneFriend *
        return w2-w1;
 }
 
-static gint friend_sort_with_presence(GtkTreeModel *model, GtkTreeIter *a,GtkTreeIter *b,gpointer user_data){
+/*static gint friend_sort_with_presence(GtkTreeModel *model, GtkTreeIter *a,GtkTreeIter *b,gpointer user_data){
        LinphoneFriend *lf1=NULL,*lf2=NULL;
        gtk_tree_model_get(model,a,FRIEND_ID,&lf1,-1);
        gtk_tree_model_get(model,b,FRIEND_ID,&lf2,-1);
        return friend_compare_func(lf1,lf2);
-}
+}*/
 
 
 static MSList *sort_friend_list(const MSList *friends){
@@ -352,43 +419,51 @@ static void on_presence_column_clicked(GtkTreeModel *model){
        gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(model),FRIEND_ID,st);
 }
 
-static void linphone_gtk_friend_list_init(GtkWidget *friendlist)
-{
+void create_button(){
+       GtkWidget *main_window = linphone_gtk_get_main_window ();
+       GtkWidget *button_add = linphone_gtk_get_widget(main_window,"add_button");
+       GtkWidget *image;
+       
+       image=gtk_image_new_from_stock(GTK_STOCK_ADD,GTK_ICON_SIZE_MENU);
+       gtk_container_add (GTK_CONTAINER (button_add), image); 
+}
+
+/* Creation of contact list*/
+static void linphone_gtk_friend_list_init(GtkWidget *friendlist){
        GtkListStore *store;
        GtkCellRenderer *renderer;
        GtkTreeViewColumn *column;
        GtkTreeSelection *select;
 
        linphone_gtk_init_bookmark_icon();
+
        
-       store = gtk_list_store_new(FRIEND_LIST_NCOL, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING,  G_TYPE_POINTER,
-                                       G_TYPE_STRING, GDK_TYPE_PIXBUF);
+       store = gtk_list_store_new(FRIEND_LIST_NCOL,GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING,  G_TYPE_POINTER, 
+                                                               G_TYPE_POINTER, G_TYPE_STRING, GDK_TYPE_PIXBUF, GDK_TYPE_PIXBUF, GDK_TYPE_PIXBUF);
 
        gtk_tree_view_set_model(GTK_TREE_VIEW(friendlist),GTK_TREE_MODEL(store));
        g_object_unref(G_OBJECT(store));
-
+       
+       /* Tree specification*/
+       gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(friendlist),FALSE);          
        gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(friendlist),friend_search_func,NULL,NULL);
        gtk_tree_view_set_search_column(GTK_TREE_VIEW(friendlist),FRIEND_NAME);
-
        gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(store),FRIEND_NAME,friend_sort,NULL,NULL);
-       gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(store),FRIEND_ID,friend_sort_with_presence,NULL,NULL);
        
-       renderer = gtk_cell_renderer_pixbuf_new ();
+       
+       /*Name and presence column*/
+       
+       renderer = gtk_cell_renderer_text_new ();
        column = gtk_tree_view_column_new_with_attributes (_("Name"),
                                                    renderer,
-                                                   "pixbuf", FRIEND_ICON,
-                                                   NULL);
+                                                   "text", FRIEND_NAME,NULL);
        g_object_set (G_OBJECT(column), "resizable", TRUE, NULL);
        g_signal_connect_swapped(G_OBJECT(column),"clicked",(GCallback)on_name_column_clicked,GTK_TREE_MODEL(store));
        gtk_tree_view_column_set_clickable(column,TRUE);
-       
-       renderer = gtk_cell_renderer_text_new ();
-       gtk_tree_view_column_pack_start(column,renderer,FALSE);
-       gtk_tree_view_column_add_attribute  (column,renderer,
-                                                         "text",
-                                                         FRIEND_NAME);
-       
-       gtk_tree_view_append_column (GTK_TREE_VIEW (friendlist), column);
+       gtk_tree_view_column_set_expand(column,TRUE);
+       gtk_tree_view_column_set_max_width(column,60);
+       gtk_tree_view_append_column (GTK_TREE_VIEW (friendlist), column); 
+
 
        column = gtk_tree_view_column_new_with_attributes (_("Presence status"),
                                                    renderer,
@@ -396,23 +471,38 @@ static void linphone_gtk_friend_list_init(GtkWidget *friendlist)
                                                    NULL);
        g_object_set (G_OBJECT(column), "resizable", TRUE, NULL);
        g_signal_connect_swapped(G_OBJECT(column),"clicked",(GCallback)on_presence_column_clicked,GTK_TREE_MODEL(store));
-       gtk_tree_view_column_set_clickable(column,TRUE);
+       gtk_tree_view_column_set_clickable(column,TRUE);        
        gtk_tree_view_column_set_visible(column,linphone_gtk_get_ui_config_int("friendlist_status",1));
        
        renderer = gtk_cell_renderer_pixbuf_new();
-       gtk_tree_view_column_pack_start(column,renderer,FALSE);
+       gtk_tree_view_column_pack_start(column,renderer,TRUE);
        gtk_tree_view_column_add_attribute  (column,renderer,
                                                          "pixbuf",
                                                          FRIEND_PRESENCE_IMG);
        gtk_tree_view_append_column (GTK_TREE_VIEW (friendlist), column);
 
+
+       /* Call column*/
+       renderer = gtk_cell_renderer_pixbuf_new();
+       column = gtk_tree_view_column_new_with_attributes (_("Call"),renderer,"pixbuf",FRIEND_CALL,NULL);
+       gtk_tree_view_append_column (GTK_TREE_VIEW (friendlist), column);
+       
+       /* chat column*/
+       renderer = gtk_cell_renderer_pixbuf_new();
+       column = gtk_tree_view_column_new_with_attributes (_("Chat"),renderer,"pixbuf",FRIEND_CHAT,NULL);
+       gtk_tree_view_append_column (GTK_TREE_VIEW (friendlist), column);                                       
+
        select = gtk_tree_view_get_selection (GTK_TREE_VIEW (friendlist));
        gtk_tree_selection_set_mode (select, GTK_SELECTION_SINGLE);
+       
+       gtk_tree_view_set_grid_lines(GTK_TREE_VIEW(friendlist),GTK_TREE_VIEW_GRID_LINES_NONE);
 #if GTK_CHECK_VERSION(2,12,0)
        gtk_tree_view_set_tooltip_column(GTK_TREE_VIEW(friendlist),FRIEND_SIP_ADDRESS);
 #endif
-       gtk_combo_box_set_active(GTK_COMBO_BOX(linphone_gtk_get_widget(
-                                       gtk_widget_get_toplevel(friendlist),"show_category")),0);
+       
+       gtk_widget_set_size_request(friendlist,200,100);
+       /*gtk_combo_box_set_active(GTK_COMBO_BOX(linphone_gtk_get_widget(
+                                       gtk_widget_get_toplevel(friendlist),"show_category")),0);*/
 }
 
 void linphone_gtk_show_directory_search(void){
@@ -468,18 +558,16 @@ void linphone_gtk_directory_search_button_clicked(GtkWidget *button){
                linphone_gtk_get_widget(gtk_widget_get_toplevel(button),"directory_search_entry"));
 }
 
-
 void linphone_gtk_show_friends(void){
        GtkWidget *mw=linphone_gtk_get_main_window();
        GtkWidget *friendlist=linphone_gtk_get_widget(mw,"contact_list");
        GtkListStore *store=NULL;
        GtkTreeIter iter;
        const MSList *itf;
-       GtkWidget *category=linphone_gtk_get_widget(mw,"show_category");
        GtkWidget *filter=linphone_gtk_get_widget(mw,"search_bar");
        LinphoneCore *core=linphone_gtk_get_core();
        const gchar *search=NULL;
-       gboolean online_only=FALSE,lookup=FALSE;
+       gboolean lookup=FALSE;
        MSList *sorted;
        
        linphone_gtk_show_directory_search();
@@ -490,7 +578,6 @@ void linphone_gtk_show_friends(void){
        store=GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(friendlist)));
        gtk_list_store_clear(store);
 
-       online_only=(gtk_combo_box_get_active(GTK_COMBO_BOX(category))==1);
        search=gtk_entry_get_text(GTK_ENTRY(filter));
        if (search==NULL || search[0]=='\0')
                lookup=FALSE;
@@ -511,60 +598,36 @@ void linphone_gtk_show_friends(void){
                                continue;
                        }
                }
-               if (!online_only || (linphone_friend_get_status(lf)!=LinphoneStatusOffline)){
-                       BuddyInfo *bi;
-                       gboolean send_subscribe=linphone_friend_get_send_subscribe(lf);
-                       if (name==NULL || name[0]=='\0') display=uri;
-                       gtk_list_store_append(store,&iter);
-                       gtk_list_store_set(store,&iter,FRIEND_NAME, display,
-                                       FRIEND_PRESENCE_STATUS, 
-                               send_subscribe ? linphone_online_status_to_string(linphone_friend_get_status(lf)) : "",
-                                       FRIEND_ID,lf,
-                               FRIEND_PRESENCE_IMG, send_subscribe ? create_status_picture(linphone_friend_get_status(lf)) : NULL,
-                               -1); 
-                       escaped=g_markup_escape_text(uri,-1);
-                       gtk_list_store_set(store,&iter,FRIEND_SIP_ADDRESS,escaped,-1);
-                       g_free(escaped);
-                       bi=linphone_friend_get_info(lf);
-                       if (bi!=NULL && bi->image_data!=NULL){
-                               GdkPixbuf *pbuf=
-                                       _gdk_pixbuf_new_from_memory_at_scale(bi->image_data,bi->image_length,-1,40,TRUE);
-                               if (pbuf) {
-                                       gtk_list_store_set(store,&iter,FRIEND_ICON,pbuf,-1);
-                                       g_object_unref(G_OBJECT(pbuf));
-                               }
-                       }
+               //BuddyInfo *bi;
+               gboolean send_subscribe=linphone_friend_get_send_subscribe(lf);
+               if (name==NULL || name[0]=='\0') {
+                       display=uri;
                }
+               gtk_list_store_append(store,&iter);
+               gtk_list_store_set(store,&iter,FRIEND_NAME, display,FRIEND_ID,lf,
+                           FRIEND_PRESENCE_IMG, send_subscribe ? create_status_picture(linphone_friend_get_status(lf)) : NULL,
+                           -1);
+
+               gtk_list_store_set(store,&iter,FRIEND_CALL,create_call_picture(),-1);
+               gtk_list_store_set(store,&iter,FRIEND_CHAT,create_chat_picture(),-1);   
+               escaped=g_markup_escape_text(uri,-1);
+               gtk_list_store_set(store,&iter,FRIEND_SIP_ADDRESS,escaped,-1);
+               g_free(escaped);
+               //bi=linphone_friend_get_info(lf);
+               /*if (bi!=NULL && bi->image_data!=NULL){
+                       GdkPixbuf *pbuf=
+                               _gdk_pixbuf_new_from_memory_at_scale(bi->image_data,bi->image_length,-1,40,TRUE);
+                       if (pbuf) {
+                               //gtk_list_store_set(store,&iter,FRIEND_ICON,pbuf,-1);
+                               g_object_unref(G_OBJECT(pbuf));
+                       }
+               }*/
                ms_free(uri);
        }
        ms_list_free(sorted);
 }
 
-void linphone_gtk_add_contact(){
-       GtkWidget *w=linphone_gtk_create_window("contact");
-       int presence_enabled=linphone_gtk_get_ui_config_int("use_subscribe_notify",1);
-       
-       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(linphone_gtk_get_widget(w,"show_presence")),presence_enabled);
-       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(linphone_gtk_get_widget(w,"allow_presence")),
-                                       presence_enabled);
-       gtk_widget_show(w);
-}
-
-void linphone_gtk_remove_contact(GtkWidget *button){
-       GtkWidget *w=gtk_widget_get_toplevel(button);
-       GtkTreeSelection *select;
-       GtkTreeIter iter;
-       GtkTreeModel *model;
-       LinphoneFriend *lf=NULL;
-       select = gtk_tree_view_get_selection(GTK_TREE_VIEW(linphone_gtk_get_widget(w,"contact_list")));
-       if (gtk_tree_selection_get_selected (select, &model, &iter))
-       {
-               gtk_tree_model_get (model, &iter,FRIEND_ID , &lf, -1);
-               linphone_core_remove_friend(linphone_gtk_get_core(),lf);
-               linphone_gtk_show_friends();
-       }
-}
-
 void linphone_gtk_show_contact(LinphoneFriend *lf){
        GtkWidget *w=linphone_gtk_create_window("contact");
        char *uri;
@@ -587,35 +650,46 @@ void linphone_gtk_show_contact(LinphoneFriend *lf){
        gtk_widget_show(w);
 }
 
-void linphone_gtk_edit_contact(GtkWidget *button){
-       GtkWidget *w=gtk_widget_get_toplevel(button);
-       GtkTreeSelection *select;
-       GtkTreeIter iter;
-       GtkTreeModel *model;
-       LinphoneFriend *lf=NULL;
-       select = gtk_tree_view_get_selection(GTK_TREE_VIEW(linphone_gtk_get_widget(w,"contact_list")));
-       if (gtk_tree_selection_get_selected (select, &model, &iter))
-       {
-               gtk_tree_model_get (model, &iter,FRIEND_ID , &lf, -1);
-               linphone_gtk_show_contact(lf);
-       }
+void linphone_gtk_init_chat(GtkWidget *w){
+       //LinphoneCore *lc=linphone_gtk_get_core();
+
+       //GtkWidget *mw=gtk_widget_get_toplevel(w);
+       //GtkWidget *uri_bar=linphone_gtk_get_widget(mw,"uribar");
+
+       //g_timeout_add(100,(GSourceFunc)linphone_gtk_start_call_do,uri_bar);
 }
 
+
 void linphone_gtk_chat_selected(GtkWidget *item){
+       linphone_gtk_init_chat(item);
+
        GtkWidget *w=gtk_widget_get_toplevel(item);
        GtkTreeSelection *select;
+       GtkListStore *store=NULL;
        GtkTreeIter iter;
        GtkTreeModel *model;
        LinphoneFriend *lf=NULL;
+       
        select = gtk_tree_view_get_selection(GTK_TREE_VIEW(linphone_gtk_get_widget(w,"contact_list")));
+       store=GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(item)));
+       LinphoneChatRoom *cr=NULL;
+
        if (gtk_tree_selection_get_selected (select, &model, &iter))
        {
+               gtk_tree_model_get(model,&iter,FRIEND_CHATROOM,&cr,-1);
                char *uri;
                gtk_tree_model_get (model, &iter,FRIEND_ID , &lf, -1);
                uri=linphone_address_as_string(linphone_friend_get_address(lf));
-               linphone_gtk_create_chatroom(uri);
+               fprintf(stdout,"uri %s\n",uri);
+               if(cr == NULL){
+                       
+                       LinphoneChatRoom *cr=linphone_gtk_create_chatroom(uri);
+                       gtk_list_store_set(store,&iter,FRIEND_CHATROOM,cr,-1);
+                       linphone_gtk_load_chatroom(cr,uri);
+               }
+               
                ms_free(uri);
-       }
+       }       
 }
 
 void linphone_gtk_contact_cancel(GtkWidget *button){
@@ -678,7 +752,7 @@ static GtkWidget *linphone_gtk_create_contact_menu(GtkWidget *contact_list){
        LinphoneCore *lc=linphone_gtk_get_core();
        LinphoneProxyConfig *cfg=NULL;
        SipSetupContext * ssc=NULL;
-
+       
        linphone_core_get_default_proxy(lc,&cfg);
        if (cfg){
                ssc=linphone_proxy_config_get_sip_setup_context(cfg);
@@ -767,11 +841,55 @@ gboolean linphone_gtk_popup_contact_menu(GtkWidget *list, GdkEventButton *event)
        return TRUE;
 }
 
+
+gint get_col_number_from_tree_view_column (GtkTreeViewColumn *col){
+    GList *cols;
+    gint   num;
+    g_return_val_if_fail ( col != NULL, -1 );
+    g_return_val_if_fail ( col->tree_view != NULL, -1 );
+    cols = gtk_tree_view_get_columns(GTK_TREE_VIEW(col->tree_view));
+    num = g_list_index(cols, (gpointer) col);
+    g_list_free(cols);
+
+    return num;
+}
+
+
+static gboolean tree_view_get_cell_from_pos(GtkTreeView *view, guint x, guint y){
+       GtkTreeViewColumn *col = NULL;
+       GList *node, *columns;
+       guint colx = 0;
+
+       g_return_val_if_fail ( view != NULL, FALSE );
+       columns = gtk_tree_view_get_columns(view);
+
+       for (node = columns;  node != NULL && col == NULL;  node = node->next)
+       {
+               GtkTreeViewColumn *checkcol = (GtkTreeViewColumn*) node->data;
+               if (x >= colx  &&  x < (colx + checkcol->width)){
+                       col = checkcol;
+                       gint num = get_col_number_from_tree_view_column(col);
+                       return num;
+               }
+               else
+                       colx += checkcol->width;
+       }
+       g_list_free(columns);
+       return 0;
+}
+
 gboolean linphone_gtk_contact_list_button_pressed(GtkWidget *widget, GdkEventButton *event){
        /* Ignore double-clicks and triple-clicks */
        if (event->button == 3 && event->type == GDK_BUTTON_PRESS)
        {
                return linphone_gtk_popup_contact_menu(widget, event);
+       } else if(event->button == 1 && event->type == GDK_BUTTON_PRESS){
+               gint numcol = tree_view_get_cell_from_pos(GTK_TREE_VIEW(widget),event->x,event->y);
+               if(numcol==2){
+                       linphone_gtk_call_selected(GTK_TREE_VIEW(widget));
+               } else if(numcol==3){
+                       linphone_gtk_chat_selected(widget);
+               }
        }
        return FALSE;
 }
index 7e8eb683f84c8ee7efc78fdfe5d8055a73465ddb..25ee2348a615051a665a73b680341308d9c744c9 100644 (file)
@@ -107,7 +107,6 @@ static void linphone_gtk_in_call_set_animation_spinner(GtkWidget *callview){
 #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);
@@ -141,8 +140,6 @@ static void transfer_button_clicked(GtkWidget *button, gpointer call_ref){
        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){
@@ -217,6 +214,13 @@ void linphone_gtk_create_in_call_view(LinphoneCall *call){
        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);
+
 }
 
 static void video_button_clicked(GtkWidget *button, LinphoneCall *call){
@@ -570,6 +574,8 @@ void linphone_gtk_in_call_view_terminate(LinphoneCall *call, const char *error_m
        
        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);
index 97a4400c75dbd180fbe019651a4b294f01256190..5c2df5ea5550e8f28d1c22ff886548ea90296993 100644 (file)
@@ -70,7 +70,7 @@ void linphone_gtk_show_parameters(void);
 void linphone_gtk_fill_soundcards(GtkWidget *pb);
 void linphone_gtk_fill_webcams(GtkWidget *pb);
 void linphone_gtk_load_identities(void);
-void linphone_gtk_create_chatroom(const char *with);
+LinphoneChatRoom * linphone_gtk_create_chatroom(const char *with);
 void linphone_gtk_text_received(LinphoneCore *lc, LinphoneChatRoom *room, const LinphoneAddress *from, const char *message);
 void linphone_gtk_call_log_update(GtkWidget *w);
 void linphone_gtk_create_log_window(void);
@@ -95,10 +95,15 @@ GtkWidget * linphone_gtk_show_buddy_lookup_window(SipSetupContext *ctx);
 void linphone_gtk_buddy_lookup_set_keyword(GtkWidget *w, const char *kw);
 void * linphone_gtk_wait(LinphoneCore *lc, void *ctx, LinphoneWaitingState ws, const char *purpose, float progress);
 
+void linphone_gtk_terminate_call(GtkWidget *button);
+
 void linphone_gtk_show_directory_search(void);
 
 void linphone_gtk_status_icon_set_blinking(gboolean val);
 void linphone_gtk_notify(LinphoneCall *call, const char *msg);
+LinphoneChatRoom *linphone_gtk_start_chat(GtkTreeView* t);
+void linphone_gtk_load_chatroom(LinphoneChatRoom *cr,const char* uri);
+void linphone_gtk_send_text(LinphoneChatRoom *cr);
 
 /*functions controlling the different views*/
 gboolean linphone_gtk_use_in_call_view();
index 1938032563aad51cb1ca011251802f40ac2b285c..0acbf6d481c7bd91f29c055f8ada2db3fdfa6297 100644 (file)
@@ -170,7 +170,6 @@ char *linphone_gtk_get_config_file(const char *filename){
        return config_file;
 }
 
-
 #define FACTORY_CONFIG_FILE "linphonerc.factory"
 static char _factory_config_file[1024];
 static const char *linphone_gtk_get_factory_config_file(){
@@ -481,6 +480,7 @@ static void set_video_window_decorations(GdkWindow *w){
        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,7 +688,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)
@@ -702,15 +701,15 @@ static void linphone_gtk_update_call_buttons(LinphoneCall *call){
        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;
        }
@@ -726,7 +725,7 @@ static void linphone_gtk_update_call_buttons(LinphoneCall *call){
        }
        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);
@@ -967,6 +966,7 @@ static void linphone_gtk_auth_info_requested(LinphoneCore *lc, const char *realm
 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,18 +1484,28 @@ static void linphone_gtk_configure_main_window(){
        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);
@@ -1518,12 +1528,6 @@ static void linphone_gtk_configure_main_window(){
                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);
index 9a458dbc0414b82b24bda7b73c0747c935d9f236..1b147fed4518929ea2b0cbbd98178ae0498a1dd3 100644 (file)
-<?xml version="1.0"?>
+<?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>
       <object class="GtkFrame" id="callee_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="GtkAlignment" id="conf_alignment1">
             <property name="visible">True</property>
+            <property name="can_focus">False</property>
             <property name="left_padding">12</property>
             <child>
               <object class="GtkHBox" id="conf_hbox3">
                 <property name="visible">True</property>
+                <property name="can_focus">False</property>
                 <child>
                   <object class="GtkHBox" id="conf_hbox1">
                     <property name="visible">True</property>
-                    <child>
-                      <object class="GtkButton" id="conference_control">
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
+                    <property name="can_focus">False</property>
                     <child>
                       <object class="GtkLabel" id="callee_name_label">
                         <property name="visible">True</property>
+                        <property name="can_focus">False</property>
                         <property name="label" translatable="yes">&lt;b&gt;Callee name&lt;/b&gt;</property>
                         <property name="use_markup">True</property>
                         <property name="justify">right</property>
                         <property name="ellipsize">end</property>
                       </object>
                       <packing>
+                        <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="GtkButton" id="conference_control">
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <property name="use_action_appearance">False</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</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>
                     <property name="width_request">170</property>
                     <property name="height_request">30</property>
                     <property name="visible">True</property>
+                    <property name="can_focus">False</property>
                   </object>
                   <packing>
                     <property name="expand">False</property>
     </child>
   </object>
   <object class="GtkWindow" id="dummy_in_call_window">
+    <property name="can_focus">False</property>
     <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 class="GtkAlignment" id="alignment1">
             <property name="visible">True</property>
+            <property name="can_focus">False</property>
             <property name="left_padding">12</property>
             <property name="right_padding">12</property>
             <child>
               <object class="GtkVBox" id="vbox3">
                 <property name="visible">True</property>
+                <property name="can_focus">False</property>
                 <child>
                   <object class="GtkVBox" id="in_call_animation">
                     <property name="visible">True</property>
+                    <property name="can_focus">False</property>
                     <child>
                       <placeholder/>
                     </child>
                 <child>
                   <object class="GtkLabel" id="in_call_uri">
                     <property name="visible">True</property>
+                    <property name="can_focus">False</property>
                     <property name="label" translatable="yes">label</property>
                     <property name="justify">center</property>
                   </object>
                   <packing>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
                     <property name="position">1</property>
                   </packing>
                 </child>
                 <child>
                   <object class="GtkHBox" id="encryption_box">
+                    <property name="can_focus">False</property>
                     <child>
                       <object class="GtkImage" id="image121">
                         <property name="visible">True</property>
+                        <property name="can_focus">False</property>
                         <property name="stock">gtk-dialog-authentication</property>
                         <property name="icon-size">1</property>
                       </object>
                     <child>
                       <object class="GtkImage" id="encryption_status_icon">
                         <property name="visible">True</property>
+                        <property name="can_focus">False</property>
                         <property name="stock">gtk-apply</property>
                       </object>
                       <packing>
                     <child>
                       <object class="GtkLabel" id="encryption_label">
                         <property name="visible">True</property>
+                        <property name="can_focus">False</property>
                         <property name="label" translatable="yes">label</property>
                       </object>
                       <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
                         <property name="position">2</property>
                       </packing>
                     </child>
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="receives_default">True</property>
-                        <signal name="clicked" handler="linphone_gtk_auth_token_verified_clicked"/>
+                        <property name="use_action_appearance">False</property>
+                        <signal name="clicked" handler="linphone_gtk_auth_token_verified_clicked" swapped="no"/>
                       </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">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>
                         <property name="receives_default">True</property>
+                        <property name="use_action_appearance">False</property>
                         <property name="relief">half</property>
-                        <signal name="clicked" handler="linphone_gtk_mute_clicked"/>
+                        <signal name="clicked" handler="linphone_gtk_mute_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="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>
                         <property name="expand">False</property>
                       </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="stock">gtk-missing-image</property>
-                        <property name="icon-size">1</property>
+                        <property name="can_focus">False</property>
                       </object>
                       <packing>
+                        <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>
                 <child>
                   <object class="GtkHButtonBox" id="answer_decline_panel">
+                    <property name="can_focus">False</property>
                     <property name="layout_style">spread</property>
                     <child>
                       <object class="GtkButton" id="accept_call">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="receives_default">True</property>
-                        <signal name="clicked" handler="linphone_gtk_answer_clicked"/>
+                        <property name="use_action_appearance">False</property>
+                        <signal name="clicked" handler="linphone_gtk_answer_clicked" swapped="no"/>
                       </object>
                       <packing>
                         <property name="expand">False</property>
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="receives_default">True</property>
-                        <signal name="clicked" handler="linphone_gtk_decline_clicked"/>
+                        <property name="use_action_appearance">False</property>
+                        <signal name="clicked" handler="linphone_gtk_decline_clicked" swapped="no"/>
                       </object>
                       <packing>
                         <property name="expand">False</property>
                 <child>
                   <object class="GtkHButtonBox" id="mute_pause_buttons">
                     <property name="visible">True</property>
+                    <property name="can_focus">False</property>
                     <property name="homogeneous">True</property>
                     <property name="layout_style">spread</property>
                     <child>
                         <property name="label" translatable="yes">Pause</property>
                         <property name="can_focus">True</property>
                         <property name="receives_default">True</property>
-                        <signal name="clicked" handler="linphone_gtk_hold_clicked"/>
+                        <property name="use_action_appearance">False</property>
+                        <signal name="clicked" handler="linphone_gtk_hold_clicked" swapped="no"/>
                       </object>
                       <packing>
                         <property name="expand">False</property>
                         <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>
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="receives_default">True</property>
+                        <property name="use_action_appearance">False</property>
                       </object>
                       <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 type="label">
           <object class="GtkHBox" id="heading_box">
             <property name="visible">True</property>
+            <property name="can_focus">False</property>
             <property name="homogeneous">True</property>
             <child>
               <object class="GtkLabel" id="in_call_status">
                 <property name="visible">True</property>
+                <property name="can_focus">False</property>
                 <property name="label" translatable="yes">In call</property>
                 <property name="use_markup">True</property>
                 <property name="justify">center</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="in_call_duration">
                 <property name="visible">True</property>
+                <property name="can_focus">False</property>
                 <property name="label" translatable="yes">Duration</property>
                 <property name="justify">center</property>
               </object>
               <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
                 <property name="position">1</property>
               </packing>
             </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="tooltip_text" translatable="yes">Call quality rating</property>
               </object>
               <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
                 <property name="position">2</property>
               </packing>
             </child>
       </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>
     <property name="stock">gtk-info</property>
   </object>
   <object class="GtkImage" id="image10">
     <property name="visible">True</property>
+    <property name="can_focus">False</property>
     <property name="stock">gtk-add</property>
   </object>
   <object class="GtkImage" id="image11">
     <property name="visible">True</property>
+    <property name="can_focus">False</property>
     <property name="stock">gtk-clear</property>
   </object>
   <object class="GtkImage" id="image12">
     <property name="visible">True</property>
+    <property name="can_focus">False</property>
     <property name="stock">gtk-connect</property>
   </object>
   <object class="GtkImage" id="image2">
     <property name="visible">True</property>
+    <property name="can_focus">False</property>
     <property name="stock">gtk-refresh</property>
   </object>
   <object class="GtkImage" id="image3">
     <property name="visible">True</property>
+    <property name="can_focus">False</property>
     <property name="stock">gtk-properties</property>
   </object>
   <object class="GtkImage" id="image4">
     <property name="visible">True</property>
+    <property name="can_focus">False</property>
     <property name="stock">gtk-home</property>
   </object>
   <object class="GtkImage" id="image5">
     <property name="visible">True</property>
+    <property name="can_focus">False</property>
     <property name="stock">gtk-execute</property>
   </object>
   <object class="GtkImage" id="image6">
     <property name="visible">True</property>
+    <property name="can_focus">False</property>
     <property name="stock">gtk-add</property>
   </object>
   <object class="GtkImage" id="image7">
     <property name="visible">True</property>
+    <property name="can_focus">False</property>
     <property name="stock">gtk-add</property>
   </object>
   <object class="GtkImage" id="image8">
     <property name="visible">True</property>
+    <property name="can_focus">False</property>
     <property name="stock">gtk-add</property>
   </object>
   <object class="GtkImage" id="image9">
     <property name="visible">True</property>
+    <property name="can_focus">False</property>
     <property name="stock">gtk-add</property>
   </object>
-  <object class="GtkListStore" id="model1">
-    <columns>
-      <!-- column-name gchararray -->
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0" translatable="yes">All users</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Online users</col>
-      </row>
-    </data>
-  </object>
-  <object class="GtkListStore" id="model2">
-    <columns>
-      <!-- column-name gchararray -->
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0" translatable="yes">ADSL</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Fiber Channel</col>
-      </row>
-    </data>
-  </object>
-  <object class="GtkListStore" id="model3">
-    <columns>
-      <!-- column-name gchararray -->
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0" translatable="yes">Default</col>
-      </row>
-    </data>
-  </object>
-  <object class="GtkListStore" id="model4">
-    <columns>
-      <!-- column-name gchararray -->
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0" translatable="yes">ADSL</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Fiber Channel</col>
-      </row>
-    </data>
-  </object>
   <object class="GtkWindow" id="main">
+    <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="vbox2">
         <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="GtkMenuBar" id="menubar1">
             <property name="visible">True</property>
+            <property name="can_focus">False</property>
             <child>
               <object class="GtkMenuItem" id="options_menu">
                 <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="use_action_appearance">False</property>
                 <property name="label" translatable="yes">_Options</property>
                 <property name="use_underline">True</property>
-                <signal name="activate" handler="linphone_gtk_options_activate"/>
+                <signal name="activate" handler="linphone_gtk_options_activate" swapped="no"/>
                 <child type="submenu">
                   <object class="GtkMenu" id="menu2">
                     <property name="visible">True</property>
+                    <property name="can_focus">False</property>
                     <child>
                       <object class="GtkImageMenuItem" id="settings_menu">
                         <property name="label">gtk-preferences</property>
                         <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="use_action_appearance">False</property>
                         <property name="use_underline">True</property>
                         <property name="use_stock">True</property>
-                        <signal name="activate" handler="linphone_gtk_show_parameters"/>
+                        <signal name="activate" handler="linphone_gtk_show_parameters" swapped="no"/>
                       </object>
                     </child>
                     <child>
                       <object class="GtkImageMenuItem" id="disconnect_item">
                         <property name="label">gtk-disconnect</property>
+                        <property name="can_focus">False</property>
+                        <property name="use_action_appearance">False</property>
                         <property name="use_underline">True</property>
                         <property name="use_stock">True</property>
-                        <signal name="activate" handler="linphone_gtk_logout_clicked"/>
+                        <signal name="activate" handler="linphone_gtk_logout_clicked" swapped="no"/>
                       </object>
                     </child>
                     <child>
                       <object class="GtkSeparatorMenuItem" id="separatormenuitem1">
                         <property name="visible">True</property>
+                        <property name="can_focus">False</property>
                       </object>
                     </child>
                     <child>
                       <object class="GtkCheckMenuItem" id="enable_video_item">
                         <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="use_action_appearance">False</property>
                         <property name="label" translatable="yes">Always start video</property>
                         <property name="use_underline">True</property>
-                        <signal name="toggled" handler="linphone_gtk_enable_video"/>
+                        <signal name="toggled" handler="linphone_gtk_enable_video" swapped="no"/>
                       </object>
                     </child>
                     <child>
                       <object class="GtkCheckMenuItem" id="selfview_item">
                         <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="use_action_appearance">False</property>
                         <property name="label" translatable="yes">Enable self-view</property>
                         <property name="use_underline">True</property>
                         <property name="active">True</property>
-                        <signal name="toggled" handler="linphone_gtk_enable_self_view"/>
+                        <signal name="toggled" handler="linphone_gtk_enable_self_view" swapped="no"/>
                       </object>
                     </child>
                     <child>
                       <object class="GtkSeparatorMenuItem" id="separatormenuitem2">
                         <property name="visible">True</property>
+                        <property name="can_focus">False</property>
                       </object>
                     </child>
                     <child>
                       <object class="GtkImageMenuItem" id="quit_item">
                         <property name="label">gtk-quit</property>
+                        <property name="can_focus">False</property>
+                        <property name="use_action_appearance">False</property>
                         <property name="use_underline">True</property>
                         <property name="use_stock">True</property>
-                        <signal name="activate" handler="gtk_main_quit"/>
+                        <signal name="activate" handler="gtk_main_quit" swapped="no"/>
                       </object>
                     </child>
                   </object>
             <child>
               <object class="GtkMenuItem" id="menuitem4">
                 <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="use_action_appearance">False</property>
                 <property name="label" translatable="yes">_Help</property>
                 <property name="use_underline">True</property>
                 <child type="submenu">
                   <object class="GtkMenu" id="menu3">
                     <property name="visible">True</property>
+                    <property name="can_focus">False</property>
                     <child>
                       <object class="GtkImageMenuItem" id="imagemenuitem10">
                         <property name="label">gtk-about</property>
                         <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="use_action_appearance">False</property>
                         <property name="use_underline">True</property>
                         <property name="use_stock">True</property>
-                        <signal name="activate" handler="linphone_gtk_show_about"/>
+                        <signal name="activate" handler="linphone_gtk_show_about" swapped="no"/>
                       </object>
                     </child>
                     <child>
                       <object class="GtkImageMenuItem" id="logs_item">
                         <property name="label" translatable="yes">Show debug window</property>
                         <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="use_action_appearance">False</property>
                         <property name="image">image1</property>
                         <property name="use_stock">False</property>
-                        <signal name="activate" handler="linphone_gtk_log_show"/>
+                        <signal name="activate" handler="linphone_gtk_log_show" swapped="no"/>
                       </object>
                     </child>
                     <child>
                       <object class="GtkImageMenuItem" id="home_item">
                         <property name="label" translatable="yes">_Homepage</property>
                         <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="use_action_appearance">False</property>
                         <property name="use_underline">True</property>
                         <property name="image">image4</property>
                         <property name="use_stock">False</property>
-                        <signal name="activate" handler="linphone_gtk_link_to_website"/>
+                        <signal name="activate" handler="linphone_gtk_link_to_website" swapped="no"/>
                       </object>
                     </child>
                     <child>
                       <object class="GtkImageMenuItem" id="versioncheck_item">
                         <property name="label" translatable="yes">Check _Updates</property>
+                        <property name="can_focus">False</property>
+                        <property name="use_action_appearance">False</property>
                         <property name="use_underline">True</property>
                         <property name="image">image5</property>
                         <property name="use_stock">False</property>
-                        <signal name="activate" handler="linphone_gtk_check_for_new_version"/>
+                        <signal name="activate" handler="linphone_gtk_check_for_new_version" swapped="no"/>
                       </object>
                     </child>
                     <child>
                       <object class="GtkImageMenuItem" id="assistant_item">
                         <property name="label" translatable="yes">Account assistant</property>
+                        <property name="can_focus">False</property>
+                        <property name="use_action_appearance">False</property>
                         <property name="image">image12</property>
                         <property name="use_stock">False</property>
-                        <signal name="activate" handler="linphone_gtk_display_wizard"/>
+                        <signal name="activate" handler="linphone_gtk_display_wizard" swapped="no"/>
                       </object>
                     </child>
                   </object>
           </object>
           <packing>
             <property name="expand">False</property>
+            <property name="fill">True</property>
             <property name="position">0</property>
           </packing>
         </child>
         <child>
           <object class="GtkHBox" id="hbox1">
             <property name="visible">True</property>
+            <property name="can_focus">False</property>
             <child>
               <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>
-                    <child>
-                      <object class="GtkButton" id="start_call">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">True</property>
-                        <signal name="clicked" handler="linphone_gtk_start_call"/>
-                      </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>
-                        <signal name="clicked" handler="linphone_gtk_start_call"/>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
+                    <property name="can_focus">False</property>
                     <child>
                       <object class="GtkFrame" id="frame4">
                         <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_xalign">0</property>
                         <property name="shadow_type">none</property>
                         <child>
                           <object class="GtkAlignment" id="alignment4">
                             <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="left_padding">5</property>
                             <property name="right_padding">5</property>
                             <child>
                               <object class="GtkHBox" id="hbox3">
                                 <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="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">&#x25CF;</property>
-                                    <signal name="activate" handler="linphone_gtk_uri_bar_activate"/>
+                                    <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_uri_bar_activate" swapped="no"/>
                                   </object>
                                   <packing>
+                                    <property name="expand">True</property>
+                                    <property name="fill">True</property>
                                     <property name="position">0</property>
                                   </packing>
                                 </child>
                         <child type="label">
                           <object class="GtkLabel" id="label9">
                             <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">SIP address or phone number:</property>
                             <property name="use_markup">True</property>
                         </child>
                       </object>
                       <packing>
-                        <property name="position">2</property>
+                        <property name="expand">True</property>
+                        <property name="fill">True</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>
-                        <signal name="clicked" handler="linphone_gtk_terminate_call"/>
+                        <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">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>
+                    <property name="fill">True</property>
                     <property name="padding">8</property>
                     <property name="position">0</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="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="can_focus">False</property>
                         <child>
-                          <object class="GtkVBox" id="vbox7">
+                          <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="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>
-                                <child>
-                                  <object class="GtkLabel" id="label2">
-                                    <property name="visible">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="label" translatable="yes">Lookup:</property>
-                                  </object>
-                                  <packing>
-                                    <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">&#x25CF;</property>
-                                    <property name="invisible_char_set">True</property>
-                                    <signal name="changed" handler="linphone_gtk_show_friends"/>
-                                  </object>
-                                  <packing>
-                                    <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="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="padding">8</property>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkComboBox" id="show_category">
-                                    <property name="visible">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="model">model1</property>
-                                    <property name="active">0</property>
-                                    <signal name="changed" handler="linphone_gtk_show_friends"/>
-                                    <child>
-                                      <object class="GtkCellRendererText" id="renderer1"/>
-                                      <attributes>
-                                        <attribute name="text">0</attribute>
-                                      </attributes>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <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>
+                            </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"/>
-                                    <signal name="cursor_changed" handler="linphone_gtk_contact_clicked"/>
-                                    <signal name="row_activated" handler="linphone_gtk_contact_activated"/>
-                                    <signal name="popup_menu" handler="linphone_gtk_popup_contact_menu"/>
-                                  </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">False</property>
+                                <property name="fill">False</property>
                                 <property name="position">1</property>
                               </packing>
                             </child>
                             <child>
-                              <object class="GtkFrame" id="directory_search_box">
-                                <property name="label_xalign">0</property>
-                                <property name="shadow_type">none</property>
+                              <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="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">
-                                    <child>
-                                      <object class="GtkEntry" id="directory_search_entry">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="invisible_char">&#x25CF;</property>
-                                        <property name="invisible_char_set">True</property>
-                                        <signal name="activate" handler="linphone_gtk_directory_search_activate"/>
-                                        <signal name="icon_press" handler="linphone_gtk_directory_search_activate"/>
-                                        <signal name="focus_in_event" handler="linphone_gtk_directory_search_focus_in"/>
-                                        <signal name="focus_out_event" handler="linphone_gtk_directory_search_focus_out"/>
-                                      </object>
-                                      <packing>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </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="GtkButton" id="directory_search_button">
+                                      <object class="GtkAlignment" id="alignment5">
                                         <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="receives_default">True</property>
-                                        <property name="relief">none</property>
-                                        <signal name="clicked" handler="linphone_gtk_directory_search_button_clicked"/>
+                                        <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="stock">gtk-find</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>
+                                                <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="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="label" translatable="yes">Search</property>
+                                                <property name="can_focus">False</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="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="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">
-                                    <property name="visible">True</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>
                                 <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="image">image10</property>
-                                    <signal name="clicked" handler="linphone_gtk_add_contact"/>
+                                  <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"/>
+                                      </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="position">0</property>
-                          </packing>
-                        </child>
-                      </object>
-                    </child>
-                    <child type="tab">
-                      <object class="GtkHBox" id="hbox2">
-                        <property name="visible">True</property>
-                        <child>
-                          <object class="GtkImage" id="contact_tab_icon">
-                            <property name="visible">True</property>
-                            <property name="stock">gtk-directory</property>
-                            <property name="icon-size">1</property>
-                          </object>
-                          <packing>
-                            <property name="position">0</property>
-                          </packing>
                         </child>
-                        <child>
-                          <object class="GtkLabel" id="label15">
-                            <property name="visible">True</property>
-                            <property name="label" translatable="yes">Contacts</property>
-                          </object>
-                          <packing>
-                            <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>
-                        <child>
-                          <object class="GtkVBox" id="call_logs_box">
+                        <child type="tab">
+                          <object class="GtkHBox" id="hbox2">
                             <property name="visible">True</property>
-                            <property name="spacing">2</property>
+                            <property name="can_focus">False</property>
                             <child>
-                              <object class="GtkScrolledWindow" id="scrolledwindow2">
+                              <object class="GtkImage" id="keypad_tab_icon">
                                 <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"/>
-                                    <signal name="row_activated" handler="linphone_gtk_history_row_activated"/>
-                                  </object>
-                                </child>
+                                <property name="can_focus">False</property>
+                                <property name="stock">gtk-missing-image</property>
+                                <property name="icon-size">1</property>
                               </object>
                               <packing>
-                                <property name="position">1</property>
+                                <property name="expand">True</property>
+                                <property name="fill">True</property>
+                                <property name="position">0</property>
                               </packing>
                             </child>
                             <child>
-                              <object class="GtkHButtonBox" id="dialog-action_area1">
+                              <object class="GtkLabel" id="Keypad">
                                 <property name="visible">True</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_stock">True</property>
-                                    <signal name="clicked" handler="linphone_gtk_clear_call_logs"/>
-                                  </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="can_focus">False</property>
+                                <property name="label" translatable="yes">Keypad</property>
                               </object>
                               <packing>
-                                <property name="expand">False</property>
-                                <property name="pack_type">end</property>
-                                <property name="position">0</property>
+                                <property name="expand">True</property>
+                                <property name="fill">True</property>
+                                <property name="position">1</property>
                               </packing>
                             </child>
                           </object>
                           <packing>
-                            <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>
-                        <child>
-                          <object class="GtkImage" id="history_tab_icon">
-                            <property name="visible">True</property>
-                            <property name="stock">gtk-refresh</property>
-                            <property name="icon-size">1</property>
-                          </object>
-                          <packing>
-                            <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="yalign">0.49000000953674316</property>
-                            <property name="label" translatable="yes">Recent calls</property>
-                          </object>
-                          <packing>
-                            <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="label_xalign">0.5</property>
-                        <property name="shadow_type">none</property>
-                        <child>
-                          <object class="GtkAlignment" id="alignment5">
-                            <property name="visible">True</property>
-                            <property name="xscale">0</property>
-                            <property name="yscale">0</property>
+                            <property name="can_focus">False</property>
                             <child>
-                              <object class="GtkAspectFrame" id="aspectframe1">
+                              <object class="GtkVBox" id="call_logs_box">
                                 <property name="visible">True</property>
-                                <property name="label_xalign">0</property>
+                                <property name="can_focus">False</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="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>
-                                      </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>
-                                      </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>
-                                      </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>
-                                      </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>
-                                      </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>
-                                      </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>
+                                    <property name="can_focus">False</property>
+                                    <property name="layout_style">end</property>
                                     <child>
-                                      <object class="GtkButton" id="dtmf_8">
-                                        <property name="label" translatable="yes">8</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">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>
-                                      </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>
-                                      </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>
-                                      </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>
-                                      </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>
-                                      </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>
-                                      </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>
-                                      </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>
-                                      </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="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>
-                        <child>
-                          <object class="GtkImage" id="keypad_tab_icon">
-                            <property name="visible">True</property>
-                            <property name="stock">gtk-missing-image</property>
-                            <property name="icon-size">1</property>
-                          </object>
                           <packing>
-                            <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="label" translatable="yes">Keypad</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>
+                              </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="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>
                   <packing>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
                     <property name="position">1</property>
                   </packing>
                 </child>
                 <child>
                   <object class="GtkFrame" id="identity_frame">
                     <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_xalign">0</property>
                     <property name="shadow_type">none</property>
                     <child>
                       <object class="GtkComboBox" id="identities">
                         <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">model3</property>
                         <property name="active">0</property>
-                        <signal name="changed" handler="linphone_gtk_used_identity_changed"/>
+                        <signal name="changed" handler="linphone_gtk_used_identity_changed" swapped="no"/>
                         <child>
                           <object class="GtkCellRendererText" id="renderer3"/>
                           <attributes>
                     <child type="label">
                       <object class="GtkHBox" id="hbox7">
                         <property name="visible">True</property>
+                        <property name="can_focus">False</property>
                         <property name="spacing">5</property>
                         <child>
                           <object class="GtkLabel" id="label17">
                             <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">My current identity:</property>
                             <property name="use_markup">True</property>
                           </object>
                           <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
                             <property name="position">0</property>
                           </packing>
                         </child>
                           <object class="GtkButton" id="proxy_refresh_button">
                             <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="on_proxy_refresh_button_clicked"/>
+                            <signal name="clicked" handler="on_proxy_refresh_button_clicked" swapped="no"/>
                             <child>
                               <object class="GtkImage" id="image20">
                                 <property name="visible">True</property>
+                                <property name="can_focus">False</property>
                                 <property name="stock">gtk-refresh</property>
                               </object>
                             </child>
                           </object>
                           <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
                             <property name="position">1</property>
                           </packing>
                         </child>
                 </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="login_frame">
+                <property name="can_focus">False</property>
                 <property name="label_xalign">0</property>
                 <property name="shadow_type">etched-out</property>
                 <child>
                   <object class="GtkAlignment" id="alignment2">
                     <property name="visible">True</property>
+                    <property name="can_focus">False</property>
                     <property name="left_padding">12</property>
                     <child>
                       <object class="GtkVBox" id="vbox1">
                         <property name="visible">True</property>
+                        <property name="can_focus">False</property>
                         <child>
                           <object class="GtkImage" id="login_image">
                             <property name="visible">True</property>
+                            <property name="can_focus">False</property>
                             <property name="stock">gtk-missing-image</property>
                           </object>
                           <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
                             <property name="position">0</property>
                           </packing>
                         </child>
                         <child>
                           <object class="GtkFrame" id="frame5">
                             <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="GtkAlignment" id="alignment3">
                                 <property name="visible">True</property>
+                                <property name="can_focus">False</property>
                                 <property name="left_padding">12</property>
                                 <property name="right_padding">12</property>
                                 <child>
                                   <object class="GtkTable" id="table1">
                                     <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
                                     <property name="n_rows">4</property>
                                     <property name="n_columns">2</property>
                                     <child>
                                       <object class="GtkLabel" id="label8">
                                         <property name="visible">True</property>
+                                        <property name="can_focus">False</property>
                                         <property name="label" translatable="yes">Username</property>
                                       </object>
                                     </child>
                                     <child>
                                       <object class="GtkLabel" id="label10">
                                         <property name="visible">True</property>
+                                        <property name="can_focus">False</property>
                                         <property name="label" translatable="yes">Password</property>
                                       </object>
                                       <packing>
                                     <child>
                                       <object class="GtkLabel" id="label13">
                                         <property name="visible">True</property>
+                                        <property name="can_focus">False</property>
                                         <property name="label" translatable="yes">Internet connection:</property>
                                       </object>
                                       <packing>
                                       <object class="GtkEntry" id="login_username">
                                         <property name="visible">True</property>
                                         <property name="can_focus">True</property>
-                                        <property name="invisible_char">&#x25CF;</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="left_attach">1</property>
                                         <property name="visible">True</property>
                                         <property name="can_focus">True</property>
                                         <property name="visibility">False</property>
-                                        <property name="invisible_char">&#x25CF;</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="left_attach">1</property>
                                     <child>
                                       <object class="GtkComboBox" id="login_internet_kind">
                                         <property name="visible">True</property>
+                                        <property name="can_focus">False</property>
                                         <property name="model">model4</property>
                                         <property name="active">0</property>
-                                        <signal name="changed" handler="linphone_gtk_internet_kind_changed"/>
+                                        <signal name="changed" handler="linphone_gtk_internet_kind_changed" swapped="no"/>
                                         <child>
                                           <object class="GtkCellRendererText" id="renderer4"/>
                                           <attributes>
                                         <property name="visible">True</property>
                                         <property name="can_focus">True</property>
                                         <property name="receives_default">False</property>
+                                        <property name="use_action_appearance">False</property>
                                         <property name="draw_indicator">True</property>
                                       </object>
                                       <packing>
                             <child type="label">
                               <object class="GtkLabel" id="login_label">
                                 <property name="visible">True</property>
+                                <property name="can_focus">False</property>
                                 <property name="label" translatable="yes">Login information</property>
                                 <property name="use_markup">True</property>
                               </object>
                             </child>
                           </object>
                           <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
                             <property name="padding">10</property>
                             <property name="position">1</property>
                           </packing>
                         <child>
                           <object class="GtkHButtonBox" id="hbuttonbox3">
                             <property name="visible">True</property>
+                            <property name="can_focus">False</property>
                             <child>
                               <object class="GtkButton" id="login_connect">
                                 <property name="label">gtk-connect</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_login_frame_connect_clicked"/>
+                                <signal name="clicked" handler="linphone_gtk_login_frame_connect_clicked" swapped="no"/>
                               </object>
                               <packing>
                                 <property name="expand">False</property>
                             </child>
                           </object>
                           <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
                             <property name="position">2</property>
                           </packing>
                         </child>
                 <child type="label">
                   <object class="GtkLabel" id="label6">
                     <property name="visible">True</property>
+                    <property name="can_focus">False</property>
                     <property name="label" translatable="yes">&lt;b&gt;Welcome !&lt;/b&gt;</property>
                     <property name="use_markup">True</property>
                   </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">1</property>
           </packing>
         </child>
         <child>
           <object class="GtkHBox" id="hbox4">
             <property name="visible">True</property>
+            <property name="can_focus">False</property>
             <child>
               <object class="GtkStatusbar" id="status_bar">
                 <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="spacing">2</property>
               </object>
               <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
                 <property name="position">0</property>
               </packing>
             </child>
                 <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_my_presence_clicked"/>
+                <signal name="clicked" handler="linphone_gtk_my_presence_clicked" swapped="no"/>
               </object>
               <packing>
                 <property name="expand">False</property>
+                <property name="fill">True</property>
                 <property name="padding">5</property>
                 <property name="position">1</property>
               </packing>
       </object>
     </child>
   </object>
+  <object class="GtkListStore" id="model1">
+    <columns>
+      <!-- column-name gchararray -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0" translatable="yes">All users</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Online users</col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkListStore" id="model2">
+    <columns>
+      <!-- column-name gchararray -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0" translatable="yes">ADSL</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Fiber Channel</col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkListStore" id="model3">
+    <columns>
+      <!-- column-name gchararray -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0" translatable="yes">Default</col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkListStore" id="model4">
+    <columns>
+      <!-- column-name gchararray -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0" translatable="yes">ADSL</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Fiber Channel</col>
+      </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>
index 4e7c56ed6208c84b804bc9c75de7992ddb1ec462..706a81ccd4d3c381f4ecd76a11f835f76aa26c63 100644 (file)
@@ -11,6 +11,8 @@ status-green.png \
 status-orange.png \
 status-red.png \
 status-offline.png \
+call.png \
+chat.png \
 contact-orange.png dialer-orange.png history-orange.png\
 startcall-green.png stopcall-red.png addcall-green.png linphone.icns \
 contact_starred.png contact_unstarred.png \
index 3e6ae3b7a8b30334482123a99c963bdbc787f559..fe9b13ef848cf1a9c297442dec20b7511068fc58 100644 (file)
Binary files a/pixmaps/addcall-green.png and b/pixmaps/addcall-green.png differ
diff --git a/pixmaps/call.png b/pixmaps/call.png
new file mode 100644 (file)
index 0000000..0ae5336
Binary files /dev/null and b/pixmaps/call.png differ
diff --git a/pixmaps/chat.png b/pixmaps/chat.png
new file mode 100644 (file)
index 0000000..98f6faf
Binary files /dev/null and b/pixmaps/chat.png differ
index 61ab330c6de2599eacbd98cf8d46f8682dd3e174..3ba6746fb28361a89d09449796577ca2d3a2923e 100644 (file)
Binary files a/pixmaps/hold_off.png and b/pixmaps/hold_off.png differ
index 94469b2d6a4757b02641a03ae4372bd302757346..776d5ddd48291bd1c834e1df6a8edb9c591573b9 100644 (file)
Binary files a/pixmaps/hold_on.png and b/pixmaps/hold_on.png differ
index 349daad4b1907b349f31bc59826e39156b6be9d1..ee6b9038c4df8945da8ea80203ef8a4e1101b4d2 100644 (file)
Binary files a/pixmaps/mic_active.png and b/pixmaps/mic_active.png differ
index e540d00312a56fba38d8126a55c91333fbf3a84e..60fd187611676958aacee6bbbb942533c7784242 100644 (file)
Binary files a/pixmaps/mic_muted.png and b/pixmaps/mic_muted.png differ
index 940802a0c78c6279cf8396d4d98325006a79ca58..56cf6e13653dab9cc7cc03d2910c33339246b2cd 100644 (file)
Binary files a/pixmaps/startcall-green.png and b/pixmaps/startcall-green.png differ
index 1004b8a01a532795d80d19697d52e241c6b19b9b..de77592c742fd52596af41ff6f62350a81d15c0a 100644 (file)
Binary files a/pixmaps/stopcall-red.png and b/pixmaps/stopcall-red.png differ
index ac50ac8aa9f809d4614f054bf03f255198983775..683f1492fdb1d2e53790933cf60b35a4cbd6e500 100644 (file)
@@ -20,7 +20,6 @@ gtk/loginframe.c
 [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