From b9858327e7e2350aa95da040cf95870298e83571 Mon Sep 17 00:00:00 2001
From: Emmanuel Milou <emmanuel.milou@savoirfairelinux.com>
Date: Thu, 30 Apr 2009 16:53:58 -0400
Subject: [PATCH] [#1335] Enable/disable address book, change option name
---
.../src/config/addressbook-config.c | 517 +++++++++---------
.../src/config/addressbook-config.h | 12 +-
.../src/config/configwindow.c | 1 +
.../src/contacts/addressbook.c | 14 +
.../src/contacts/addressbook.h | 6 +
sflphone-client-gnome/src/toolbar.c | 10 +-
sflphone-common/src/managerimpl.cpp | 3 +
sflphone-common/src/user_cfg.h | 1 +
8 files changed, 302 insertions(+), 262 deletions(-)
diff --git a/sflphone-client-gnome/src/config/addressbook-config.c b/sflphone-client-gnome/src/config/addressbook-config.c
index 9851ce6433..4ce36174f2 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 ec7a8d1636..6e46698acf 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 7a73328371..f88888205e 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 c9fa4dcbcf..4c08210f3e 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 f83aefaf5b..9426d1d7ac 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 f6a59c7342..5ae18eacef 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 a5c25abb96..700db1b008 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 d0522277ea..396ffc2278 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"
--
GitLab