diff options
author | Hans Petter Jansson <hpj@ximian.com> | 2003-12-20 09:05:14 +0800 |
---|---|---|
committer | Hans Petter <hansp@src.gnome.org> | 2003-12-20 09:05:14 +0800 |
commit | a8015ad6cd3367def1ffadb087caf2728403f6d4 (patch) | |
tree | 5870d9df84ee49ed7c25f478f6ddfb48b74bc4a4 /addressbook/gui | |
parent | db14454c1d9f8a89e13e4469c771d9ce5d543135 (diff) | |
download | gsoc2013-evolution-a8015ad6cd3367def1ffadb087caf2728403f6d4.tar.gz gsoc2013-evolution-a8015ad6cd3367def1ffadb087caf2728403f6d4.tar.zst gsoc2013-evolution-a8015ad6cd3367def1ffadb087caf2728403f6d4.zip |
Impl. from calendar. (save_primary_selection): Implement, similar to
2003-12-19 Hans Petter Jansson <hpj@ximian.com>
* gui/component/addressbook-component.c (find_first_source): Impl.
from calendar.
(save_primary_selection): Implement, similar to calendar.
(load_primary_selection): Implement, similar to calendar.
(primary_source_selection_changed_callback): Save selection.
(impl_createControls): Load selection.
svn path=/trunk/; revision=23991
Diffstat (limited to 'addressbook/gui')
-rw-r--r-- | addressbook/gui/component/addressbook-component.c | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/addressbook/gui/component/addressbook-component.c b/addressbook/gui/component/addressbook-component.c index 803ed82d55..999baed5bc 100644 --- a/addressbook/gui/component/addressbook-component.c +++ b/addressbook/gui/component/addressbook-component.c @@ -74,6 +74,71 @@ load_uri_for_selection (ESourceSelector *selector, } } +static ESource * +find_first_source (ESourceList *source_list) +{ + GSList *groups, *sources, *l, *m; + + groups = e_source_list_peek_groups (source_list); + for (l = groups; l; l = l->next) { + ESourceGroup *group = l->data; + + sources = e_source_group_peek_sources (group); + for (m = sources; m; m = m->next) { + ESource *source = m->data; + + return source; + } + } + + return NULL; +} + +static void +save_primary_selection (AddressbookComponent *addressbook_component) +{ + AddressbookComponentPrivate *priv; + ESource *source; + + priv = addressbook_component->priv; + + source = e_source_selector_peek_primary_selection (E_SOURCE_SELECTOR (priv->source_selector)); + if (!source) + return; + + /* Save the selection for next time we start up */ + gconf_client_set_string (priv->gconf_client, + "/apps/evolution/addressbook/display/primary_addressbook", + e_source_peek_uid (source), NULL); +} + +static void +load_primary_selection (AddressbookComponent *addressbook_component) +{ + AddressbookComponentPrivate *priv; + ESource *source; + char *uid; + + priv = addressbook_component->priv; + + uid = gconf_client_get_string (priv->gconf_client, + "/apps/evolution/addressbook/display/primary_addressbook", + NULL); + if (uid) { + source = e_source_list_peek_source_by_uid (priv->source_list, uid); + g_free (uid); + + e_source_selector_set_primary_selection (E_SOURCE_SELECTOR (priv->source_selector), source); + } else { + ESource *source; + + /* Try to create a default if there isn't one */ + source = find_first_source (priv->source_list); + if (source) + e_source_selector_set_primary_selection (E_SOURCE_SELECTOR (priv->source_selector), source); + } +} + static void add_popup_menu_item (GtkMenu *menu, const char *label, const char *pixmap, GCallback callback, gpointer user_data) @@ -137,6 +202,7 @@ primary_source_selection_changed_callback (ESourceSelector *selector, BonoboControl *view_control) { load_uri_for_selection (selector, view_control); + save_primary_selection (addressbook_component_peek ()); } static void @@ -187,6 +253,8 @@ impl_createControls (PortableServer_Servant servant, g_signal_connect_object (selector, "fill_popup_menu", G_CALLBACK (fill_popup_menu_callback), G_OBJECT (addressbook_component), 0); + + load_primary_selection (addressbook_component); load_uri_for_selection (E_SOURCE_SELECTOR (selector), view_control); statusbar_widget = e_task_bar_new (); |