aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/gui/component/addressbook-component.c
diff options
context:
space:
mode:
Diffstat (limited to 'addressbook/gui/component/addressbook-component.c')
-rw-r--r--addressbook/gui/component/addressbook-component.c26
1 files changed, 25 insertions, 1 deletions
diff --git a/addressbook/gui/component/addressbook-component.c b/addressbook/gui/component/addressbook-component.c
index 476220afed..ad99d22fc9 100644
--- a/addressbook/gui/component/addressbook-component.c
+++ b/addressbook/gui/component/addressbook-component.c
@@ -283,6 +283,9 @@ impl_requestCreateItem (PortableServer_Servant servant,
CORBA_Environment *ev)
{
EBook *book;
+ GConfClient *gconf_client;
+ ESourceList *source_list;
+ char *uid;
if (!item_type_name ||
(strcmp (item_type_name, "address_book") &&
@@ -297,7 +300,28 @@ impl_requestCreateItem (PortableServer_Servant servant,
return;
}
- book = e_book_new_default_addressbook (NULL);
+ gconf_client = gconf_client_get_default();
+ uid = gconf_client_get_string (gconf_client, "/apps/evolution/addressbook/display/primary_addressbook",
+ NULL);
+ g_object_unref (gconf_client);
+ if (!e_book_get_addressbooks (&source_list, NULL)) {
+ g_warning ("Could not get addressbook source list from GConf!");
+ return;
+ }
+ if (uid) {
+ ESource *source = e_source_list_peek_source_by_uid(source_list, uid);
+ if (source) {
+ book = e_book_new (source, NULL);
+ }
+ else {
+ book = e_book_new_default_addressbook (NULL);
+ }
+ g_free (uid);
+ }
+ else {
+ book = e_book_new_default_addressbook (NULL);
+ }
+
e_book_async_open (book, FALSE, book_loaded_cb, g_strdup (item_type_name));
}