From a460c17e07eb066639000e83fe0f96f66ccdbe07 Mon Sep 17 00:00:00 2001
From: Emmanuel Milou <emmanuel.milou@savoirfairelinux.com>
Date: Fri, 25 Apr 2008 18:13:46 -0400
Subject: [PATCH] Improve account window

---
 sflphone-gtk/src/accountwindow.c  | 172 +++++++++------------
 sflphone-gtk/src/dbus.c           |   1 +
 sflphone-gtk/src/druid.c          | 240 +++++++++++++++++++-----------
 sflphone-gtk/src/druid.h          |  23 ++-
 sflphone-gtk/src/sflphone_const.h |  12 +-
 src/account.h                     |  12 +-
 src/iaxaccount.cpp                |   2 +-
 src/iaxvoiplink.cpp               |   1 -
 src/iaxvoiplink.h                 |   3 -
 src/managerimpl.cpp               |  58 +++-----
 src/sipaccount.cpp                |   7 +-
 src/sipvoiplink.cpp               |  15 +-
 src/sipvoiplink.h                 |   6 -
 13 files changed, 265 insertions(+), 287 deletions(-)

diff --git a/sflphone-gtk/src/accountwindow.c b/sflphone-gtk/src/accountwindow.c
index 87767fd4a7..115fd8c006 100644
--- a/sflphone-gtk/src/accountwindow.c
+++ b/sflphone-gtk/src/accountwindow.c
@@ -29,33 +29,23 @@
 account_t * currentAccount;
 
 GtkDialog * dialog;
+GtkWidget * hbox;
+GtkWidget * frame;
+GtkWidget * frameNat;
 GtkWidget * table;
+GtkWidget * tableNat;
 GtkWidget * label;
 GtkWidget * entryID;
-GtkWidget * entryName;
+GtkWidget * entryAlias;
 GtkWidget * entryProtocol;
 GtkWidget * entryEnabled;
-//GtkWidget * entryRegister;
-GtkWidget * entryFullName;
-GtkWidget * entryUserPart;
-GtkWidget * entryHostPart;
 GtkWidget * entryUsername;
+GtkWidget * entryHostname;
 GtkWidget * entryPassword;
 GtkWidget * stunServer;
 GtkWidget * stunEnable;
 GtkWidget * entryMailbox;
 
-
-/**
- * Delete an account
- */
-/*static void 
-  delete_account( GtkWidget *widget, gpointer   data )
-  {
-  sflphone_remove_account(currentAccount);
-  }*/
-
-
 /* Signal to entryProtocol 'changed' */
   void
 change_protocol (account_t * currentAccount)
@@ -65,12 +55,10 @@ change_protocol (account_t * currentAccount)
 
   // toggle sensitivity for: entryUserPart 
   if (strcmp(proto, "SIP") == 0) {
-    gtk_widget_set_sensitive( GTK_WIDGET(entryUserPart), TRUE);
     gtk_widget_set_sensitive( GTK_WIDGET(stunEnable), TRUE);
     gtk_widget_set_sensitive( GTK_WIDGET(stunServer), TRUE);
   }
   else if (strcmp(proto, "IAX") == 0) {
-    gtk_widget_set_sensitive( GTK_WIDGET(entryUserPart),   FALSE);
     gtk_widget_set_sensitive( GTK_WIDGET(stunEnable),   FALSE);
     gtk_widget_set_sensitive( GTK_WIDGET(stunServer),   FALSE);
   }
@@ -109,11 +97,10 @@ show_account_window (account_t * a)
   gchar * curAccountID = "";
   gchar * curAccountEnabled = "TRUE";
   gchar * curAccountType = "SIP";
-  gchar * curUserPart = "";
-  gchar * curHostPart = "";
-  gchar * curPassword = "";
+  gchar * curAlias = "";
   gchar * curUsername = "";
-  gchar * curFullName = "";
+  gchar * curHostname = "";
+  gchar * curPassword = "";
   /* TODO: add curProxy, and add boxes for Proxy support */
   gchar * stun_enabled = "FALSE";
   gchar * stun_server= "stun.fwdnet.net:3478";
@@ -125,20 +112,18 @@ show_account_window (account_t * a)
     curAccountID = a->accountID;
     curAccountType = g_hash_table_lookup(currentAccount->properties, ACCOUNT_TYPE);
     curAccountEnabled = g_hash_table_lookup(currentAccount->properties, ACCOUNT_ENABLED);
+    curAlias = g_hash_table_lookup(currentAccount->properties, ACCOUNT_ALIAS);
 
     if (strcmp(curAccountType, "IAX") == 0) {
-      curHostPart = g_hash_table_lookup(currentAccount->properties, ACCOUNT_IAX_HOST);
-      curPassword = g_hash_table_lookup(currentAccount->properties, ACCOUNT_IAX_PASS);
+      curHostname = g_hash_table_lookup(currentAccount->properties, ACCOUNT_IAX_HOST);
+      curPassword = g_hash_table_lookup(currentAccount->properties, ACCOUNT_IAX_PASSWORD);
       curUsername = g_hash_table_lookup(currentAccount->properties, ACCOUNT_IAX_USER);
-      curFullName = g_hash_table_lookup(currentAccount->properties, ACCOUNT_IAX_FULL_NAME);
       curMailbox = g_hash_table_lookup(currentAccount->properties, ACCOUNT_MAILBOX);
     }
     else if (strcmp(curAccountType, "SIP") == 0) {
-      curHostPart = g_hash_table_lookup(currentAccount->properties, ACCOUNT_SIP_HOST_PART);
+      curHostname = g_hash_table_lookup(currentAccount->properties, ACCOUNT_SIP_HOST);
       curPassword = g_hash_table_lookup(currentAccount->properties, ACCOUNT_SIP_PASSWORD);
-      curUsername = g_hash_table_lookup(currentAccount->properties, ACCOUNT_SIP_AUTH_NAME);
-      curFullName = g_hash_table_lookup(currentAccount->properties, ACCOUNT_SIP_FULL_NAME);
-      curUserPart = g_hash_table_lookup(currentAccount->properties, ACCOUNT_SIP_USER_PART);
+      curUsername = g_hash_table_lookup(currentAccount->properties, ACCOUNT_SIP_USER);
       stun_enabled = g_hash_table_lookup(currentAccount->properties, ACCOUNT_SIP_STUN_ENABLED);
       stun_server = g_hash_table_lookup(currentAccount->properties, ACCOUNT_SIP_STUN_SERVER);
       curMailbox = g_hash_table_lookup(currentAccount->properties, ACCOUNT_MAILBOX);
@@ -163,9 +148,17 @@ show_account_window (account_t * a)
   gtk_dialog_set_has_separator(dialog, TRUE);
   gtk_container_set_border_width (GTK_CONTAINER(dialog), 0);
 
-  table = gtk_table_new ( 8, 4  ,  FALSE/* homogeneous */);
+  frame = gtk_frame_new( "Account parameters" );
+  gtk_box_pack_start(GTK_BOX(dialog->vbox), frame, FALSE, FALSE, 0);
+  gtk_widget_show(frame);
+
+  table = gtk_table_new ( 8, 2  ,  FALSE/* homogeneous */);
   gtk_table_set_row_spacings( GTK_TABLE(table), 10);
   gtk_table_set_col_spacings( GTK_TABLE(table), 10);
+  gtk_box_pack_start(GTK_BOX (frame), table, TRUE, TRUE, 0);
+  gtk_widget_show(table);
+  gtk_container_add( GTK_CONTAINER( frame) , table );
+
 
 #ifdef DEBUG  
   label = gtk_label_new_with_mnemonic ("ID:");
@@ -184,25 +177,19 @@ show_account_window (account_t * a)
   gtk_table_attach ( GTK_TABLE( table ), entryEnabled, 0, 2, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
   gtk_widget_set_sensitive( GTK_WIDGET( entryEnabled ) , TRUE );
 
-  //entryRegister = gtk_check_button_new_with_mnemonic("_Register on startup ");
-  //gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(entryRegister), 
-  //  strcmp(g_hash_table_lookup(currentAccount->properties, ACCOUNT_REGISTER),"TRUE") == 0 ? TRUE: FALSE); 
-  //gtk_table_attach ( GTK_TABLE( table ), entryRegister, 0, 2, 2, 3, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
-
   label = gtk_label_new_with_mnemonic (_("_Alias"));
   gtk_table_attach ( GTK_TABLE( table ), label, 0, 1, 3, 4, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
   gtk_misc_set_alignment(GTK_MISC (label), 0, 0.5);
-  entryName = gtk_entry_new();
-  gtk_label_set_mnemonic_widget (GTK_LABEL (label), entryName);
-  gtk_entry_set_text(GTK_ENTRY(entryName), g_hash_table_lookup(currentAccount->properties, ACCOUNT_ALIAS));
-  gtk_table_attach ( GTK_TABLE( table ), entryName, 1, 2, 3, 4, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+  entryAlias = gtk_entry_new();
+  gtk_label_set_mnemonic_widget (GTK_LABEL (label), entryAlias);
+  gtk_entry_set_text(GTK_ENTRY(entryAlias), g_hash_table_lookup(currentAccount->properties, ACCOUNT_ALIAS));
+  gtk_table_attach ( GTK_TABLE( table ), entryAlias, 1, 2, 3, 4, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
 
   label = gtk_label_new_with_mnemonic (_("_Protocol"));
   gtk_table_attach ( GTK_TABLE( table ), label, 0, 1, 4, 5, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
   gtk_misc_set_alignment(GTK_MISC (label), 0, 0.5);
   entryProtocol = gtk_combo_box_new_text();
   gtk_label_set_mnemonic_widget (GTK_LABEL (label), entryProtocol);
-  //gtk_widget_set_sensitive( GTK_WIDGET(entryProtocol), TRUE);
   gtk_combo_box_append_text(GTK_COMBO_BOX(entryProtocol), "SIP");
   if( is_iax_enabled() ) gtk_combo_box_append_text(GTK_COMBO_BOX(entryProtocol), "IAX");
   if(strcmp(curAccountType, "SIP") == 0)
@@ -226,75 +213,68 @@ show_account_window (account_t * a)
       G_CALLBACK (change_protocol),
       currentAccount);
 
-  label = gtk_label_new_with_mnemonic (_("_Full Name"));
+  label = gtk_label_new_with_mnemonic (_("_Hostname "));
   gtk_table_attach ( GTK_TABLE( table ), label, 0, 1, 5, 6, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
   gtk_misc_set_alignment(GTK_MISC (label), 0, 0.5);
-  entryFullName = gtk_entry_new();
-  gtk_label_set_mnemonic_widget (GTK_LABEL (label), entryFullName);
-  gtk_entry_set_text(GTK_ENTRY(entryFullName), curFullName);
-  gtk_table_attach ( GTK_TABLE( table ), entryFullName, 1, 2, 5, 6, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
-
-  label = gtk_label_new_with_mnemonic (_("_User part"));
-  gtk_table_attach ( GTK_TABLE( table ), label, 0, 1, 6, 7, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
-  gtk_misc_set_alignment(GTK_MISC (label), 0, 0.5);
-  entryUserPart = gtk_entry_new();
-  gtk_label_set_mnemonic_widget (GTK_LABEL (label), entryUserPart);
-  gtk_entry_set_text(GTK_ENTRY(entryUserPart), curUserPart);
-  gtk_table_attach ( GTK_TABLE( table ), entryUserPart, 1, 2, 6, 7, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
-
-  label = gtk_label_new_with_mnemonic (_("_Host part"));
-  gtk_table_attach ( GTK_TABLE( table ), label, 0, 1, 7, 8, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
-  gtk_misc_set_alignment(GTK_MISC (label), 0, 0.5);
-  entryHostPart = gtk_entry_new();
-  gtk_label_set_mnemonic_widget (GTK_LABEL (label), entryHostPart);
-  gtk_entry_set_text(GTK_ENTRY(entryHostPart), curHostPart);
-  gtk_table_attach ( GTK_TABLE( table ), entryHostPart, 1, 2, 7, 8, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+  entryHostname = gtk_entry_new();
+  gtk_label_set_mnemonic_widget (GTK_LABEL (label), entryHostname);
+  gtk_entry_set_text(GTK_ENTRY(entryHostname), curHostname);
+  gtk_table_attach ( GTK_TABLE( table ), entryHostname, 1, 2, 5, 6, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
 
   label = gtk_label_new_with_mnemonic (_("U_sername"));
-  gtk_table_attach ( GTK_TABLE( table ), label, 0, 1, 8, 9, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+  gtk_table_attach ( GTK_TABLE( table ), label, 0, 1, 6, 7, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
   gtk_misc_set_alignment(GTK_MISC (label), 0, 0.5);
   entryUsername = gtk_entry_new();
   gtk_label_set_mnemonic_widget (GTK_LABEL (label), entryUsername);
   gtk_entry_set_text(GTK_ENTRY(entryUsername), curUsername);
-  gtk_table_attach ( GTK_TABLE( table ), entryUsername, 1, 2, 8, 9, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+  gtk_table_attach ( GTK_TABLE( table ), entryUsername, 1, 2, 6, 7, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
 
   label = gtk_label_new_with_mnemonic (_("_Password"));
-  gtk_table_attach ( GTK_TABLE( table ), label, 0, 1, 9, 10, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+  gtk_table_attach ( GTK_TABLE( table ), label, 0, 1, 7, 8, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
   gtk_misc_set_alignment(GTK_MISC (label), 0, 0.5);
   entryPassword = gtk_entry_new();
   gtk_entry_set_visibility(GTK_ENTRY(entryPassword), FALSE);
   gtk_label_set_mnemonic_widget (GTK_LABEL (label), entryPassword);
   gtk_entry_set_text(GTK_ENTRY(entryPassword), curPassword);
-  gtk_table_attach ( GTK_TABLE( table ), entryPassword, 1, 2, 9, 10, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+  gtk_table_attach ( GTK_TABLE( table ), entryPassword, 1, 2, 7, 8, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
 
   label = gtk_label_new_with_mnemonic (_("_Mailbox"));
-  gtk_table_attach ( GTK_TABLE( table ), label, 0, 1, 10, 11, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+  gtk_table_attach ( GTK_TABLE( table ), label, 0, 1, 8, 9, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
   gtk_misc_set_alignment(GTK_MISC (label), 0, 0.5);
   entryMailbox = gtk_entry_new();
   gtk_label_set_mnemonic_widget (GTK_LABEL (label), entryMailbox);
   gtk_entry_set_text(GTK_ENTRY(entryMailbox), curMailbox);
-  gtk_table_attach ( GTK_TABLE( table ), entryMailbox, 1, 2, 10, 11, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+  gtk_table_attach ( GTK_TABLE( table ), entryMailbox, 1, 2, 8, 9, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+
+  gtk_widget_show_all( table );
+  gtk_container_set_border_width (GTK_CONTAINER(table), 10);
+
+  frameNat = gtk_frame_new( _("NAT detection") );
+  gtk_box_pack_start(GTK_BOX(dialog->vbox), frameNat, FALSE, FALSE, 0);
+  gtk_widget_show(frameNat);
+
+  tableNat = gtk_table_new ( 2, 2  ,  FALSE/* homogeneous */);
+  gtk_table_set_row_spacings( GTK_TABLE(tableNat), 10);
+  gtk_table_set_col_spacings( GTK_TABLE(tableNat), 10);
+  gtk_box_pack_end(GTK_BOX (frameNat), tableNat, TRUE, TRUE, 0);
+  gtk_widget_show(tableNat);
+  gtk_container_add( GTK_CONTAINER( frameNat) , tableNat );
 
   // NAT detection code section
-  label = gtk_label_new("");
-  gtk_label_set_markup(GTK_LABEL( label ),_("<b>NAT Detection</b>"));
-  gtk_table_attach( GTK_TABLE( table ), label, 3, 4, 3, 4, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
-  gtk_misc_set_alignment(GTK_MISC (label), 0, 0.5);
   stunEnable = gtk_check_button_new_with_mnemonic(_("E_nable STUN"));
-  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(stunEnable),
-	      strcmp(stun_enabled,"TRUE") == 0 ? TRUE: FALSE);
+  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(stunEnable), strcmp(stun_enabled,"TRUE") == 0 ? TRUE: FALSE);
   g_signal_connect( G_OBJECT (GTK_TOGGLE_BUTTON(stunEnable)) , "toggled" , G_CALLBACK( stun_state ), NULL);
-
   gtk_widget_set_tooltip_text( GTK_WIDGET( stunEnable ) , _("Enable it if you are behind a firewall, then restart SFLphone"));
-  gtk_table_attach ( GTK_TABLE( table ), stunEnable, 3, 4, 4, 5, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+  gtk_table_attach ( GTK_TABLE( tableNat ), stunEnable, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+
   label = gtk_label_new_with_mnemonic(_("S_TUN Server"));
-  gtk_table_attach( GTK_TABLE( table ), label, 2, 3, 5, 6, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+  gtk_table_attach( GTK_TABLE( tableNat ), label, 0, 1, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
   gtk_misc_set_alignment(GTK_MISC (label), 0, 0.5);
   stunServer = gtk_entry_new();
   gtk_label_set_mnemonic_widget (GTK_LABEL (label), stunServer);
   gtk_entry_set_text(GTK_ENTRY(stunServer), stun_server);
   gtk_widget_set_tooltip_text( GTK_WIDGET( stunServer ) , _("Format: name.server:port"));
-  gtk_table_attach ( GTK_TABLE( table ), stunServer, 3, 4, 5, 6, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+  gtk_table_attach ( GTK_TABLE( tableNat ), stunServer, 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
   gtk_widget_set_sensitive( GTK_WIDGET( stunServer ), gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(stunEnable)));
 
 
@@ -303,7 +283,6 @@ show_account_window (account_t * a)
     //gtk_widget_set_sesitive( GTK_WIDGET(entryUserPart), TRUE);<    
   }
   else if (strcmp(curAccountType, "IAX") == 0) {
-    gtk_widget_set_sensitive( GTK_WIDGET(entryUserPart), FALSE);
     gtk_widget_set_sensitive( GTK_WIDGET(stunEnable), FALSE);
     gtk_widget_set_sensitive( GTK_WIDGET(stunServer), FALSE);
   }
@@ -313,10 +292,9 @@ show_account_window (account_t * a)
   }
 
 
-  gtk_box_pack_start (GTK_BOX (dialog->vbox), table, TRUE, TRUE, 0);
-  gtk_container_set_border_width (GTK_CONTAINER(table), 10);
 
-  gtk_widget_show_all(table);
+  gtk_widget_show_all( tableNat );
+  gtk_container_set_border_width (GTK_CONTAINER(tableNat), 10);
 
   response = gtk_dialog_run (GTK_DIALOG (dialog));
   if(response == GTK_RESPONSE_ACCEPT)
@@ -326,30 +304,20 @@ show_account_window (account_t * a)
     g_hash_table_replace(currentAccount->properties, 
     	g_strdup(ACCOUNT_ENABLED), 
     	 g_strdup(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(entryEnabled)) ? "TRUE": "FALSE"));
-    // g_hash_table_replace(currentAccount->properties, 
-    //  g_strdup(ACCOUNT_REGISTER), 
-    //  g_strdup(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(entryRegister)) ? "TRUE": "FALSE"));
-    /* TODO Add SIP/IAX when IAX is ok */  
     g_hash_table_replace(currentAccount->properties, 
 	g_strdup(ACCOUNT_ALIAS), 
-	g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryName))));
+	g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryAlias))));
     g_hash_table_replace(currentAccount->properties, 
 	g_strdup(ACCOUNT_TYPE), 
 	g_strdup(proto));
 
 
-    if (strcmp(proto, "SIP") == 0) { /* Protocol = SIP */
-      g_hash_table_replace(currentAccount->properties, 
-	  g_strdup(ACCOUNT_SIP_FULL_NAME), 
-	  g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryFullName))));
-      g_hash_table_replace(currentAccount->properties, 
-	  g_strdup(ACCOUNT_SIP_USER_PART), 
-	  g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryUserPart))));
+    if (strcmp(proto, "SIP") == 0) { 
       g_hash_table_replace(currentAccount->properties, 
-	  g_strdup(ACCOUNT_SIP_HOST_PART), 
-	  g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryHostPart))));
+	  g_strdup(ACCOUNT_SIP_HOST), 
+	  g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryHostname))));
       g_hash_table_replace(currentAccount->properties, 
-	  g_strdup(ACCOUNT_SIP_AUTH_NAME), 
+	  g_strdup(ACCOUNT_SIP_USER), 
 	  g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryUsername))));
       g_hash_table_replace(currentAccount->properties, 
 	  g_strdup(ACCOUNT_SIP_PASSWORD), 
@@ -364,18 +332,15 @@ show_account_window (account_t * a)
 	g_strdup(ACCOUNT_MAILBOX), 
 	g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryMailbox))));
     }
-    else if (strcmp(proto, "IAX") == 0) { /* Protocol = IAX */
-      g_hash_table_replace(currentAccount->properties, 
-	  g_strdup(ACCOUNT_IAX_FULL_NAME), 
-	  g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryFullName))));
+    else if (strcmp(proto, "IAX") == 0) { 
       g_hash_table_replace(currentAccount->properties, 
 	  g_strdup(ACCOUNT_IAX_HOST), 
-	  g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryHostPart))));
+	  g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryHostname))));
       g_hash_table_replace(currentAccount->properties, 
 	  g_strdup(ACCOUNT_IAX_USER), 
 	  g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryUsername))));
       g_hash_table_replace(currentAccount->properties, 
-	  g_strdup(ACCOUNT_IAX_PASS), 
+	  g_strdup(ACCOUNT_IAX_PASSWORD), 
 	  g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryPassword))));
       g_hash_table_replace(currentAccount->properties, 
 	g_strdup(ACCOUNT_MAILBOX), 
@@ -396,7 +361,4 @@ show_account_window (account_t * a)
     }
   }
   gtk_widget_destroy (GTK_WIDGET(dialog));
-
-
 }
-
diff --git a/sflphone-gtk/src/dbus.c b/sflphone-gtk/src/dbus.c
index a8549efc63..58ac1108a4 100644
--- a/sflphone-gtk/src/dbus.c
+++ b/sflphone-gtk/src/dbus.c
@@ -30,6 +30,7 @@
 #include <marshaller.h>
 #include <sliders.h>
 #include <statusicon.h>
+#include <druid.h>
 
 #include <dbus.h>
 #include <actions.h>
diff --git a/sflphone-gtk/src/druid.c b/sflphone-gtk/src/druid.c
index 872caab02e..6c86232fb9 100644
--- a/sflphone-gtk/src/druid.c
+++ b/sflphone-gtk/src/druid.c
@@ -19,139 +19,165 @@
 
 #include <druid.h>
 
-static struct _wizard *wiz;
+struct _wizard *wiz;
 static int account_type;
 account_t* current;
 
 void
-build_account_configuration( int type )
+build_sip_account_configuration( void )
 {
   // table
-  wiz->table = gtk_table_new ( 8, 4  ,  FALSE/* homogeneous */);
-  gtk_table_set_row_spacings( GTK_TABLE(wiz->table), 10);
-  gtk_table_set_col_spacings( GTK_TABLE(wiz->table), 10);
-  if( type == _SIP )
-    gtk_box_pack_start(GTK_BOX(GNOME_DRUID_PAGE_STANDARD(wiz->sip_account)->vbox),wiz->table, TRUE, TRUE, 2);
-  else
-    gtk_box_pack_start(GTK_BOX(GNOME_DRUID_PAGE_STANDARD(wiz->iax_account)->vbox),wiz->table, TRUE, TRUE, 2);
+  wiz->sip_table = gtk_table_new ( 4, 2  ,  FALSE/* homogeneous */);
+  gtk_table_set_row_spacings( GTK_TABLE(wiz->sip_table), 10);
+  gtk_table_set_col_spacings( GTK_TABLE(wiz->sip_table), 10);
+  gtk_box_pack_start(GTK_BOX(GNOME_DRUID_PAGE_STANDARD(wiz->sip_account)->vbox),wiz->sip_table, TRUE, TRUE, 2);
 
   // alias field
   wiz->label = gtk_label_new_with_mnemonic ("_Alias");
-  gtk_table_attach ( GTK_TABLE( wiz->table ), wiz->label, 0, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
-  gtk_misc_set_alignment(GTK_MISC (wiz->label), 0, 0.5);
-  wiz->alias = gtk_entry_new();
-  gtk_label_set_mnemonic_widget (GTK_LABEL (wiz->label), wiz->alias);
-  gtk_table_attach ( GTK_TABLE( wiz->table ), wiz->alias, 2, 4, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
-
-  // name field
-  wiz->label = gtk_label_new_with_mnemonic ("_Name");
-  gtk_table_attach ( GTK_TABLE( wiz->table ), wiz->label, 0, 2, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+  gtk_table_attach ( GTK_TABLE( wiz->sip_table ), wiz->label, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
   gtk_misc_set_alignment(GTK_MISC (wiz->label), 0, 0.5);
-  wiz->name = gtk_entry_new();
-  gtk_label_set_mnemonic_widget (GTK_LABEL (wiz->label), wiz->name);
-  gtk_table_attach ( GTK_TABLE( wiz->table ), wiz->name, 2, 4, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
-
-  if( type == _SIP )
-  {
-    // user part field
-    wiz->label = gtk_label_new_with_mnemonic ("_Userpart");
-    gtk_table_attach ( GTK_TABLE( wiz->table ), wiz->label, 0, 2, 2, 3, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
-    gtk_misc_set_alignment(GTK_MISC (wiz->label), 0, 0.5);
-    wiz->userpart = gtk_entry_new();
-    gtk_label_set_mnemonic_widget (GTK_LABEL (wiz->label), wiz->userpart);
-    gtk_table_attach ( GTK_TABLE( wiz->table ), wiz->userpart, 2, 4, 2, 3, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
-  }
+  wiz->sip_alias = gtk_entry_new();
+  gtk_label_set_mnemonic_widget (GTK_LABEL (wiz->label), wiz->sip_alias);
+  gtk_table_attach ( GTK_TABLE( wiz->sip_table ), wiz->sip_alias, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
 
   // server field
-  wiz->label = gtk_label_new_with_mnemonic ("_Server");
-  gtk_table_attach ( GTK_TABLE( wiz->table ), wiz->label, 0, 2, 3, 4, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+  wiz->label = gtk_label_new_with_mnemonic ("_Host name");
+  gtk_table_attach ( GTK_TABLE( wiz->sip_table ), wiz->label, 0, 1, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
   gtk_misc_set_alignment(GTK_MISC (wiz->label), 0, 0.5);
-  wiz->server = gtk_entry_new();
-  gtk_label_set_mnemonic_widget (GTK_LABEL (wiz->label), wiz->server);
-  gtk_table_attach ( GTK_TABLE( wiz->table ), wiz->server, 2, 4, 3, 4, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+  wiz->sip_server = gtk_entry_new();
+  gtk_label_set_mnemonic_widget (GTK_LABEL (wiz->label), wiz->sip_server);
+  gtk_table_attach ( GTK_TABLE( wiz->sip_table ), wiz->sip_server, 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
   
   // username field
-  wiz->label = gtk_label_new_with_mnemonic ("_Username");
-  gtk_table_attach ( GTK_TABLE( wiz->table ), wiz->label, 0, 2, 4, 5, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+  wiz->label = gtk_label_new_with_mnemonic ("_User name");
+  gtk_table_attach ( GTK_TABLE( wiz->sip_table ), wiz->label, 0, 1, 2, 3, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
   gtk_misc_set_alignment(GTK_MISC (wiz->label), 0, 0.5);
-  wiz->username = gtk_entry_new();
-  gtk_label_set_mnemonic_widget (GTK_LABEL (wiz->label), wiz->username);
-  gtk_table_attach ( GTK_TABLE( wiz->table ), wiz->username, 2, 4, 4, 5, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+  wiz->sip_username = gtk_entry_new();
+  gtk_label_set_mnemonic_widget (GTK_LABEL (wiz->label), wiz->sip_username);
+  gtk_table_attach ( GTK_TABLE( wiz->sip_table ), wiz->sip_username, 1, 2, 2, 3, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
   
   // password field
   wiz->label = gtk_label_new_with_mnemonic ("_Password");
-  gtk_table_attach ( GTK_TABLE( wiz->table ), wiz->label, 0, 2, 5, 6, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+  gtk_table_attach ( GTK_TABLE( wiz->sip_table ), wiz->label, 0, 1, 3, 4, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
   gtk_misc_set_alignment(GTK_MISC (wiz->label), 0, 0.5);
-  wiz->password = gtk_entry_new();
-  gtk_label_set_mnemonic_widget (GTK_LABEL (wiz->label), wiz->password);
-  gtk_table_attach ( GTK_TABLE( wiz->table ), wiz->password, 2, 4, 5, 6, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+  wiz->sip_password = gtk_entry_new();
+  gtk_label_set_mnemonic_widget (GTK_LABEL (wiz->label), wiz->sip_password);
+  gtk_table_attach ( GTK_TABLE( wiz->sip_table ), wiz->sip_password, 1, 2, 3, 4, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+
+  g_hash_table_insert(current->properties, g_strdup(ACCOUNT_ALIAS), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->sip_alias))));
+  g_hash_table_insert(current->properties, g_strdup(ACCOUNT_ENABLED), g_strdup("TRUE"));
+  g_hash_table_insert(current->properties, g_strdup(ACCOUNT_MAILBOX), g_strdup("888"));
+  g_hash_table_insert(current->properties, g_strdup(ACCOUNT_TYPE), g_strdup("SIP"));
+  g_hash_table_insert(current->properties, g_strdup(ACCOUNT_SIP_HOST), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->sip_server))));
+  g_hash_table_insert(current->properties, g_strdup(ACCOUNT_SIP_PASSWORD), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->sip_password))));
+  g_hash_table_insert(current->properties, g_strdup(ACCOUNT_SIP_USER), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->sip_username))));
+
+  current -> state = ACCOUNT_STATE_UNREGISTERED;
+}
+
+void
+build_iax_account_configuration( void )
+{
+  // table
+  wiz->iax_table = gtk_table_new ( 4, 2  ,  FALSE/* homogeneous */);
+  gtk_table_set_row_spacings( GTK_TABLE(wiz->iax_table), 10);
+  gtk_table_set_col_spacings( GTK_TABLE(wiz->iax_table), 10);
+  gtk_box_pack_start(GTK_BOX(GNOME_DRUID_PAGE_STANDARD(wiz->iax_account)->vbox),wiz->iax_table, TRUE, TRUE, 2);
 
-  // mailbox field
-  wiz->label = gtk_label_new_with_mnemonic ("_Mailbox");
-  gtk_table_attach ( GTK_TABLE( wiz->table ), wiz->label, 0, 2, 6, 7, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+  // alias field
+  wiz->label = gtk_label_new_with_mnemonic ("_Alias");
+  gtk_table_attach ( GTK_TABLE( wiz->iax_table ), wiz->label, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+  gtk_misc_set_alignment(GTK_MISC (wiz->label), 0, 0.5);
+  wiz->iax_alias = gtk_entry_new();
+  gtk_label_set_mnemonic_widget (GTK_LABEL (wiz->label), wiz->iax_alias);
+  gtk_table_attach ( GTK_TABLE( wiz->iax_table ), wiz->iax_alias, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+
+  // server field
+  wiz->label = gtk_label_new_with_mnemonic ("_Host name");
+  gtk_table_attach ( GTK_TABLE( wiz->iax_table ), wiz->label, 0, 1, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
   gtk_misc_set_alignment(GTK_MISC (wiz->label), 0, 0.5);
-  wiz->mailbox = gtk_entry_new();
-  gtk_label_set_mnemonic_widget (GTK_LABEL (wiz->label), wiz->mailbox);
-  gtk_table_attach ( GTK_TABLE( wiz->table ), wiz->mailbox, 2, 4, 6, 7, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+  wiz->iax_server = gtk_entry_new();
+  gtk_label_set_mnemonic_widget (GTK_LABEL (wiz->label), wiz->iax_server);
+  gtk_table_attach ( GTK_TABLE( wiz->iax_table ), wiz->iax_server, 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
   
+  // username field
+  wiz->label = gtk_label_new_with_mnemonic ("_User name");
+  gtk_table_attach ( GTK_TABLE( wiz->iax_table ), wiz->label, 0, 1, 2, 3, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+  gtk_misc_set_alignment(GTK_MISC (wiz->label), 0, 0.5);
+  wiz->iax_username = gtk_entry_new();
+  gtk_label_set_mnemonic_widget (GTK_LABEL (wiz->label), wiz->iax_username);
+  gtk_table_attach ( GTK_TABLE( wiz->iax_table ), wiz->iax_username, 1, 2, 2, 3, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+  
+  // password field
+  wiz->label = gtk_label_new_with_mnemonic ("_Password");
+  gtk_table_attach ( GTK_TABLE( wiz->iax_table ), wiz->label, 0, 1, 3, 4, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+  gtk_misc_set_alignment(GTK_MISC (wiz->label), 0, 0.5);
+  wiz->iax_password = gtk_entry_new();
+  gtk_label_set_mnemonic_widget (GTK_LABEL (wiz->label), wiz->iax_password);
+  gtk_table_attach ( GTK_TABLE( wiz->iax_table ), wiz->iax_password, 1, 2, 3, 4, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+
+  g_hash_table_replace(current->properties, g_strdup(ACCOUNT_ALIAS), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_alias))));
+  g_hash_table_replace(current->properties, g_strdup(ACCOUNT_ENABLED), g_strdup("TRUE"));
+  g_hash_table_replace(current->properties, g_strdup(ACCOUNT_MAILBOX), g_strdup("888"));
+  g_hash_table_replace(current->properties, g_strdup(ACCOUNT_TYPE), g_strdup("IAX"));
+  g_hash_table_replace(current->properties, g_strdup(ACCOUNT_IAX_USER), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_username))));
+  g_hash_table_replace(current->properties, g_strdup(ACCOUNT_IAX_HOST), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_server))));
+  g_hash_table_replace(current->properties, g_strdup(ACCOUNT_IAX_PASSWORD), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_password))));
+
+  current -> state = ACCOUNT_STATE_UNREGISTERED;
 }
-
 void
 update_account_parameters( int type )
 { 
-  g_hash_table_replace(current->properties, g_strdup(ACCOUNT_ALIAS), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->alias))));
+  g_hash_table_insert(current->properties, g_strdup(ACCOUNT_ALIAS), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_alias))));
+  g_hash_table_insert(current->properties, g_strdup(ACCOUNT_ENABLED), g_strdup("TRUE"));
+  g_hash_table_insert(current->properties, g_strdup(ACCOUNT_MAILBOX), g_strdup("888"));
 
   if( type == _SIP ){
-    g_hash_table_replace(current->properties, g_strdup(ACCOUNT_SIP_FULL_NAME), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->name))));
-    g_hash_table_replace(current->properties, g_strdup(ACCOUNT_SIP_USER_PART), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->userpart))));
-    g_hash_table_replace(current->properties, g_strdup(ACCOUNT_SIP_HOST_PART), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->server))));
-    g_hash_table_replace(current->properties, g_strdup(ACCOUNT_SIP_PASSWORD), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->password))));
-    g_hash_table_replace(current->properties, g_strdup(ACCOUNT_SIP_AUTH_NAME), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->username))));
-    g_hash_table_replace(current->properties, g_strdup(ACCOUNT_SIP_STUN_ENABLED), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->enable))));
-    g_hash_table_replace(current->properties, g_strdup(ACCOUNT_SIP_STUN_SERVER), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->addr))));
-    g_hash_table_replace(current->properties, g_strdup(ACCOUNT_MAILBOX), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->mailbox))));
+    g_hash_table_insert(current->properties, g_strdup(ACCOUNT_TYPE), g_strdup("SIP"));
+    g_hash_table_insert(current->properties, g_strdup(ACCOUNT_SIP_HOST), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_server))));
+    g_hash_table_insert(current->properties, g_strdup(ACCOUNT_SIP_PASSWORD), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_password))));
+    g_hash_table_insert(current->properties, g_strdup(ACCOUNT_SIP_USER), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_username))));
+    //g_hash_table_replace(current->properties, g_strdup(ACCOUNT_SIP_STUN_ENABLED), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_enable))));
+    //g_hash_table_replace(current->properties, g_strdup(ACCOUNT_SIP_STUN_SERVER), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_addr))));
   
   }
   else if( type == _IAX ){
-    g_hash_table_replace(current->properties, g_strdup(ACCOUNT_IAX_FULL_NAME), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->name))));
-    g_hash_table_replace(current->properties, g_strdup(ACCOUNT_IAX_USER), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->username))));
-    g_hash_table_replace(current->properties, g_strdup(ACCOUNT_IAX_HOST), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->server))));
-    g_hash_table_replace(current->properties, g_strdup(ACCOUNT_IAX_PASS), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->password))));
-    g_hash_table_replace(current->properties, g_strdup(ACCOUNT_MAILBOX), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->mailbox))));
+    g_hash_table_replace(current->properties, g_strdup(ACCOUNT_TYPE), g_strdup("IAX"));
+    g_hash_table_replace(current->properties, g_strdup(ACCOUNT_IAX_USER), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_username))));
+    g_hash_table_replace(current->properties, g_strdup(ACCOUNT_IAX_HOST), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_server))));
+    g_hash_table_replace(current->properties, g_strdup(ACCOUNT_IAX_PASSWORD), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_password))));
   }
-  //dbus_add_account(current);
+  current -> state = ACCOUNT_STATE_UNREGISTERED;
 }
 
 void
 build_nat_window( void )
 {
   // table
-  wiz->table = gtk_table_new ( 2, 4  ,  FALSE/* homogeneous */);
-  gtk_table_set_row_spacings( GTK_TABLE(wiz->table), 10);
-  gtk_table_set_col_spacings( GTK_TABLE(wiz->table), 10);
-  gtk_box_pack_start(GTK_BOX(GNOME_DRUID_PAGE_STANDARD(wiz->nat)->vbox),wiz->table, TRUE, TRUE, 2);
+  wiz->nat_table = gtk_table_new ( 2, 2  ,  FALSE/* homogeneous */);
+  gtk_table_set_row_spacings( GTK_TABLE(wiz->nat_table), 10);
+  gtk_table_set_col_spacings( GTK_TABLE(wiz->nat_table), 10);
+  gtk_box_pack_start(GTK_BOX(GNOME_DRUID_PAGE_STANDARD(wiz->nat)->vbox),wiz->nat_table, TRUE, TRUE, 2);
 
   // enable
   wiz->enable = gtk_check_button_new_with_mnemonic("_Enabled");
   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wiz->enable), FALSE); 
-  gtk_table_attach ( GTK_TABLE( wiz->table ), wiz->enable, 0, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+  gtk_table_attach ( GTK_TABLE( wiz->nat_table ), wiz->enable, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
   gtk_widget_set_sensitive( GTK_WIDGET( wiz->enable ) , TRUE );
   g_signal_connect( G_OBJECT( GTK_TOGGLE_BUTTON(wiz->enable)) , "toggled" , G_CALLBACK( enable_stun ), NULL);
 
   // server address
   wiz->label = gtk_label_new_with_mnemonic ("_Server address");
-  gtk_table_attach ( GTK_TABLE( wiz->table ), wiz->label, 0, 2, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+  gtk_table_attach ( GTK_TABLE( wiz->nat_table ), wiz->label, 0, 1, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
   gtk_misc_set_alignment(GTK_MISC (wiz->label), 0, 0.5);
   wiz->addr = gtk_entry_new();
   gtk_label_set_mnemonic_widget (GTK_LABEL (wiz->label), wiz->addr);
-  gtk_table_attach ( GTK_TABLE( wiz->table ), wiz->addr, 2, 4, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+  gtk_table_attach ( GTK_TABLE( wiz->nat_table ), wiz->addr, 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
   gtk_widget_set_sensitive( GTK_WIDGET( wiz->addr ), gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(wiz->enable)));
 
-}
-
-void
-build_registration_test( void )
-{
+  g_hash_table_insert(current->properties, g_strdup(ACCOUNT_SIP_STUN_ENABLED), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->enable))));
+  g_hash_table_insert(current->properties, g_strdup(ACCOUNT_SIP_STUN_SERVER), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->addr))));
 }
 
 void
@@ -160,10 +186,8 @@ set_account_type( GtkWidget* widget , gpointer data )
   
   if( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( widget )) ){
     account_type = _SIP;
-    g_hash_table_replace(current->properties, g_strdup(ACCOUNT_TYPE), g_strdup("SIP"));
   }else{ 
     account_type = _IAX ;
-    g_hash_table_replace(current->properties, g_strdup(ACCOUNT_TYPE), g_strdup("IAX"));
   }
 }
 
@@ -191,14 +215,12 @@ goto_accounts_page( void )
 void
 goto_nat_page( void )
 {
-    update_account_parameters( _SIP );
-    gnome_druid_set_page( GNOME_DRUID( wiz->druid ) , GNOME_DRUID_PAGE( wiz->nat));
+  gnome_druid_set_page( GNOME_DRUID( wiz->druid ) , GNOME_DRUID_PAGE( wiz->nat));
 }
 
 void
 goto_end_page( void )
 {
-  dbus_add_account( current );
   gnome_druid_set_page( GNOME_DRUID( wiz->druid ) , GNOME_DRUID_PAGE( wiz->page_end));
 }
 
@@ -214,13 +236,42 @@ quit_wizard( void )
   return;
 }
 
+void
+send_registration( void )
+{
+  dbus_add_account( current );
+  //sleep(1);
+  switch( current->state )
+  {
+    case ACCOUNT_STATE_REGISTERED:
+      gnome_druid_page_edge_set_text(  GNOME_DRUID_PAGE_EDGE( wiz->page_end ),"  Congratulations! \n\n You have been successfully registered. Answer the call! " );
+      break;
+    case ACCOUNT_STATE_UNREGISTERED:
+      gnome_druid_page_edge_set_text(  GNOME_DRUID_PAGE_EDGE( wiz->page_end ),"  You are not registered! \n\n And we don't know why! " );
+      break;
+    case ACCOUNT_STATE_ERROR_AUTH:
+      gnome_druid_page_edge_set_text(  GNOME_DRUID_PAGE_EDGE( wiz->page_end ),"  You are not registered! \n\n Authentification error. Please try again " );
+      break;
+    case ACCOUNT_STATE_ERROR_HOST:
+      gnome_druid_page_edge_set_text(  GNOME_DRUID_PAGE_EDGE( wiz->page_end ),"  You are not registered! \n\n The host name you specified is unreachable. Please try again " );
+      break;
+    case ACCOUNT_STATE_ERROR_NETWORK:
+      gnome_druid_page_edge_set_text(  GNOME_DRUID_PAGE_EDGE( wiz->page_end ),"  You are not registered! \n\n The network is unreachable. Check the plug " );
+      break;
+    default:
+      gnome_druid_page_edge_set_text(  GNOME_DRUID_PAGE_EDGE( wiz->page_end ),"  Sorry we cannot status your case " );
+
+  }
+    goto_end_page();
+}
+
 void
 build_wizard( void )
 {
   wiz = ( struct _wizard* )g_malloc( sizeof( struct _wizard));
   current = g_new0(account_t, 1);
   current->properties = g_hash_table_new(NULL, g_str_equal);
-
+  current ->accountID = "test";
   wiz->logo = gdk_pixbuf_new_from_file(ICON_DIR "/sflphone.png", NULL);
 
   wiz->druid = gnome_druid_new_with_window( "SFLphone" , NULL , TRUE , &wiz->window );
@@ -241,21 +292,21 @@ build_wizard( void )
   gtk_box_pack_start( GTK_BOX(wiz->protocols) , wiz->sip , TRUE, TRUE, 0);
   wiz->iax = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(wiz->sip), "IAX2 (InterAsterix Exchange)");
   gtk_box_pack_start( GTK_BOX(wiz->protocols) , wiz->iax , TRUE, TRUE, 0);
-  g_signal_connect(G_OBJECT( wiz->sip ) , "clicked" , G_CALLBACK( set_account_type ) , NULL);
+  g_signal_connect(G_OBJECT( wiz->sip ) , "clicked" , G_CALLBACK( set_account_type ) , NULL );
 
   /** Page 2 */
   wiz->sip_account = gnome_druid_page_standard_new();
   gnome_druid_page_standard_set_title( GNOME_DRUID_PAGE_STANDARD( wiz->sip_account), "SIP account configuration");
   gnome_druid_page_standard_set_logo( GNOME_DRUID_PAGE_STANDARD( wiz->sip_account) , wiz->logo );
   gnome_druid_append_page( GNOME_DRUID( wiz->druid ) , GNOME_DRUID_PAGE( wiz->sip_account ));
-  build_account_configuration( _SIP );
+  build_sip_account_configuration( );
 
   /** Page 3 */
   wiz->iax_account = gnome_druid_page_standard_new();
   gnome_druid_page_standard_set_title( GNOME_DRUID_PAGE_STANDARD( wiz->iax_account), "IAX2 account configuration");
   gnome_druid_page_standard_set_logo( GNOME_DRUID_PAGE_STANDARD( wiz->iax_account) , wiz->logo );
   gnome_druid_append_page( GNOME_DRUID( wiz->druid ) , GNOME_DRUID_PAGE( wiz->iax_account ));
-  build_account_configuration( _IAX );
+  build_iax_account_configuration(  );
 
   /** Page 4 */
   wiz->nat = gnome_druid_page_standard_new();
@@ -269,8 +320,8 @@ build_wizard( void )
   gnome_druid_page_edge_set_title( GNOME_DRUID_PAGE_EDGE( wiz->page_end), "Account Registration");
   gnome_druid_page_edge_set_logo( GNOME_DRUID_PAGE_EDGE( wiz->page_end) , wiz->logo );
   gnome_druid_append_page( GNOME_DRUID( wiz->druid ) , GNOME_DRUID_PAGE( wiz->page_end ));
-  gnome_druid_page_edge_set_text(  GNOME_DRUID_PAGE_EDGE( wiz->page_end ),
-				    "  Congratulations! \n\n You have been successfully registered " );
+  //gnome_druid_page_edge_set_text(  GNOME_DRUID_PAGE_EDGE( wiz->page_end ),
+//				    "  Congratulations! \n\n You have been successfully registered " );
 
   /** Events */
   g_signal_connect( G_OBJECT( wiz->account_type ) , "next" , G_CALLBACK( goto_right_account ) , NULL );
@@ -278,10 +329,17 @@ build_wizard( void )
   g_signal_connect( G_OBJECT( wiz->sip_account ) , "next" , G_CALLBACK( goto_nat_page ), NULL );
   g_signal_connect( G_OBJECT( wiz->iax_account ) , "next" , G_CALLBACK( goto_end_page ), NULL );
   g_signal_connect( G_OBJECT( wiz->nat ) , "back" , G_CALLBACK( goto_sip_account_page ), NULL );
+  g_signal_connect( G_OBJECT( wiz->nat ) , "next" , G_CALLBACK( send_registration ) , NULL );
   g_signal_connect( G_OBJECT( wiz->page_end ) , "finish" , G_CALLBACK( quit_wizard ), NULL );
   
 
   gtk_widget_show_all(wiz->window);
 }
 
+void
+set_account_state( account_state_t state )
+{
+  g_print("state %i\n" , state);
+  current->state = state;
+}
 
diff --git a/sflphone-gtk/src/druid.h b/sflphone-gtk/src/druid.h
index d06e354ec6..be9620a533 100644
--- a/sflphone-gtk/src/druid.h
+++ b/sflphone-gtk/src/druid.h
@@ -40,22 +40,26 @@ struct _wizard
   GtkWidget *iax;
   /** Page 2 - SIP account creation */
   GtkWidget *sip_account;
-  GtkWidget *table;
+  GtkWidget *sip_table;
   GtkWidget *label;
-  GtkWidget *alias;
-  GtkWidget *name;
-  GtkWidget *userpart;
-  GtkWidget *server;
-  GtkWidget *username;
-  GtkWidget *password;
+  GtkWidget *sip_alias;
+  GtkWidget *sip_server;
+  GtkWidget *sip_username;
+  GtkWidget *sip_password;
   GtkWidget *test;
   GtkWidget *state;
   GtkWidget *mailbox;
   /** Page 3 - IAX account creation */
   GtkWidget *iax_account;
+  GtkWidget *iax_table;
+  GtkWidget *iax_alias;
+  GtkWidget *iax_server;
+  GtkWidget *iax_username;
+  GtkWidget *iax_password;
   /** Page 4 - Nat detection */
   GtkWidget *nat;
   GtkWidget *enable;
+  GtkWidget *nat_table;
   GtkWidget *addr;
   /** Page 5 - Test registration */
   GtkWidget *page_end;
@@ -66,6 +70,8 @@ struct _wizard
  * @file druid.h
  * @brief Implement the configuration wizard
  */
+
+void set_account_state( account_state_t state );
 void set_account_type( GtkWidget* widget , gpointer data );
 void enable_stun( GtkWidget *widget );
 void goto_right_account( void );
@@ -76,7 +82,8 @@ void goto_sip_account_page( void );
 void quit_wizard( void );
 void update_account_parameters( int type );
 void build_nat_window( void );
-void build_configuration_account( int type );
+void build_sip_configuration_account( int type );
+void build_iax_configuration_account( int type );
 void build_wizard();
 
 
diff --git a/sflphone-gtk/src/sflphone_const.h b/sflphone-gtk/src/sflphone_const.h
index 9798fe9b8b..d8ee5dd67f 100644
--- a/sflphone-gtk/src/sflphone_const.h
+++ b/sflphone-gtk/src/sflphone_const.h
@@ -38,14 +38,10 @@
 #define ACCOUNT_ENABLED		   "Account.enable"
 /** Mail box number */
 #define ACCOUNT_MAILBOX		   "Account.mailbox"
-/** SIP parameter: full name */
-#define ACCOUNT_SIP_FULL_NAME      "SIP.fullName"
 /** SIP parameter: host name */
-#define ACCOUNT_SIP_HOST_PART      "SIP.hostPart"
-/** SIP parameter: user name */
-#define ACCOUNT_SIP_USER_PART      "SIP.userPart"
+#define ACCOUNT_SIP_HOST      "SIP.hostPart"
 /** SIP parameter: authentification name */
-#define ACCOUNT_SIP_AUTH_NAME      "SIP.username"
+#define ACCOUNT_SIP_USER      "SIP.username"
 /** SIP parameter: password */
 #define ACCOUNT_SIP_PASSWORD       "SIP.password"
 /** SIP parameter: proxy address */
@@ -54,14 +50,12 @@
 #define ACCOUNT_SIP_STUN_SERVER	   "STUN.server"
 /** SIP parameter: tells if stun is enabled or not */
 #define ACCOUNT_SIP_STUN_ENABLED   "STUN.enable"
-/** IAX2 parameter: full name */
-#define ACCOUNT_IAX_FULL_NAME      "IAX.fullName"
 /** IAX2 parameter: host name */
 #define ACCOUNT_IAX_HOST           "IAX.host"
 /** IAX2 parameter: user name */
 #define ACCOUNT_IAX_USER           "IAX.user"
 /** IAX2 parameter: password name */
-#define ACCOUNT_IAX_PASS           "IAX.pass"
+#define ACCOUNT_IAX_PASSWORD           "IAX.password"
 
 /** Error while opening capture device */
 #define ALSA_CAPTURE_DEVICE	      0x0001
diff --git a/src/account.h b/src/account.h
index 8a820ad015..7cb4eff57c 100644
--- a/src/account.h
+++ b/src/account.h
@@ -45,24 +45,18 @@ typedef std::string AccountID;
 #define CONFIG_ACCOUNT_ALIAS  "Account.alias"
 /** Mail box number */
 #define CONFIG_ACCOUNT_MAILBOX	"Account.mailbox"
-/** IAX paramater : full name */
-#define IAX_FULL_NAME         "IAX.fullName"
 /** IAX paramater : host name */
 #define IAX_HOST              "IAX.host"
 /** IAX paramater : user name */
 #define IAX_USER              "IAX.user"
 /** IAX paramater : password */
-#define IAX_PASS              "IAX.pass"
-/** SIP parameter : full name */
-#define SIP_FULL_NAME         "SIP.fullName"
-/** SIP parameter : user name */
-#define SIP_USER_PART         "SIP.userPart"
+#define IAX_PASSWORD          "IAX.password"
 /** SIP parameter : authorization name */
-#define SIP_AUTH_NAME         "SIP.username"
+#define SIP_USER	      "SIP.username"
 /** SIP parameter : password */
 #define SIP_PASSWORD          "SIP.password"
 /** SIP parameter : host name */
-#define SIP_HOST_PART         "SIP.hostPart"
+#define SIP_HOST	      "SIP.hostPart"
 /** SIP parameter : proxy address */
 #define SIP_PROXY             "SIP.proxy"
 /** SIP parameter : stun server address */
diff --git a/src/iaxaccount.cpp b/src/iaxaccount.cpp
index 6882274fc6..461e75019e 100644
--- a/src/iaxaccount.cpp
+++ b/src/iaxaccount.cpp
@@ -46,7 +46,7 @@ IAXAccount::registerVoIPLink()
     // Stuff needed for IAX registration
     thislink->setHost(Manager::instance().getConfigString(_accountID, IAX_HOST));
     thislink->setUser(Manager::instance().getConfigString(_accountID, IAX_USER));
-    thislink->setPass(Manager::instance().getConfigString(_accountID, IAX_PASS));
+    thislink->setPass(Manager::instance().getConfigString(_accountID, IAX_PASSWORD));
   }
 
   _link->sendRegister();
diff --git a/src/iaxvoiplink.cpp b/src/iaxvoiplink.cpp
index 2e78672d32..a63b26f9d1 100644
--- a/src/iaxvoiplink.cpp
+++ b/src/iaxvoiplink.cpp
@@ -361,7 +361,6 @@ bool
 IAXVoIPLink::sendRegister() 
 {
   bool result = false;
-
   if (_host.empty()) {
     return false;
   }
diff --git a/src/iaxvoiplink.h b/src/iaxvoiplink.h
index 9e2acd6c8d..6cc9ab339a 100644
--- a/src/iaxvoiplink.h
+++ b/src/iaxvoiplink.h
@@ -267,9 +267,6 @@ class IAXVoIPLink : public VoIPLink
     /** IAX Password */
     std::string _pass;
 
-    /** IAX full name */
-    std::string _fullName;
-
     /** Timestamp of when we should refresh the registration up with
      * the registrar.  Values can be: EPOCH timestamp, 0 if we want no registration, 1
      * to force a registration. */
diff --git a/src/managerimpl.cpp b/src/managerimpl.cpp
index fdf956260c..f26e54f7bc 100644
--- a/src/managerimpl.cpp
+++ b/src/managerimpl.cpp
@@ -1753,23 +1753,12 @@ ManagerImpl::getAccountDetails(const AccountID& accountID)
 	)
       );
 
-  if (accountType == "SIP") {
-    a.insert(
-	std::pair<std::string, std::string>(
-	  SIP_FULL_NAME, 
-	  getConfigString(accountID, SIP_FULL_NAME)
-	  )
-	);
-    a.insert(
-	std::pair<std::string, std::string>(
-	  SIP_USER_PART, 
-	  getConfigString(accountID, SIP_USER_PART)
-	  )
-	);
+  if( accountType == "SIP")
+  {
     a.insert(
 	std::pair<std::string, std::string>(
-	  SIP_AUTH_NAME, 
-	  getConfigString(accountID, SIP_AUTH_NAME)
+	  SIP_USER, 
+	  getConfigString(accountID, SIP_USER)
 	  )
 	);
     a.insert(
@@ -1780,8 +1769,8 @@ ManagerImpl::getAccountDetails(const AccountID& accountID)
 	);
     a.insert(
 	std::pair<std::string, std::string>(
-	  SIP_HOST_PART, 
-	  getConfigString(accountID, SIP_HOST_PART)
+	  SIP_HOST, 
+	  getConfigString(accountID, SIP_HOST)
 	  )
 	);
     a.insert(
@@ -1810,12 +1799,6 @@ ManagerImpl::getAccountDetails(const AccountID& accountID)
 	);
   }
   else if (accountType == "IAX") {
-    a.insert(
-	std::pair<std::string, std::string>(
-	  IAX_FULL_NAME, 
-	  getConfigString(accountID, IAX_FULL_NAME)
-	  )
-	);
     a.insert(
 	std::pair<std::string, std::string>(
 	  IAX_HOST, 
@@ -1830,8 +1813,8 @@ ManagerImpl::getAccountDetails(const AccountID& accountID)
 	);
     a.insert(
 	std::pair<std::string, std::string>(
-	  IAX_PASS, 
-	  getConfigString(accountID, IAX_PASS)
+	  IAX_PASSWORD, 
+	  getConfigString(accountID, IAX_PASSWORD)
 	  )
 	);
     a.insert(
@@ -1857,30 +1840,23 @@ ManagerImpl::setAccountDetails( const ::DBus::String& accountID,
   std::string accountType = (*details.find(CONFIG_ACCOUNT_TYPE)).second;
 
   setConfig(accountID, CONFIG_ACCOUNT_ALIAS, (*details.find(CONFIG_ACCOUNT_ALIAS)).second);
-  //setConfig(accountID, CONFIG_ACCOUNT_AUTO_REGISTER, 
-  // (*details.find(CONFIG_ACCOUNT_AUTO_REGISTER)).second == "TRUE" ? "1": "0" );
-  setConfig(accountID, CONFIG_ACCOUNT_ENABLE, 
-      (*details.find(CONFIG_ACCOUNT_ENABLE)).second == "TRUE" ? "1": "0" );
+  setConfig(accountID, CONFIG_ACCOUNT_ENABLE, (*details.find(CONFIG_ACCOUNT_ENABLE)).second == "TRUE" ? "1": "0" );
   setConfig(accountID, CONFIG_ACCOUNT_TYPE, accountType);
-
+  
   if (accountType == "SIP") {
-    setConfig(accountID, SIP_FULL_NAME, (*details.find(SIP_FULL_NAME)).second);
-    setConfig(accountID, SIP_USER_PART, (*details.find(SIP_USER_PART)).second);
-    setConfig(accountID, SIP_AUTH_NAME, (*details.find(SIP_AUTH_NAME)).second);
+    setConfig(accountID, SIP_USER, (*details.find(SIP_USER)).second);
     setConfig(accountID, SIP_PASSWORD,  (*details.find(SIP_PASSWORD)).second);
-    setConfig(accountID, SIP_HOST_PART, (*details.find(SIP_HOST_PART)).second);
-    //setConfig(accountID, SIP_PROXY,     (*details.find(SIP_PROXY)).second);
+    setConfig(accountID, SIP_HOST, (*details.find(SIP_HOST)).second);
     setConfig(accountID, SIP_STUN_SERVER,(*details.find(SIP_STUN_SERVER)).second);
     setConfig(accountID, CONFIG_ACCOUNT_MAILBOX,(*details.find(CONFIG_ACCOUNT_MAILBOX)).second);
     setConfig(accountID, SIP_USE_STUN,
         (*details.find(SIP_USE_STUN)).second == "TRUE" ? "1" : "0");
   }
   else if (accountType == "IAX") {
-    setConfig(accountID, IAX_FULL_NAME, (*details.find(IAX_FULL_NAME)).second);
-    setConfig(accountID, IAX_HOST,      (*details.find(IAX_HOST)).second);
-    setConfig(accountID, IAX_USER,      (*details.find(IAX_USER)).second);
-    setConfig(accountID, IAX_PASS,      (*details.find(IAX_PASS)).second);    
-    setConfig(accountID, CONFIG_ACCOUNT_MAILBOX,(*details.find(CONFIG_ACCOUNT_MAILBOX)).second);
+    setConfig(accountID, IAX_HOST, (*details.find(IAX_HOST)).second);
+    setConfig(accountID, IAX_USER, (*details.find(IAX_USER)).second);
+    setConfig(accountID, IAX_PASSWORD, (*details.find(IAX_PASSWORD)).second);    
+    setConfig(accountID, CONFIG_ACCOUNT_MAILBOX, (*details.find(CONFIG_ACCOUNT_MAILBOX)).second);
   } else {
     _debug("Unknown account type in setAccountDetails(): %s\n", accountType.c_str());
   }
@@ -1922,6 +1898,7 @@ ManagerImpl::sendRegister( const ::DBus::String& accountID , bool expire )
   void
 ManagerImpl::addAccount(const std::map< ::DBus::String, ::DBus::String >& details)
 {
+
   /** @todo Deal with both the _accountMap and the Configuration */
   std::string accountType = (*details.find(CONFIG_ACCOUNT_TYPE)).second;
   Account* newAccount;
@@ -1941,7 +1918,6 @@ ManagerImpl::addAccount(const std::map< ::DBus::String, ::DBus::String >& detail
     return;
   }
   _accountMap[newAccountID] = newAccount;
-
   setAccountDetails(accountID.str(), details);
 
   saveConfig();
diff --git a/src/sipaccount.cpp b/src/sipaccount.cpp
index 1adcd5dbdd..766d6d397e 100644
--- a/src/sipaccount.cpp
+++ b/src/sipaccount.cpp
@@ -38,9 +38,7 @@ SIPAccount::~SIPAccount()
 void
 SIPAccount::registerVoIPLink()
 {
-  _debug("SIPAccount: register account %s\n" , getAccountID().c_str());
-  _link->setFullName(Manager::instance().getConfigString(_accountID,SIP_FULL_NAME));
-  _link->setHostName(Manager::instance().getConfigString(_accountID,SIP_HOST_PART));
+  _link->setHostName(Manager::instance().getConfigString(_accountID,SIP_HOST));
   int useStun = Manager::instance().getConfigInt(_accountID,SIP_USE_STUN);
   
   SIPVoIPLink* thislink = dynamic_cast<SIPVoIPLink*> (_link);
@@ -50,8 +48,7 @@ SIPAccount::registerVoIPLink()
   _link->init();
   // Stuff needed for SIP registration.
   thislink->setProxy   (Manager::instance().getConfigString(_accountID,SIP_PROXY));
-  thislink->setUserPart(Manager::instance().getConfigString(_accountID,SIP_USER_PART));
-  thislink->setAuthName(Manager::instance().getConfigString(_accountID,SIP_AUTH_NAME));
+  thislink->setAuthName(Manager::instance().getConfigString(_accountID,SIP_USER));
   thislink->setPassword(Manager::instance().getConfigString(_accountID,SIP_PASSWORD));
   _link->sendRegister();
 }
diff --git a/src/sipvoiplink.cpp b/src/sipvoiplink.cpp
index 47320dce08..2741665193 100644
--- a/src/sipvoiplink.cpp
+++ b/src/sipvoiplink.cpp
@@ -147,7 +147,7 @@ SIPVoIPLink::init()
     std::string tmp = std::string(PROGNAME_GLOBAL) + "/" + std::string(SFLPHONED_VERSION);
     eXosip_set_user_agent(tmp.data());
   
-    _debug("  SIP Init: starting loop thread (SIP events)\n");
+    _debug(" SIP Init: starting loop thread (SIP events)\n" );
     _evThread->start();
   }
 
@@ -452,14 +452,13 @@ SIPVoIPLink::sendRegister()
     return false;
   }
 
-  if (_userpart.empty()) {
+  if (_authname.empty()) {
     return false;
   }
 
-
   std::string proxy = "sip:" + _proxy;
   hostname = "sip:" + hostname;
-  std::string from = SIPFromHeader(_userpart, getHostName());
+  std::string from = SIPFromHeader(_authname, getHostName());
   
   osip_message_t *reg = NULL;
   eXosip_lock();
@@ -515,7 +514,7 @@ SIPVoIPLink::sendSIPAuthentification()
 {
   std::string login = _authname;
   if (login.empty()) {
-    login = _userpart;
+    return false;
   }
   if (login.empty()) {
     /** @todo Ajouter ici un call à setRegistrationState(Error, "Fill balh") ? */
@@ -963,7 +962,7 @@ SIPVoIPLink::subscribePresenceForContact(Contact* contact)
 	std::ostringstream from;
 	
 	// Build URL of sender
-	from << "sip:" << _userpart.data() << "@" << getHostName().data();
+	from << "sip:" << _authname.data() << "@" << getHostName().data();
 
 	// Subscribe for changes on server but also polls at every 5000 interval
 	i = eXosip_subscribe_build_initial_request(&subscription,
@@ -996,7 +995,7 @@ SIPVoIPLink::publishPresenceStatus(std::string status)
 	std::string note;
 	
 	// Build URL of sender
-	url << "sip:" << _userpart.data() << "@" << getHostName().data();
+	url << "sip:" << _authname.data() << "@" << getHostName().data();
 	
 	// TODO
 	// Call function to convert status in basic and note
@@ -1152,7 +1151,7 @@ SIPVoIPLink::getSipFrom() {
   if ( host.empty() ) {
     host = _localIPAddress;
   }
-  return SIPFromHeader(_userpart, host);
+  return SIPFromHeader(_authname, host);
 }
 
 std::string
diff --git a/src/sipvoiplink.h b/src/sipvoiplink.h
index a62aa7b929..9ad3950251 100644
--- a/src/sipvoiplink.h
+++ b/src/sipvoiplink.h
@@ -183,12 +183,6 @@ class SIPVoIPLink : public VoIPLink
      */
     void setProxy(const std::string& proxy) { _proxy = proxy; }
 
-    /**
-     * Set the user part
-     * @param userpart	User part
-     */
-    void setUserPart(const std::string& userpart) { _userpart = userpart; }
-
     /**
      * Set the authentification name
      * @param authname The authentification name
-- 
GitLab