Skip to content
Snippets Groups Projects
Commit 0652e8e2 authored by Alexandre Savard's avatar Alexandre Savard
Browse files

[#4639] Fix determining default addressbook if this property is not set in gconf

parent 94af3a9f
No related branches found
No related tags found
No related merge requests found
......@@ -132,6 +132,7 @@ addressbook_get_books_data()
fill_books_data();
addressbook_config_books();
determine_default_addressbook();
return get_books_data();
}
......@@ -147,6 +148,7 @@ addressbook_init()
fill_books_data();
addressbook_config_books();
determine_default_addressbook();
// Call books initialization
init ();
......
......@@ -73,6 +73,12 @@ static gchar *current_name = "Default";
static EBookQueryTest current_test = E_BOOK_QUERY_BEGINS_WITH;
/**
* Prototypes
*/
void empty_books_data();
/**
* Freeing a hit instance
*/
......@@ -477,6 +483,8 @@ fill_books_data ()
ESourceList *source_list = NULL;
gboolean default_found;
DEBUG ("Addressbook: Fill books data");
source_list = e_source_list_new_for_gconf_default ("/apps/evolution/addressbook/sources");
if (source_list == NULL) {
......@@ -491,7 +499,7 @@ fill_books_data ()
return;
}
if (books_data == NULL) {
if (books_data != NULL) {
empty_books_data();
books_data = NULL;
}
......@@ -523,10 +531,12 @@ fill_books_data ()
if (strcmp (prop, "true") == 0) {
book_data->isdefault = TRUE;
default_found = TRUE;
} else
} else {
book_data->isdefault = FALSE;
} else
}
} else {
book_data->isdefault = FALSE;
}
if (strcmp (absuri+strlen (absuri)-1, "/") == 0)
book_data->uri = g_strjoin ("", absuri, e_source_peek_relative_uri (source), NULL);
......@@ -540,13 +550,38 @@ fill_books_data ()
g_free (absuri);
}
if (!default_found) {
DEBUG ("Addressbook: No default addressbook found, using first addressbook as default");
book_data_t *book_data = g_slist_nth_data (books_data, 0);
g_object_unref (source_list);
}
void
determine_default_addressbook()
{
GSList *list_element = books_data;
gboolean default_found = FALSE;
while (list_element && !default_found) {
book_data_t *book_data = list_element->data;
if (book_data->isdefault)
default_found = TRUE;
list_element = g_slist_next (list_element);
}
// reset loop
list_element = books_data;
while (list_element && !default_found) {
book_data_t *book_data = list_element->data;
if (book_data->active) {
book_data->isdefault = TRUE;
DEBUG ("Addressbook: No default addressbook found, using %s addressbook as default", book_data->name);
default_found = TRUE;
}
g_object_unref (source_list);
list_element = g_slist_next (list_element);
}
}
void
......@@ -567,6 +602,8 @@ empty_books_data()
free_book_data (book_data);
}
}
void
......
......@@ -166,6 +166,9 @@ get_current_addressbook_test (void);
GSList *
get_books_data();
void
determine_default_addressbook();
G_END_DECLS
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment