* #24982: addressbook: save settings in GSettings

This commit is contained in:
Tristan Matthews
2013-05-30 11:56:03 -04:00
parent 950862b493
commit b791f38554
9 changed files with 90 additions and 62 deletions

View File

@ -70,5 +70,30 @@
<summary>Use Evolution Addressbook</summary>
<description>Use Evolution Addressbook (if available)</description>
</key>
<key name="addressbook-max-results" type="i">
<default>30</default>
<summary>Max search results</summary>
<description>Maximum results to display in addressbook search.</description>
</key>
<key name="addressbook-display-photo" type="b">
<default>true</default>
<summary>Display contact photo</summary>
<description>Display contact photo (if available)</description>
</key>
<key name="addressbook-search-phone-business" type="b">
<default>true</default>
<summary>Search phone business</summary>
<description>Search phone business</description>
</key>
<key name="addressbook-search-phone-home" type="b">
<default>true</default>
<summary>Search phone home</summary>
<description>Search phone home</description>
</key>
<key name="addressbook-search-phone-mobile" type="b">
<default>true</default>
<summary>Search phone mobile</summary>
<description>Search phone mobile</description>
</key>
</schema>
</schemalist>

View File

@ -55,44 +55,44 @@ enum {
COLUMN_BOOK_ACTIVE, COLUMN_BOOK_NAME, COLUMN_BOOK_UID
};
AddressBook_Config *addressbook_config_load_parameters()
AddressBook_Config *
addressbook_config_load_parameters(GSettings *settings)
{
static AddressBook_Config defconfig = {
.enable = 1,
.max_results = 30,
.display_contact_photo = 0,
.search_phone_business = 1,
.search_phone_home = 1,
.search_phone_mobile = 1,
};
static AddressBook_Config defconfig;
defconfig.enable = g_settings_get_boolean(settings,
"use-evolution-addressbook");
defconfig.max_results = g_settings_get_int(settings,
"addressbook-max-results");
defconfig.display_contact_photo = g_settings_get_boolean(settings,
"addressbook-display-photo");
defconfig.search_phone_business = g_settings_get_boolean(settings,
"addressbook-search-phone-business");
defconfig.search_phone_home = g_settings_get_boolean(settings,
"addressbook-search-phone-home");
defconfig.search_phone_mobile = g_settings_get_boolean(settings,
"addressbook-search-phone-mobile");
return &defconfig;
}
void
addressbook_config_save_parameters(void)
addressbook_config_save_parameters(GSettings *settings)
{
AddressBook_Config *config = addressbook_config;
g_settings_set_boolean(settings, "use-evolution-addressbook",
config->enable);
g_settings_set_int(settings, "addressbook-max-results",
config->max_results);
g_settings_set_boolean(settings, "addressbook-display-photo",
config->display_contact_photo);
g_settings_set_boolean(settings, "addressbook-search-phone-business",
config->search_phone_business);
g_settings_set_boolean(settings, "addressbook-search-phone-home",
config->search_phone_home);
g_settings_set_boolean(settings, "addressbook-search-phone-mobile",
config->search_phone_mobile);
GHashTable *params = NULL;
params = g_hash_table_new(NULL, g_str_equal);
g_hash_table_replace(params, (gpointer) ADDRESSBOOK_ENABLE,
(gpointer)(size_t) addressbook_config->enable);
g_hash_table_replace(params, (gpointer) ADDRESSBOOK_MAX_RESULTS,
(gpointer)(size_t) addressbook_config->max_results);
g_hash_table_replace(params, (gpointer) ADDRESSBOOK_DISPLAY_CONTACT_PHOTO,
(gpointer)(size_t) addressbook_config->display_contact_photo);
g_hash_table_replace(params, (gpointer) ADDRESSBOOK_DISPLAY_PHONE_BUSINESS,
(gpointer)(size_t) addressbook_config->search_phone_business);
g_hash_table_replace(params, (gpointer) ADDRESSBOOK_DISPLAY_PHONE_HOME,
(gpointer)(size_t) addressbook_config->search_phone_home);
g_hash_table_replace(params, (gpointer) ADDRESSBOOK_DISPLAY_PHONE_MOBILE,
(gpointer)(size_t) addressbook_config->search_phone_mobile);
update_searchbar_addressbook_list();
// Decrement the reference count
g_hash_table_unref(params);
update_searchbar_addressbook_list(settings);
}
void
@ -303,7 +303,7 @@ create_addressbook_settings(SFLPhoneClient *client)
GtkTreeViewColumn *tree_view_column;
// Load the default values
addressbook_config = addressbook_config_load_parameters();
addressbook_config = addressbook_config_load_parameters(client->settings);
GtkWidget *ret = gtk_box_new(GTK_ORIENTATION_VERTICAL, 10);
gtk_container_set_border_width(GTK_CONTAINER(ret), 10);
@ -408,9 +408,7 @@ create_addressbook_settings(SFLPhoneClient *client)
gtk_widget_show_all(ret);
const gboolean enabled = g_settings_get_boolean(client->settings, "use-evolution-addressbook");
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(item), enabled);
addressbook_config->enable = enabled;
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(item), addressbook_config->enable);
enable_options();

View File

@ -50,12 +50,13 @@
* Save the parameters through D-BUS
*/
void
addressbook_config_save_parameters (void);
addressbook_config_save_parameters(GSettings *settings);
/**
* Return the saved parameters through D-Bus
*/
AddressBook_Config *addressbook_config_load_parameters();
AddressBook_Config *
addressbook_config_load_parameters(GSettings *settings);
gboolean
addressbook_display (AddressBook_Config *settings, const gchar *field);

View File

@ -252,7 +252,7 @@ void
save_configuration_parameters(SFLPhoneClient *client)
{
if (addrbook)
addressbook_config_save_parameters();
addressbook_config_save_parameters(client->settings);
hooks_save_parameters(client);

View File

@ -102,14 +102,14 @@ calltab_get_selected_conf(calltab_t *tab)
}
void
calltab_create_searchbar(calltab_t* tab)
calltab_create_searchbar(calltab_t* tab, SFLPhoneClient *client)
{
g_assert(tab);
if (calltab_has_name(tab, HISTORY))
tab->searchbar = history_searchbar_new();
else if (calltab_has_name(tab, CONTACTS))
tab->searchbar = contacts_searchbar_new();
tab->searchbar = contacts_searchbar_new(client->settings);
else
g_warning("Current calls tab does not need a searchbar\n");
}

View File

@ -67,7 +67,7 @@ conference_obj_t *
calltab_get_selected_conf(calltab_t *);
void
calltab_create_searchbar(calltab_t *);
calltab_create_searchbar(calltab_t *, SFLPhoneClient *client);
gboolean
calltab_has_name(calltab_t *tab, const gchar *name);

View File

@ -492,7 +492,7 @@ calltree_create(calltab_t* tab, gboolean has_searchbar, SFLPhoneClient *client)
// search bar if tab is either "history" or "addressbook"
if (has_searchbar) {
calltab_create_searchbar(tab);
calltab_create_searchbar(tab, client);
if (tab->searchbar != NULL) {
GtkWidget *alignment = gtk_alignment_new(0.0, 0.0, 1.0, 1.0);

View File

@ -60,10 +60,11 @@ static GdkPixbuf *outgoing_pixbuf;
static GdkPixbuf *missed_pixbuf;
static void
searchbar_addressbook_activated(GtkEntry *entry, G_GNUC_UNUSED gchar *arg1, G_GNUC_UNUSED gpointer data)
searchbar_addressbook_activated(GtkEntry *entry, G_GNUC_UNUSED gchar *arg1, gpointer data)
{
if (addrbook)
addrbook->search(addrbook->search_cb, entry, addressbook_config_load_parameters());
addrbook->search(addrbook->search_cb, entry,
addressbook_config_load_parameters(data));
}
static void
@ -89,7 +90,7 @@ get_combobox_active_text(GtkWidget *widget)
}
static void
update_current_addressbook(GtkWidget *widget)
update_current_addressbook(GtkWidget *widget, GSettings *settings)
{
if (!addrbook)
return;
@ -99,16 +100,16 @@ update_current_addressbook(GtkWidget *widget)
g_free(string);
}
AddressBook_Config *addressbook_config = addressbook_config_load_parameters();
AddressBook_Config *addressbook_config = addressbook_config_load_parameters(settings);
addrbook->search(addrbook->search_cb, GTK_ENTRY(addressbookentry), addressbook_config);
}
static void
cbox_changed_cb(GtkWidget *widget, G_GNUC_UNUSED gpointer user_data)
cbox_changed_cb(GtkWidget *widget, gpointer user_data)
{
if (!addrbook)
return;
update_current_addressbook(widget);
update_current_addressbook(widget, user_data);
}
void
@ -118,7 +119,7 @@ set_focus_on_addressbook_searchbar()
}
void
update_searchbar_addressbook_list()
update_searchbar_addressbook_list(GSettings *settings)
{
GSList *books_data = NULL;
@ -169,12 +170,13 @@ update_searchbar_addressbook_list()
addrbook->set_current_book(activeText);
} else {
gtk_combo_box_set_active(GTK_COMBO_BOX(cbox), 0);
update_current_addressbook(cbox);
update_current_addressbook(cbox, settings);
}
}
g_free(activeText);
cboxSignalId = g_signal_connect(G_OBJECT(cbox), "changed", G_CALLBACK(cbox_changed_cb), NULL);
cboxSignalId = g_signal_connect(G_OBJECT(cbox), "changed",
G_CALLBACK(cbox_changed_cb), settings);
}
static gboolean
@ -184,7 +186,7 @@ label_matches(const gchar *label, GtkWidget *item)
}
static void
select_search_type(GtkWidget *item, G_GNUC_UNUSED GtkEntry *entry)
select_search_type(GtkWidget *item, GSettings *settings)
{
if (!addrbook)
return;
@ -203,7 +205,7 @@ select_search_type(GtkWidget *item, G_GNUC_UNUSED GtkEntry *entry)
addrbook->set_search_type(ABOOK_QUERY_CONTAINS);
addrbook->search(addrbook->search_cb, GTK_ENTRY(addressbookentry),
addressbook_config_load_parameters());
addressbook_config_load_parameters(settings));
}
static void
@ -276,7 +278,7 @@ text_changed_cb(GtkEntry *entry, G_GNUC_UNUSED GParamSpec *pspec)
GtkWidget *
addressbook_menu_new()
addressbook_menu_new(GSettings *settings)
{
// Create the menu
GtkWidget *menu_widget = gtk_menu_new();
@ -284,15 +286,15 @@ addressbook_menu_new()
// Populate menu
GtkWidget *item = gtk_menu_item_new_with_label("Search is");
g_signal_connect(item, "activate", G_CALLBACK(select_search_type), searchbox);
g_signal_connect(item, "activate", G_CALLBACK(select_search_type), settings);
gtk_menu_shell_append(GTK_MENU_SHELL(menu_widget), item);
item = gtk_menu_item_new_with_label("Search begins with");
g_signal_connect(item, "activate", G_CALLBACK(select_search_type), searchbox);
g_signal_connect(item, "activate", G_CALLBACK(select_search_type), settings);
gtk_menu_shell_append(GTK_MENU_SHELL(menu_widget), item);
item = gtk_menu_item_new_with_label("Search contains");
g_signal_connect(item, "activate", G_CALLBACK(select_search_type), searchbox);
g_signal_connect(item, "activate", G_CALLBACK(select_search_type), settings);
gtk_menu_shell_append(GTK_MENU_SHELL(menu_widget), item);
gtk_widget_show_all(menu_widget);
@ -365,7 +367,7 @@ history_searchbar_new()
}
GtkWidget*
contacts_searchbar_new()
contacts_searchbar_new(GSettings *settings)
{
GtkWidget *ret = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
@ -415,7 +417,8 @@ contacts_searchbar_new()
gtk_widget_get_size_request(GTK_WIDGET(cbox), &cbox_width, &cbox_height);
gtk_widget_set_size_request(GTK_WIDGET(cbox), cbox_width, 26);
cboxSignalId = g_signal_connect(G_OBJECT(cbox), "changed", G_CALLBACK(cbox_changed_cb), NULL);
cboxSignalId = g_signal_connect(G_OBJECT(cbox), "changed",
G_CALLBACK(cbox_changed_cb), settings);
GtkCellRenderer *cell = gtk_cell_renderer_text_new();
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(cbox), cell, TRUE);
@ -436,7 +439,8 @@ contacts_searchbar_new()
g_signal_connect(addressbookentry, "icon-press", G_CALLBACK(icon_press_cb), NULL);
gtk_entry_set_activates_default(GTK_ENTRY(addressbookentry), TRUE);
g_signal_connect_after(GTK_ENTRY(addressbookentry), "activate", G_CALLBACK(searchbar_addressbook_activated), NULL);
g_signal_connect_after(GTK_ENTRY(addressbookentry), "activate",
G_CALLBACK(searchbar_addressbook_activated), settings);
g_signal_connect_after(GTK_ENTRY(addressbookentry), "changed", G_CALLBACK(searchbar_entry_changed), NULL);
@ -451,7 +455,7 @@ contacts_searchbar_new()
g_free(tooltip_text);
update_current_addressbook(cbox);
update_current_addressbook(cbox, settings);
return ret;
}

View File

@ -52,7 +52,7 @@ history_searchbar_new();
* Create a new search bar for addressbook
*/
GtkWidget*
contacts_searchbar_new();
contacts_searchbar_new(GSettings *settings);
/**
* Get type of call to be search from call history
@ -70,7 +70,7 @@ set_focus_on_addressbook_searchbar();
* Reload combo box to update list of active addressbook
*/
void
update_searchbar_addressbook_list();
update_searchbar_addressbook_list(GSettings *settings);
/**
* Create a new menu listing all system addressbooks