mirror of
https://git.jami.net/savoirfairelinux/jami-daemon.git
synced 2025-08-12 22:09:25 +08:00
* #24982: addressbook: save settings in GSettings
This commit is contained in:
@ -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>
|
||||
|
@ -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();
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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");
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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
|
||||
|
Reference in New Issue
Block a user