diff --git a/sflphone-client-gnome/src/config/addressbook-config.c b/sflphone-client-gnome/src/config/addressbook-config.c
index 9851ce64338fb884ca94fbcc4610ea90508bf913..4ce36174f29df0e04eb9a1f4320749e625f7aa49 100644
--- a/sflphone-client-gnome/src/config/addressbook-config.c
+++ b/sflphone-client-gnome/src/config/addressbook-config.c
@@ -27,108 +27,119 @@ GtkWidget *book_tree_view;
 
 enum
 {
-  COLUMN_BOOK_ACTIVE, COLUMN_BOOK_NAME, COLUMN_BOOK_UID
+    COLUMN_BOOK_ACTIVE, COLUMN_BOOK_NAME, COLUMN_BOOK_UID
 };
 
-void
+    void
 addressbook_config_load_parameters(AddressBook_Config **settings)
 {
 
-  GHashTable *_params = NULL;
-  AddressBook_Config *_settings;
+    GHashTable *_params = NULL;
+    AddressBook_Config *_settings;
 
-  // Allocate a struct
-  _settings = g_new0 (AddressBook_Config, 1);
+    // Allocate a struct
+    _settings = g_new0 (AddressBook_Config, 1);
 
-  // Fetch the settings from D-Bus
-  _params = (GHashTable*) dbus_get_addressbook_settings();
+    // Fetch the settings from D-Bus
+    _params = (GHashTable*) dbus_get_addressbook_settings();
 
-  if (_params == NULL)
+    if (_params == NULL)
     {
-      _settings->max_results = 30;
-      _settings->display_contact_photo = 0;
-      _settings->search_phone_business = 1;
-      _settings->search_phone_home = 1;
-      _settings->search_phone_mobile = 1;
+        _settings->enable = 1;
+        _settings->max_results = 30;
+        _settings->display_contact_photo = 0;
+        _settings->search_phone_business = 1;
+        _settings->search_phone_home = 1;
+        _settings->search_phone_mobile = 1;
     }
-  else
+    else
     {
-      _settings->max_results = (guint) (g_hash_table_lookup(_params,
-          ADDRESSBOOK_MAX_RESULTS));
-      _settings->display_contact_photo = (guint) (g_hash_table_lookup(_params,
-          ADDRESSBOOK_DISPLAY_CONTACT_PHOTO));
-      _settings->search_phone_business = (guint) (g_hash_table_lookup(_params,
-          ADDRESSBOOK_DISPLAY_PHONE_BUSINESS));
-      _settings->search_phone_home = (guint) (g_hash_table_lookup(_params,
-          ADDRESSBOOK_DISPLAY_PHONE_HOME));
-      _settings->search_phone_mobile = (guint) (g_hash_table_lookup(_params,
-          ADDRESSBOOK_DISPLAY_PHONE_MOBILE));
+        _settings->enable = (guint) (g_hash_table_lookup (_params, 
+                    ADDRESSBOOK_ENABLE));
+        _settings->max_results = (guint) (g_hash_table_lookup(_params,
+                    ADDRESSBOOK_MAX_RESULTS));
+        _settings->display_contact_photo = (guint) (g_hash_table_lookup(_params,
+                    ADDRESSBOOK_DISPLAY_CONTACT_PHOTO));
+        _settings->search_phone_business = (guint) (g_hash_table_lookup(_params,
+                    ADDRESSBOOK_DISPLAY_PHONE_BUSINESS));
+        _settings->search_phone_home = (guint) (g_hash_table_lookup(_params,
+                    ADDRESSBOOK_DISPLAY_PHONE_HOME));
+        _settings->search_phone_mobile = (guint) (g_hash_table_lookup(_params,
+                    ADDRESSBOOK_DISPLAY_PHONE_MOBILE));
     }
 
-  *settings = _settings;
+    *settings = _settings;
 }
 
-void
+    void
 addressbook_config_save_parameters(void)
 {
 
-  GHashTable *params = NULL;
-
-  params = g_hash_table_new(NULL, g_str_equal);
-  g_hash_table_replace(params, (gpointer) ADDRESSBOOK_MAX_RESULTS,
-      (gpointer) addressbook_config->max_results);
-  g_hash_table_replace(params, (gpointer) ADDRESSBOOK_DISPLAY_CONTACT_PHOTO,
-      (gpointer) addressbook_config->display_contact_photo);
-  g_hash_table_replace(params, (gpointer) ADDRESSBOOK_DISPLAY_PHONE_BUSINESS,
-      (gpointer) addressbook_config->search_phone_business);
-  g_hash_table_replace(params, (gpointer) ADDRESSBOOK_DISPLAY_PHONE_HOME,
-      (gpointer) addressbook_config->search_phone_home);
-  g_hash_table_replace(params, (gpointer) ADDRESSBOOK_DISPLAY_PHONE_MOBILE,
-      (gpointer) addressbook_config->search_phone_mobile);
-
-  dbus_set_addressbook_settings(params);
-
-  // Decrement the reference count
-  g_hash_table_unref(params);
+    GHashTable *params = NULL;
+
+    params = g_hash_table_new(NULL, g_str_equal);
+    g_hash_table_replace(params, (gpointer) ADDRESSBOOK_ENABLE,
+            (gpointer) addressbook_config->enable);
+    g_hash_table_replace(params, (gpointer) ADDRESSBOOK_MAX_RESULTS,
+            (gpointer) addressbook_config->max_results);
+    g_hash_table_replace(params, (gpointer) ADDRESSBOOK_DISPLAY_CONTACT_PHOTO,
+            (gpointer) addressbook_config->display_contact_photo);
+    g_hash_table_replace(params, (gpointer) ADDRESSBOOK_DISPLAY_PHONE_BUSINESS,
+            (gpointer) addressbook_config->search_phone_business);
+    g_hash_table_replace(params, (gpointer) ADDRESSBOOK_DISPLAY_PHONE_HOME,
+            (gpointer) addressbook_config->search_phone_home);
+    g_hash_table_replace(params, (gpointer) ADDRESSBOOK_DISPLAY_PHONE_MOBILE,
+            (gpointer) addressbook_config->search_phone_mobile);
+
+    dbus_set_addressbook_settings(params);
+
+    // Decrement the reference count
+    g_hash_table_unref(params);
 }
 
-static void
-max_results_cb(GtkRange* scale)
+    static void
+enable_cb (GtkWidget *widget)
 {
+    addressbook_config->enable
+        = (guint) gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+}
 
-  addressbook_config->max_results = (guint) gtk_range_get_value(GTK_RANGE (scale));
+    static void
+max_results_cb (GtkSpinButton *button)
+{
+    addressbook_config->max_results = gtk_spin_button_get_value_as_int(button);
 }
 
-static void
+    static void
 display_contact_photo_cb(GtkWidget *widget)
 {
 
-  addressbook_config->display_contact_photo
-      = (guint) gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+    addressbook_config->display_contact_photo
+        = (guint) gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 }
 
-static void
+    static void
 search_phone_business_cb(GtkWidget *widget)
 {
 
-  addressbook_config->search_phone_business
-      = (guint) gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+    addressbook_config->search_phone_business
+        = (guint) gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 }
 
-static void
+    static void
 search_phone_home_cb(GtkWidget *widget)
 {
 
-  addressbook_config->search_phone_home = (guint) gtk_toggle_button_get_active(
-      GTK_TOGGLE_BUTTON(widget));
+    addressbook_config->search_phone_home = (guint) gtk_toggle_button_get_active(
+            GTK_TOGGLE_BUTTON(widget));
 }
 
-static void
+    static void
 search_phone_mobile_cb(GtkWidget *widget)
 {
 
-  addressbook_config->search_phone_mobile
-      = (guint) gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+    addressbook_config->search_phone_mobile
+        = (guint) gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 }
 
 /**
@@ -137,240 +148,244 @@ search_phone_mobile_cb(GtkWidget *widget)
  */
 static void
 addressbook_config_book_active_toggled(
-    GtkCellRendererToggle *renderer UNUSED, gchar *path, gpointer data)
+        GtkCellRendererToggle *renderer UNUSED, gchar *path, gpointer data)
 {
-  GtkTreeIter iter;
-  GtkTreePath *treePath;
-  GtkTreeModel *model;
-  gboolean active;
-  gchar* name;
-  gchar* uid;
+    GtkTreeIter iter;
+    GtkTreePath *treePath;
+    GtkTreeModel *model;
+    gboolean active;
+    gchar* name;
+    gchar* uid;
 
-  // Get path of clicked book active toggle box
-  treePath = gtk_tree_path_new_from_string(path);
-  model = gtk_tree_view_get_model(GTK_TREE_VIEW(data));
-  gtk_tree_model_get_iter(model, &iter, treePath);
+    // Get path of clicked book active toggle box
+    treePath = gtk_tree_path_new_from_string(path);
+    model = gtk_tree_view_get_model(GTK_TREE_VIEW(data));
+    gtk_tree_model_get_iter(model, &iter, treePath);
 
-  // Get active value  at iteration
-  gtk_tree_model_get(model, &iter, COLUMN_BOOK_ACTIVE, &active,
-      COLUMN_BOOK_UID, &uid, COLUMN_BOOK_NAME, &name, -1);
+    // Get active value  at iteration
+    gtk_tree_model_get(model, &iter, COLUMN_BOOK_ACTIVE, &active,
+            COLUMN_BOOK_UID, &uid, COLUMN_BOOK_NAME, &name, -1);
 
-  // Toggle active value
-  active = !active;
+    // Toggle active value
+    active = !active;
 
-  // Store value
-  gtk_list_store_set(GTK_LIST_STORE(model), &iter, COLUMN_BOOK_ACTIVE, active, -1);
+    // Store value
+    gtk_list_store_set(GTK_LIST_STORE(model), &iter, COLUMN_BOOK_ACTIVE, active, -1);
 
-  gtk_tree_path_free(treePath);
+    gtk_tree_path_free(treePath);
 
-  // Update current memory stored books data
-  books_get_book_data_by_uid(uid)->active = active;
+    // Update current memory stored books data
+    books_get_book_data_by_uid(uid)->active = active;
 
-  // Save data
+    // Save data
 
-  gboolean valid;
+    gboolean valid;
 
-  // Initiate double array char list for one string
-  const gchar** list = (void*) malloc(sizeof(void*));
-  int c = 0;
+    // Initiate double array char list for one string
+    const gchar** list = (void*) malloc(sizeof(void*));
+    int c = 0;
 
-  /* Get the first iter in the list */
-  valid = gtk_tree_model_get_iter_first(model, &iter);
+    /* Get the first iter in the list */
+    valid = gtk_tree_model_get_iter_first(model, &iter);
 
-  while (valid)
+    while (valid)
     {
-      // Get active value at iteration
-      gtk_tree_model_get(model, &iter, COLUMN_BOOK_ACTIVE, &active,
-          COLUMN_BOOK_UID, &uid, COLUMN_BOOK_NAME, &name, -1);
+        // Get active value at iteration
+        gtk_tree_model_get(model, &iter, COLUMN_BOOK_ACTIVE, &active,
+                COLUMN_BOOK_UID, &uid, COLUMN_BOOK_NAME, &name, -1);
 
-      if (active)
+        if (active)
         {
-          // Reallocate memory each time
-          if (c != 0)
-            list = (void*) realloc(list, (c + 1) * sizeof(void*));
+            // Reallocate memory each time
+            if (c != 0)
+                list = (void*) realloc(list, (c + 1) * sizeof(void*));
 
-          *(list + c) = uid;
-          c++;
+            *(list + c) = uid;
+            c++;
         }
 
-      valid = gtk_tree_model_iter_next(model, &iter);
+        valid = gtk_tree_model_iter_next(model, &iter);
     }
 
-  // Allocate NULL array at the end for Dbus
-  list = (void*) realloc(list, (c + 1) * sizeof(void*));
-  *(list + c) = NULL;
+    // Allocate NULL array at the end for Dbus
+    list = (void*) realloc(list, (c + 1) * sizeof(void*));
+    *(list + c) = NULL;
 
-  // Call daemon to store in config file
-  dbus_set_addressbook_list(list);
+    // Call daemon to store in config file
+    dbus_set_addressbook_list(list);
 
-  free(list);
+    free(list);
 }
 
-static void
+    static void
 addressbook_config_fill_book_list()
 {
-  GtkTreeIter list_store_iterator;
-  GSList *book_list_iterator;
-  GtkListStore *store;
-  book_data_t *book_data;
-  GSList *books_data = addressbook_get_books_data();
-
-  // Get model of view and clear it
-  store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(book_tree_view)));
-  gtk_list_store_clear(store);
-
-  // Populate window
-  for (book_list_iterator = books_data; book_list_iterator != NULL; book_list_iterator
-      = book_list_iterator->next)
+    GtkTreeIter list_store_iterator;
+    GSList *book_list_iterator;
+    GtkListStore *store;
+    book_data_t *book_data;
+    GSList *books_data = addressbook_get_books_data();
+
+    // Get model of view and clear it
+    store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(book_tree_view)));
+    gtk_list_store_clear(store);
+
+    // Populate window
+    for (book_list_iterator = books_data; book_list_iterator != NULL; book_list_iterator
+            = book_list_iterator->next)
     {
-      book_data = (book_data_t *) book_list_iterator->data;
-      gtk_list_store_append(store, &list_store_iterator);
-      gtk_list_store_set(store, &list_store_iterator, COLUMN_BOOK_ACTIVE,
-          book_data->active, COLUMN_BOOK_UID, book_data->uid, COLUMN_BOOK_NAME,
-          book_data->name, -1);
+        book_data = (book_data_t *) book_list_iterator->data;
+        gtk_list_store_append(store, &list_store_iterator);
+        gtk_list_store_set(store, &list_store_iterator, COLUMN_BOOK_ACTIVE,
+                book_data->active, COLUMN_BOOK_UID, book_data->uid, COLUMN_BOOK_NAME,
+                book_data->name, -1);
     }
 
-  store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(book_tree_view)));
+    store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(book_tree_view)));
 }
 
-GtkWidget*
+    GtkWidget*
 create_addressbook_settings()
 {
 
-  GtkWidget *ret, *result_frame, *table, *value, *label, *photo, *item;
-
-  GtkListStore *store;
-  GtkCellRenderer *renderer;
-  GtkTreeSelection *tree_selection;
-  GtkTreeViewColumn *tree_view_column;
-  GtkWidget *scrolled_window, *hbox;
-
-  // Load the user value
-  addressbook_config_load_parameters(&addressbook_config);
-
-  ret = gtk_vbox_new(FALSE, 10);
-  gtk_container_set_border_width(GTK_CONTAINER(ret), 10);
-
-  result_frame = gtk_frame_new(_("General"));
-  gtk_box_pack_start(GTK_BOX(ret), result_frame, FALSE, FALSE, 0);
-  gtk_widget_show (result_frame);
-
-  table = gtk_table_new ( 5, 3, FALSE/* homogeneous */);
-  gtk_table_set_row_spacings( GTK_TABLE(table), 10);
-  gtk_table_set_col_spacings( GTK_TABLE(table), 10);
-  gtk_widget_show(table);
-  gtk_container_add( GTK_CONTAINER (result_frame) , table );
-
-  // SCALE BUTTON - NUMBER OF RESULTS
-      hbox = gtk_hbox_new(FALSE, 0);
-      label = gtk_label_new (_("Maximum results: "));
-      gtk_box_pack_start(GTK_BOX(hbox),label,FALSE,FALSE,0);
-      value = gtk_hscale_new_with_range (25.0 , 50.0 , 5.0);
-      gtk_label_set_mnemonic_widget (GTK_LABEL (label), value);
-      gtk_scale_set_digits (GTK_SCALE(value) , 0);
-      gtk_scale_set_value_pos (GTK_SCALE(value) , GTK_POS_RIGHT);
-      gtk_range_set_value (GTK_RANGE( value ) , addressbook_config->max_results);
-      g_signal_connect (G_OBJECT (value) , "value-changed" , G_CALLBACK(max_results_cb), NULL );
-      gtk_box_pack_start(GTK_BOX(hbox),value,TRUE,TRUE,10);
-      gtk_table_attach ( GTK_TABLE( table ), hbox, 1, 3, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND |GTK_FILL, 0, 0);
-  gtk_widget_show_all(hbox);
-
-  // PHOTO DISPLAY
-  photo = gtk_check_button_new_with_mnemonic( _("_Display contact photo if available"));
-  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(photo), addressbook_config->display_contact_photo);
-  g_signal_connect (G_OBJECT(photo) , "clicked" , G_CALLBACK (display_contact_photo_cb), NULL);
-  gtk_table_attach ( GTK_TABLE( table ), photo, 1, 3, 2, 3, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
-
-  result_frame = gtk_frame_new(_("Fields"));
-  gtk_box_pack_start(GTK_BOX(ret), result_frame, FALSE, FALSE, 0);
-  gtk_widget_show (result_frame);
-
-  table = gtk_table_new ( 5, 3, FALSE);
-  gtk_table_set_row_spacings( GTK_TABLE(table), 10);
-  gtk_table_set_col_spacings( GTK_TABLE(table), 10);
-  gtk_widget_show(table);
-  gtk_container_add( GTK_CONTAINER (result_frame) , table );
-
-  item = gtk_check_button_new_with_mnemonic( _("_Business phone"));
-  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(item), addressbook_config->search_phone_business);
-  g_signal_connect (G_OBJECT(item) , "clicked" , G_CALLBACK (search_phone_business_cb) , NULL);
-  gtk_table_attach ( GTK_TABLE( table ), item, 1, 3, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
-
-  item = gtk_check_button_new_with_mnemonic( _("_Home phone"));
-  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(item), addressbook_config->search_phone_home);
-  g_signal_connect (G_OBJECT(item) , "clicked" , G_CALLBACK (search_phone_home_cb) , NULL);
-  gtk_table_attach ( GTK_TABLE( table ), item, 1, 3, 2, 3, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
-
-  item = gtk_check_button_new_with_mnemonic( _("_Mobile phone"));
-  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(item), addressbook_config->search_phone_mobile);
-  g_signal_connect (G_OBJECT(item) , "clicked" , G_CALLBACK (search_phone_mobile_cb) , NULL);
-  gtk_table_attach ( GTK_TABLE( table ), item, 1, 3, 3, 4, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
-
-  result_frame = gtk_frame_new(_("Books"));
-  gtk_box_pack_start(GTK_BOX(ret), result_frame, TRUE, TRUE, 0);
-  gtk_widget_show (result_frame);
-
-  scrolled_window = gtk_scrolled_window_new(NULL, NULL);
-  gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
-  gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolled_window), GTK_SHADOW_IN);
-
-  gtk_container_add( GTK_CONTAINER (result_frame) , scrolled_window );
-
-  store = gtk_list_store_new(3,
-          G_TYPE_BOOLEAN,             // Active
-          G_TYPE_STRING,             // uid
-          G_TYPE_STRING              // Name
-          );
-
-  // Create tree view with list store
-  book_tree_view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
-
-  // Get tree selection manager
-  tree_selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(book_tree_view));
-
-  // Active column
-  renderer = gtk_cell_renderer_toggle_new();
-  tree_view_column = gtk_tree_view_column_new_with_attributes("", renderer, "active", COLUMN_BOOK_ACTIVE, NULL);
-  gtk_tree_view_append_column(GTK_TREE_VIEW(book_tree_view), tree_view_column);
-
-  // Toggle active property on clicked
-  g_signal_connect(G_OBJECT(renderer), "toggled", G_CALLBACK(addressbook_config_book_active_toggled), (gpointer)book_tree_view);
-
-  // Name column
-  renderer = gtk_cell_renderer_text_new();
-  tree_view_column = gtk_tree_view_column_new_with_attributes(_("Name"), renderer, "markup", COLUMN_BOOK_NAME, NULL);
-  gtk_tree_view_append_column(GTK_TREE_VIEW(book_tree_view), tree_view_column);
-
-  g_object_unref(G_OBJECT(store));
-  gtk_container_add(GTK_CONTAINER(scrolled_window), book_tree_view);
-
-  addressbook_config_fill_book_list();
-
-  gtk_widget_show_all(ret);
-
-  return ret;
+    GtkWidget *ret, *result_frame, *table, *value, *label, *photo, *item;
+
+    GtkListStore *store;
+    GtkCellRenderer *renderer;
+    GtkTreeSelection *tree_selection;
+    GtkTreeViewColumn *tree_view_column;
+    GtkWidget *scrolled_window, *hbox;
+
+    // Load the user value
+    addressbook_config_load_parameters(&addressbook_config);
+
+    ret = gtk_vbox_new(FALSE, 10);
+    gtk_container_set_border_width(GTK_CONTAINER(ret), 10);
+
+    result_frame = gtk_frame_new(_("General"));
+    gtk_box_pack_start(GTK_BOX(ret), result_frame, FALSE, FALSE, 0);
+    gtk_widget_show (result_frame);
+
+    table = gtk_table_new ( 6, 3, FALSE/* homogeneous */);
+    gtk_table_set_row_spacings( GTK_TABLE(table), 10);
+    gtk_table_set_col_spacings( GTK_TABLE(table), 10);
+    gtk_widget_show(table);
+    gtk_container_add( GTK_CONTAINER (result_frame) , table );
+
+    // PHOTO DISPLAY
+    item = gtk_check_button_new_with_mnemonic( _("_Use Evolution address book"));
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(item), addressbook_config->enable);
+    g_signal_connect (G_OBJECT(item) , "clicked" , G_CALLBACK (enable_cb), NULL);
+    gtk_table_attach ( GTK_TABLE( table ), item, 1, 3, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+
+    // SCALE BUTTON - NUMBER OF RESULTS
+    hbox = gtk_hbox_new(FALSE, 0);
+    label = gtk_label_new (_("Download limit:"));
+    gtk_box_pack_start(GTK_BOX(hbox),label,FALSE,FALSE,0);
+    value = gtk_spin_button_new_with_range(1, 500, 1);
+    gtk_label_set_mnemonic_widget (GTK_LABEL (label), value);
+    gtk_spin_button_set_value (GTK_SPIN_BUTTON( value ) , addressbook_config->max_results);
+    g_signal_connect (G_OBJECT (value) , "value-changed" , G_CALLBACK(max_results_cb), NULL );
+    gtk_box_pack_start(GTK_BOX(hbox),value,TRUE,TRUE,10);
+    gtk_table_attach ( GTK_TABLE( table ), hbox, 1, 3, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND |GTK_FILL, 0, 0);
+    gtk_widget_show_all(hbox);
+
+    // PHOTO DISPLAY
+    photo = gtk_check_button_new_with_mnemonic( _("_Display contact photo if available"));
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(photo), addressbook_config->display_contact_photo);
+    g_signal_connect (G_OBJECT(photo) , "clicked" , G_CALLBACK (display_contact_photo_cb), NULL);
+    gtk_table_attach ( GTK_TABLE( table ), photo, 1, 3, 2, 3, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+
+    result_frame = gtk_frame_new(_("Fields"));
+    gtk_box_pack_start(GTK_BOX(ret), result_frame, FALSE, FALSE, 0);
+    gtk_widget_show (result_frame);
+
+    table = gtk_table_new ( 5, 3, FALSE);
+    gtk_table_set_row_spacings( GTK_TABLE(table), 10);
+    gtk_table_set_col_spacings( GTK_TABLE(table), 10);
+    gtk_widget_show(table);
+    gtk_container_add( GTK_CONTAINER (result_frame) , table );
+
+    item = gtk_check_button_new_with_mnemonic( _("_Business phone"));
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(item), addressbook_config->search_phone_business);
+    g_signal_connect (G_OBJECT(item) , "clicked" , G_CALLBACK (search_phone_business_cb) , NULL);
+    gtk_table_attach ( GTK_TABLE( table ), item, 1, 3, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+
+    item = gtk_check_button_new_with_mnemonic( _("_Home phone"));
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(item), addressbook_config->search_phone_home);
+    g_signal_connect (G_OBJECT(item) , "clicked" , G_CALLBACK (search_phone_home_cb) , NULL);
+    gtk_table_attach ( GTK_TABLE( table ), item, 1, 3, 2, 3, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+
+    item = gtk_check_button_new_with_mnemonic( _("_Mobile phone"));
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(item), addressbook_config->search_phone_mobile);
+    g_signal_connect (G_OBJECT(item) , "clicked" , G_CALLBACK (search_phone_mobile_cb) , NULL);
+    gtk_table_attach ( GTK_TABLE( table ), item, 1, 3, 3, 4, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+
+    result_frame = gtk_frame_new(_("Books"));
+    gtk_box_pack_start(GTK_BOX(ret), result_frame, TRUE, TRUE, 0);
+    gtk_widget_show (result_frame);
+
+    scrolled_window = gtk_scrolled_window_new(NULL, NULL);
+    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+    gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolled_window), GTK_SHADOW_IN);
+
+    gtk_container_add( GTK_CONTAINER (result_frame) , scrolled_window );
+
+    store = gtk_list_store_new(3,
+            G_TYPE_BOOLEAN,             // Active
+            G_TYPE_STRING,             // uid
+            G_TYPE_STRING              // Name
+            );
+
+    // Create tree view with list store
+    book_tree_view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
+
+    // Get tree selection manager
+    tree_selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(book_tree_view));
+
+    // Active column
+    renderer = gtk_cell_renderer_toggle_new();
+    tree_view_column = gtk_tree_view_column_new_with_attributes("", renderer, "active", COLUMN_BOOK_ACTIVE, NULL);
+    gtk_tree_view_append_column(GTK_TREE_VIEW(book_tree_view), tree_view_column);
+
+    // Toggle active property on clicked
+    g_signal_connect(G_OBJECT(renderer), "toggled", G_CALLBACK(addressbook_config_book_active_toggled), (gpointer)book_tree_view);
+
+    // Name column
+    renderer = gtk_cell_renderer_text_new();
+    tree_view_column = gtk_tree_view_column_new_with_attributes(_("Name"), renderer, "markup", COLUMN_BOOK_NAME, NULL);
+    gtk_tree_view_append_column(GTK_TREE_VIEW(book_tree_view), tree_view_column);
+
+    g_object_unref(G_OBJECT(store));
+    gtk_container_add(GTK_CONTAINER(scrolled_window), book_tree_view);
+
+    addressbook_config_fill_book_list();
+
+    gtk_widget_show_all(ret);
+
+    return ret;
 }
 
-gboolean
+    gboolean
 addressbook_display(AddressBook_Config *settings, const gchar *field)
 {
 
-  gboolean display = FALSE;
+    gboolean display = FALSE;
 
-  if (g_strcasecmp(field, ADDRESSBOOK_DISPLAY_CONTACT_PHOTO) == 0)
-    display = (settings->display_contact_photo == 1) ? TRUE : FALSE;
+    if (g_strcasecmp(field, ADDRESSBOOK_DISPLAY_CONTACT_PHOTO) == 0)
+        display = (settings->display_contact_photo == 1) ? TRUE : FALSE;
 
-  else if (g_strcasecmp(field, ADDRESSBOOK_DISPLAY_PHONE_BUSINESS) == 0)
-    display = (settings->search_phone_business == 1) ? TRUE : FALSE;
+    else if (g_strcasecmp(field, ADDRESSBOOK_DISPLAY_PHONE_BUSINESS) == 0)
+        display = (settings->search_phone_business == 1) ? TRUE : FALSE;
 
-  else if (g_strcasecmp(field, ADDRESSBOOK_DISPLAY_PHONE_HOME) == 0)
-    display = (settings->search_phone_home == 1) ? TRUE : FALSE;
+    else if (g_strcasecmp(field, ADDRESSBOOK_DISPLAY_PHONE_HOME) == 0)
+        display = (settings->search_phone_home == 1) ? TRUE : FALSE;
 
-  else if (g_strcasecmp(field, ADDRESSBOOK_DISPLAY_PHONE_MOBILE) == 0)
-    display = (settings->search_phone_mobile == 1) ? TRUE : FALSE;
+    else if (g_strcasecmp(field, ADDRESSBOOK_DISPLAY_PHONE_MOBILE) == 0)
+        display = (settings->search_phone_mobile == 1) ? TRUE : FALSE;
 
-  else
-    display = FALSE;
+    else
+        display = FALSE;
 
-  return display;
+    return display;
 }
diff --git a/sflphone-client-gnome/src/config/addressbook-config.h b/sflphone-client-gnome/src/config/addressbook-config.h
index ec7a8d16360e56090421b60120bcd26cd63221b7..6e46698acff248b757ad3c614cc594bbae12f634 100644
--- a/sflphone-client-gnome/src/config/addressbook-config.h
+++ b/sflphone-client-gnome/src/config/addressbook-config.h
@@ -27,6 +27,7 @@
 
 G_BEGIN_DECLS
 
+#define ADDRESSBOOK_ENABLE                  "ADDRESSBOOK_ENABLE"
 #define ADDRESSBOOK_MAX_RESULTS             "ADDRESSBOOK_MAX_RESULTS"
 #define ADDRESSBOOK_DISPLAY_CONTACT_PHOTO   "ADDRESSBOOK_DISPLAY_CONTACT_PHOTO"
 #define ADDRESSBOOK_DISPLAY_PHONE_BUSINESS   "ADDRESSBOOK_DISPLAY_PHONE_BUSINESS"
@@ -35,11 +36,12 @@ G_BEGIN_DECLS
 
 typedef struct _AddressBook_Config
 {
-  guint max_results;
-  guint display_contact_photo;
-  guint search_phone_home;
-  guint search_phone_business;
-  guint search_phone_mobile;
+    guint enable;
+    guint max_results;
+    guint display_contact_photo;
+    guint search_phone_home;
+    guint search_phone_business;
+    guint search_phone_mobile;
 } AddressBook_Config;
 
 /**
diff --git a/sflphone-client-gnome/src/config/configwindow.c b/sflphone-client-gnome/src/config/configwindow.c
index 7a73328371f20663c6ea49b21357ed4e58f65497..f88888205e79fb550549b365f1b4c56fbfe7f789 100644
--- a/sflphone-client-gnome/src/config/configwindow.c
+++ b/sflphone-client-gnome/src/config/configwindow.c
@@ -797,6 +797,7 @@ show_config_window ()
     result = gtk_dialog_run(dialog);
 
     save_configuration_parameters ();
+    toolbar_update_buttons();
 
     dialogOpen = FALSE;
 
diff --git a/sflphone-client-gnome/src/contacts/addressbook.c b/sflphone-client-gnome/src/contacts/addressbook.c
index c9fa4dcbcf230668ed5e21958886d3dcaebcce00..4c08210f3eaa244637b4b0783a31b046d139a432 100644
--- a/sflphone-client-gnome/src/contacts/addressbook.c
+++ b/sflphone-client-gnome/src/contacts/addressbook.c
@@ -46,6 +46,20 @@ addressbook_search(GtkEntry* entry)
       addressbook_config);
 }
 
+/**
+ * Return addressbook state
+ */
+gboolean
+addressbook_is_enabled()
+{
+  AddressBook_Config *addressbook_config;
+  
+  // Load the address book parameters
+  addressbook_config_load_parameters(&addressbook_config);
+
+  return (guint)addressbook_config->enable;
+}
+
 /**
  * Return addressbook state
  */
diff --git a/sflphone-client-gnome/src/contacts/addressbook.h b/sflphone-client-gnome/src/contacts/addressbook.h
index f83aefaf5bf6a93f1ec61c8e51e6c1dce87c75ba..9426d1d7accd54fd912b6247bf7bd3e7ea97bb08 100644
--- a/sflphone-client-gnome/src/contacts/addressbook.h
+++ b/sflphone-client-gnome/src/contacts/addressbook.h
@@ -35,6 +35,12 @@
 gboolean
 addressbook_is_ready();
 
+/**
+ * Return addressbook state
+ */
+gboolean
+addressbook_is_enabled();
+
 /**
  * Perform a search in addressbook
  */
diff --git a/sflphone-client-gnome/src/toolbar.c b/sflphone-client-gnome/src/toolbar.c
index f6a59c73425ce9917b0536c6861f702ddbefa286..5ae18eacefd60f1f9b38b0e59ad693b5517f6b27 100644
--- a/sflphone-client-gnome/src/toolbar.c
+++ b/sflphone-client-gnome/src/toolbar.c
@@ -283,6 +283,7 @@ GtkWidget *create_toolbar ()
   void
 toolbar_update_buttons ()
 {
+    
   gtk_widget_set_sensitive( GTK_WIDGET(callButton),       FALSE);
   gtk_widget_set_sensitive( GTK_WIDGET(hangupButton),     FALSE);
   gtk_widget_set_sensitive( GTK_WIDGET(holdButton),       FALSE);
@@ -290,6 +291,7 @@ toolbar_update_buttons ()
   gtk_widget_set_sensitive( GTK_WIDGET(mailboxButton) ,   FALSE);
   gtk_widget_set_sensitive( GTK_WIDGET(unholdButton),     FALSE);
   gtk_widget_set_sensitive( GTK_WIDGET(recButton),        FALSE);
+  gtk_widget_set_sensitive( GTK_WIDGET(contactButton),        FALSE);
   g_object_ref(holdButton);
   g_object_ref(unholdButton);
   if( is_inserted( GTK_WIDGET(holdButton) ) )   gtk_container_remove(GTK_CONTAINER(toolbar), GTK_WIDGET(holdButton));
@@ -301,6 +303,7 @@ toolbar_update_buttons ()
   if( is_inserted( GTK_WIDGET(pickupButton) ) ) gtk_container_remove(GTK_CONTAINER(toolbar), GTK_WIDGET(pickupButton));
   gtk_toolbar_insert(GTK_TOOLBAR(toolbar), callButton, 0);
   //gtk_toolbar_insert(GTK_TOOLBAR(toolbar), recButton, 0);
+  if (addressbook_is_enabled () && addressbook_is_ready())    gtk_widget_set_sensitive( GTK_WIDGET(contactButton), TRUE);
 
 
   gtk_signal_handler_block(GTK_OBJECT(transfertButton),transfertButtonConnId);
@@ -386,10 +389,5 @@ toolbar_update_buttons ()
         }
     }
 
-    // Activate addressbook button if needed
-    // TODO : should be moved in a better place
-    if(addressbook_is_ready())
-      gtk_widget_set_sensitive( GTK_WIDGET(contactButton), TRUE);
-    else
-      gtk_widget_set_sensitive( GTK_WIDGET(contactButton), FALSE);
+  
 }
diff --git a/sflphone-common/src/managerimpl.cpp b/sflphone-common/src/managerimpl.cpp
index a5c25abb96b6f5fc69a4ddc8ce2127d678278dca..700db1b008e0cc9e2bf348a214dbc5c46ba6df00 100644
--- a/sflphone-common/src/managerimpl.cpp
+++ b/sflphone-common/src/managerimpl.cpp
@@ -1207,6 +1207,7 @@ ManagerImpl::initConfigFile ( bool load_user_value )
   fill_config_str(CONFIG_ACCOUNTS_ORDER, "");
 
   section = ADDRESSBOOK;
+  fill_config_int (ADDRESSBOOK_ENABLE, YES_STR);
   fill_config_int (ADDRESSBOOK_MAX_RESULTS, "25");
   fill_config_int (ADDRESSBOOK_DISPLAY_CONTACT_PHOTO, NO_STR);
   fill_config_int (ADDRESSBOOK_DISPLAY_PHONE_BUSINESS, YES_STR);
@@ -2627,6 +2628,7 @@ std::map<std::string, int32_t> ManagerImpl::getAddressbookSettings () {
 
     std::map<std::string, int32_t> settings;
 
+    settings.insert (std::pair<std::string, int32_t> ("ADDRESSBOOK_ENABLE", getConfigInt (ADDRESSBOOK, ADDRESSBOOK_ENABLE)) );
     settings.insert (std::pair<std::string, int32_t> ("ADDRESSBOOK_MAX_RESULTS", getConfigInt (ADDRESSBOOK, ADDRESSBOOK_MAX_RESULTS)) );
     settings.insert (std::pair<std::string, int32_t> ("ADDRESSBOOK_DISPLAY_CONTACT_PHOTO", getConfigInt (ADDRESSBOOK, ADDRESSBOOK_DISPLAY_CONTACT_PHOTO)));
     settings.insert (std::pair<std::string, int32_t> ("ADDRESSBOOK_DISPLAY_PHONE_BUSINESS", getConfigInt (ADDRESSBOOK, ADDRESSBOOK_DISPLAY_PHONE_BUSINESS)));
@@ -2638,6 +2640,7 @@ std::map<std::string, int32_t> ManagerImpl::getAddressbookSettings () {
 
 void ManagerImpl::setAddressbookSettings (const std::map<std::string, int32_t>& settings){
 
+    setConfig(ADDRESSBOOK, ADDRESSBOOK_ENABLE, (*settings.find("ADDRESSBOOK_ENABLE")).second);
     setConfig(ADDRESSBOOK, ADDRESSBOOK_MAX_RESULTS, (*settings.find("ADDRESSBOOK_MAX_RESULTS")).second);
     setConfig(ADDRESSBOOK, ADDRESSBOOK_DISPLAY_CONTACT_PHOTO , (*settings.find("ADDRESSBOOK_DISPLAY_CONTACT_PHOTO")).second);
     setConfig(ADDRESSBOOK, ADDRESSBOOK_DISPLAY_PHONE_BUSINESS , (*settings.find("ADDRESSBOOK_DISPLAY_PHONE_BUSINESS")).second);
diff --git a/sflphone-common/src/user_cfg.h b/sflphone-common/src/user_cfg.h
index d0522277ea45fa17b22d0f732f00f82a20bb9e78..396ffc22781f4ef5f22f372f6f39862605aa5cbf 100644
--- a/sflphone-common/src/user_cfg.h
+++ b/sflphone-common/src/user_cfg.h
@@ -73,6 +73,7 @@
 #define STUN_SERVER     "STUN.server"
 
 #define ADDRESSBOOK                 "Addressbook"               /** Address book section */
+#define ADDRESSBOOK_ENABLE           "Addressbook.enable"               /** Enable address book */
 #define ADDRESSBOOK_MAX_RESULTS      "Addressbook.max_results"
 #define ADDRESSBOOK_DISPLAY_CONTACT_PHOTO   "Addressbook.contact_photo"
 #define ADDRESSBOOK_DISPLAY_PHONE_BUSINESS   "Addressbook.phone_business"