diff options
Diffstat (limited to 'addressbook/gui')
6 files changed, 108 insertions, 76 deletions
diff --git a/addressbook/gui/contact-editor/contact-editor.ui b/addressbook/gui/contact-editor/contact-editor.ui index b12c604f6a..f3a1848af1 100644 --- a/addressbook/gui/contact-editor/contact-editor.ui +++ b/addressbook/gui/contact-editor/contact-editor.ui @@ -234,7 +234,7 @@ </packing> </child> <child> - <object class="ESourceComboBox" type-func="e_source_combo_box_get_type" id="source-combo-box-source"> + <object class="EClientComboBox" type-func="e_client_combo_box_get_type" id="client-combo-box"> <property name="extension-name">Address Book</property> <property name="show-colors">False</property> <property name="visible">True</property> diff --git a/addressbook/gui/contact-editor/e-contact-editor.c b/addressbook/gui/contact-editor/e-contact-editor.c index 0f3aef0739..0d994f8c49 100644 --- a/addressbook/gui/contact-editor/e-contact-editor.c +++ b/addressbook/gui/contact-editor/e-contact-editor.c @@ -686,7 +686,7 @@ fill_in_source_field (EContactEditor *editor) return; source_menu = e_builder_get_widget ( - editor->builder, "source-combo-box-source"); + editor->builder, "client-combo-box"); e_source_combo_box_set_active ( E_SOURCE_COMBO_BOX (source_menu), @@ -3101,15 +3101,19 @@ init_all (EContactEditor *editor) } static void -contact_editor_client_connect_cb (GObject *source_object, - GAsyncResult *result, - gpointer user_data) +contact_editor_get_client_cb (GObject *source_object, + GAsyncResult *result, + gpointer user_data) { + EClientComboBox *combo_box; ConnectClosure *closure = user_data; EClient *client; GError *error = NULL; - client = e_book_client_connect_finish (result, &error); + combo_box = E_CLIENT_COMBO_BOX (source_object); + + client = e_client_combo_box_get_client_finish ( + combo_box, result, &error); /* Sanity check. */ g_return_if_fail ( @@ -3123,7 +3127,6 @@ contact_editor_client_connect_cb (GObject *source_object, goto exit; } else if (error != NULL) { - GtkWidget *source_combo_box; GtkWindow *parent; parent = eab_editor_get_window (EAB_EDITOR (closure->editor)); @@ -3132,11 +3135,8 @@ contact_editor_client_connect_cb (GObject *source_object, GTK_WIDGET (parent), NULL, closure->source, error); - source_combo_box = e_builder_get_widget ( - closure->editor->builder, - "source-combo-box-source"); e_source_combo_box_set_active ( - E_SOURCE_COMBO_BOX (source_combo_box), + E_SOURCE_COMBO_BOX (combo_box), closure->source); g_error_free (error); @@ -3153,7 +3153,7 @@ exit: } static void -source_changed (ESourceComboBox *source_combo_box, +source_changed (EClientComboBox *combo_box, EContactEditor *editor) { ConnectClosure *closure; @@ -3161,7 +3161,8 @@ source_changed (ESourceComboBox *source_combo_box, ESource *source_source; ESource *source; - source = e_source_combo_box_ref_active (source_combo_box); + source = e_source_combo_box_ref_active ( + E_SOURCE_COMBO_BOX (combo_box)); g_return_if_fail (source != NULL); if (editor->cancellable != NULL) { @@ -3189,9 +3190,10 @@ source_changed (ESourceComboBox *source_combo_box, closure->editor = g_object_ref (editor); closure->source = g_object_ref (source); - e_book_client_connect ( - source, editor->cancellable, - contact_editor_client_connect_cb, + e_client_combo_box_get_client ( + combo_box, source, + editor->cancellable, + contact_editor_get_client_cb, closure); exit: @@ -4062,7 +4064,7 @@ e_contact_editor_init (EContactEditor *e_contact_editor) { GtkBuilder *builder; EShell *shell; - ESourceRegistry *registry; + EClientCache *client_cache; GtkWidget *container; GtkWidget *widget, *label; GtkEntryCompletion *completion; @@ -4070,7 +4072,7 @@ e_contact_editor_init (EContactEditor *e_contact_editor) /* FIXME The shell should be obtained * through a constructor property. */ shell = e_shell_get_default (); - registry = e_shell_get_registry (shell); + client_cache = e_shell_get_client_cache (shell); e_contact_editor->name = e_contact_name_new (); @@ -4122,9 +4124,9 @@ e_contact_editor_init (EContactEditor *e_contact_editor) widget, "clicked", G_CALLBACK (categories_clicked), e_contact_editor); widget = e_builder_get_widget ( - e_contact_editor->builder, "source-combo-box-source"); - e_source_combo_box_set_registry ( - E_SOURCE_COMBO_BOX (widget), registry); + e_contact_editor->builder, "client-combo-box"); + e_client_combo_box_set_client_cache ( + E_CLIENT_COMBO_BOX (widget), client_cache); g_signal_connect ( widget, "changed", G_CALLBACK (source_changed), e_contact_editor); diff --git a/addressbook/gui/contact-editor/e-contact-quick-add.c b/addressbook/gui/contact-editor/e-contact-quick-add.c index 0bfa46b9a8..5814205c4d 100644 --- a/addressbook/gui/contact-editor/e-contact-quick-add.c +++ b/addressbook/gui/contact-editor/e-contact-quick-add.c @@ -41,7 +41,7 @@ struct _QuickAdd { gchar *vcard; EContact *contact; GCancellable *cancellable; - ESourceRegistry *registry; + EClientCache *client_cache; ESource *source; EContactQuickAddCallback cb; @@ -57,11 +57,11 @@ struct _QuickAdd { }; static QuickAdd * -quick_add_new (ESourceRegistry *registry) +quick_add_new (EClientCache *client_cache) { QuickAdd *qa = g_new0 (QuickAdd, 1); qa->contact = e_contact_new (); - qa->registry = g_object_ref (registry); + qa->client_cache = g_object_ref (client_cache); qa->refs = 1; return qa; } @@ -80,7 +80,7 @@ quick_add_unref (QuickAdd *qa) g_free (qa->email); g_free (qa->vcard); g_object_unref (qa->contact); - g_object_unref (qa->registry); + g_object_unref (qa->client_cache); g_free (qa); } } @@ -128,7 +128,8 @@ merge_cb (GObject *source_object, EClient *client; GError *error = NULL; - client = e_book_client_connect_finish (result, &error); + client = e_client_cache_get_client_finish ( + E_CLIENT_CACHE (source_object), result, &error); /* Sanity check. */ g_return_if_fail ( @@ -151,11 +152,17 @@ merge_cb (GObject *source_object, return; } - if (!e_client_is_readonly (client)) + if (!e_client_is_readonly (client)) { + ESourceRegistry *registry; + + registry = e_client_cache_ref_registry (qa->client_cache); + eab_merging_book_add_contact ( - qa->registry, E_BOOK_CLIENT (client), + registry, E_BOOK_CLIENT (client), qa->contact, NULL, NULL); - else { + + g_object_unref (registry); + } else { ESource *source = e_client_get_source (client); e_alert_run_dialog_for_args ( @@ -183,7 +190,10 @@ quick_add_merge_contact (QuickAdd *qa) qa->cancellable = g_cancellable_new (); - e_book_client_connect (qa->source, qa->cancellable, merge_cb, qa); + e_client_cache_get_client ( + qa->client_cache, qa->source, + E_SOURCE_EXTENSION_ADDRESS_BOOK, + qa->cancellable, merge_cb, qa); } /* Raise a contact editor with all fields editable, @@ -283,9 +293,11 @@ ce_have_book (GObject *source_object, { QuickAdd *qa = user_data; EClient *client; + ESourceRegistry *registry; GError *error = NULL; - client = e_book_client_connect_finish (result, &error); + client = e_client_cache_get_client_finish ( + E_CLIENT_CACHE (source_object), result, &error); /* Sanity check. */ g_return_if_fail ( @@ -307,9 +319,13 @@ ce_have_book (GObject *source_object, return; } + registry = e_client_cache_ref_registry (qa->client_cache); + eab_merging_book_find_contact ( - qa->registry, E_BOOK_CLIENT (client), + registry, E_BOOK_CLIENT (client), qa->contact, ce_have_contact, qa); + + g_object_unref (registry); } static void @@ -322,7 +338,10 @@ edit_contact (QuickAdd *qa) qa->cancellable = g_cancellable_new (); - e_book_client_connect (qa->source, qa->cancellable, ce_have_book, qa); + e_client_cache_get_client ( + qa->client_cache, qa->source, + E_SOURCE_EXTENSION_ADDRESS_BOOK, + qa->cancellable, ce_have_book, qa); } #define QUICK_ADD_RESPONSE_EDIT_FULL 2 @@ -425,6 +444,7 @@ build_quick_add_dialog (QuickAdd *qa) GtkWidget *label; GtkTable *table; ESource *source; + ESourceRegistry *registry; const gchar *extension_name; const gint xpad = 0, ypad = 0; @@ -467,9 +487,12 @@ build_quick_add_dialog (QuickAdd *qa) } extension_name = E_SOURCE_EXTENSION_ADDRESS_BOOK; - source = e_source_registry_ref_default_address_book (qa->registry); + registry = e_client_cache_ref_registry (qa->client_cache); + source = e_source_registry_ref_default_address_book (registry); + g_object_unref (registry); - qa->combo_box = e_source_combo_box_new (qa->registry, extension_name); + qa->combo_box = e_client_combo_box_new ( + qa->client_cache, extension_name); e_source_combo_box_set_active ( E_SOURCE_COMBO_BOX (qa->combo_box), source); @@ -533,7 +556,7 @@ build_quick_add_dialog (QuickAdd *qa) } void -e_contact_quick_add (ESourceRegistry *registry, +e_contact_quick_add (EClientCache *client_cache, const gchar *in_name, const gchar *email, EContactQuickAddCallback cb, @@ -544,7 +567,7 @@ e_contact_quick_add (ESourceRegistry *registry, gchar *name = NULL; gint len; - g_return_if_fail (E_IS_SOURCE_REGISTRY (registry)); + g_return_if_fail (E_IS_CLIENT_CACHE (client_cache)); /* We need to have *something* to work with. */ if (in_name == NULL && email == NULL) { @@ -567,7 +590,7 @@ e_contact_quick_add (ESourceRegistry *registry, g_strstrip (name); } - qa = quick_add_new (registry); + qa = quick_add_new (client_cache); qa->cb = cb; qa->closure = closure; if (name) @@ -582,7 +605,7 @@ e_contact_quick_add (ESourceRegistry *registry, } void -e_contact_quick_add_free_form (ESourceRegistry *registry, +e_contact_quick_add_free_form (EClientCache *client_cache, const gchar *text, EContactQuickAddCallback cb, gpointer closure) @@ -591,10 +614,10 @@ e_contact_quick_add_free_form (ESourceRegistry *registry, const gchar *last_at, *s; gboolean in_quote; - g_return_if_fail (E_IS_SOURCE_REGISTRY (registry)); + g_return_if_fail (E_IS_CLIENT_CACHE (client_cache)); if (text == NULL) { - e_contact_quick_add (registry, NULL, NULL, cb, closure); + e_contact_quick_add (client_cache, NULL, NULL, cb, closure); return; } @@ -658,14 +681,14 @@ e_contact_quick_add_free_form (ESourceRegistry *registry, g_strstrip (email); } - e_contact_quick_add (registry, name, email, cb, closure); + e_contact_quick_add (client_cache, name, email, cb, closure); g_free (name); g_free (email); } void -e_contact_quick_add_email (ESourceRegistry *registry, +e_contact_quick_add_email (EClientCache *client_cache, const gchar *email, EContactQuickAddCallback cb, gpointer closure) @@ -688,14 +711,14 @@ e_contact_quick_add_email (ESourceRegistry *registry, addr = g_strdup (email); } - e_contact_quick_add (registry, name, addr, cb, closure); + e_contact_quick_add (client_cache, name, addr, cb, closure); g_free (name); g_free (addr); } void -e_contact_quick_add_vcard (ESourceRegistry *registry, +e_contact_quick_add_vcard (EClientCache *client_cache, const gchar *vcard, EContactQuickAddCallback cb, gpointer closure) @@ -704,7 +727,7 @@ e_contact_quick_add_vcard (ESourceRegistry *registry, GtkWidget *dialog; EContact *contact; - g_return_if_fail (E_IS_SOURCE_REGISTRY (registry)); + g_return_if_fail (E_IS_CLIENT_CACHE (client_cache)); /* We need to have *something* to work with. */ if (vcard == NULL) { @@ -713,7 +736,7 @@ e_contact_quick_add_vcard (ESourceRegistry *registry, return; } - qa = quick_add_new (registry); + qa = quick_add_new (client_cache); qa->cb = cb; qa->closure = closure; quick_add_set_vcard (qa, vcard); diff --git a/addressbook/gui/contact-editor/e-contact-quick-add.h b/addressbook/gui/contact-editor/e-contact-quick-add.h index cd5d8ba44c..abc94fddb7 100644 --- a/addressbook/gui/contact-editor/e-contact-quick-add.h +++ b/addressbook/gui/contact-editor/e-contact-quick-add.h @@ -25,23 +25,25 @@ #include <libebook/libebook.h> +#include <e-util/e-util.h> + typedef void (*EContactQuickAddCallback) (EContact *new_contact, gpointer closure); -void e_contact_quick_add (ESourceRegistry *registry, +void e_contact_quick_add (EClientCache *client_cache, const gchar *name, const gchar *email, EContactQuickAddCallback cb, gpointer closure); -void e_contact_quick_add_free_form (ESourceRegistry *registry, +void e_contact_quick_add_free_form (EClientCache *client_cache, const gchar *text, EContactQuickAddCallback cb, gpointer closure); -void e_contact_quick_add_email (ESourceRegistry *registry, +void e_contact_quick_add_email (EClientCache *client_cache, const gchar *email, EContactQuickAddCallback cb, gpointer closure); -void e_contact_quick_add_vcard (ESourceRegistry *registry, +void e_contact_quick_add_vcard (EClientCache *client_cache, const gchar *vcard, EContactQuickAddCallback cb, gpointer closure); diff --git a/addressbook/gui/contact-list-editor/contact-list-editor.ui b/addressbook/gui/contact-list-editor/contact-list-editor.ui index eb301847de..d6a197877c 100644 --- a/addressbook/gui/contact-list-editor/contact-list-editor.ui +++ b/addressbook/gui/contact-list-editor/contact-list-editor.ui @@ -61,7 +61,7 @@ <property name="xalign">1</property> <property name="label" translatable="yes">_Where:</property> <property name="use_underline">True</property> - <property name="mnemonic_widget">source-combo-box</property> + <property name="mnemonic_widget">client-combo-box</property> </object> <packing> <property name="top_attach">1</property> @@ -82,7 +82,7 @@ </packing> </child> <child> - <object class="ESourceComboBox" type-func="e_source_combo_box_get_type" id="source-combo-box"> + <object class="EClientComboBox" type-func="e_client_combo_box_get_type" id="client-combo-box"> <property name="extension-name">Address Book</property> <property name="show-colors">False</property> <property name="visible">True</property> diff --git a/addressbook/gui/contact-list-editor/e-contact-list-editor.c b/addressbook/gui/contact-list-editor/e-contact-list-editor.c index 08c92d72d4..d7437d3cfb 100644 --- a/addressbook/gui/contact-list-editor/e-contact-list-editor.c +++ b/addressbook/gui/contact-list-editor/e-contact-list-editor.c @@ -61,6 +61,8 @@ CONTACT_LIST_EDITOR_WIDGET ((editor), "add-button") #define CONTACT_LIST_EDITOR_WIDGET_CHECK_BUTTON(editor) \ CONTACT_LIST_EDITOR_WIDGET ((editor), "check-button") +#define CONTACT_LIST_EDITOR_WIDGET_CLIENT_COMBO_BOX(editor) \ + CONTACT_LIST_EDITOR_WIDGET ((editor), "client-combo-box") #define CONTACT_LIST_EDITOR_WIDGET_DIALOG(editor) \ CONTACT_LIST_EDITOR_WIDGET ((editor), "dialog") #define CONTACT_LIST_EDITOR_WIDGET_EMAIL_ENTRY(editor) \ @@ -73,8 +75,6 @@ CONTACT_LIST_EDITOR_WIDGET ((editor), "ok-button") #define CONTACT_LIST_EDITOR_WIDGET_REMOVE_BUTTON(editor) \ CONTACT_LIST_EDITOR_WIDGET ((editor), "remove-button") -#define CONTACT_LIST_EDITOR_WIDGET_SOURCE_MENU(editor) \ - CONTACT_LIST_EDITOR_WIDGET ((editor), "source-combo-box") #define CONTACT_LIST_EDITOR_WIDGET_TREE_VIEW(editor) \ CONTACT_LIST_EDITOR_WIDGET ((editor), "tree-view") #define CONTACT_LIST_EDITOR_WIDGET_TOP_BUTTON(editor) \ @@ -189,7 +189,7 @@ contact_list_editor_update (EContactListEditor *editor) priv->allows_contact_lists); gtk_widget_set_sensitive ( - WIDGET (SOURCE_MENU), priv->is_new_list); + WIDGET (CLIENT_COMBO_BOX), priv->is_new_list); } static void @@ -318,19 +318,23 @@ contact_list_editor_add_email (EContactListEditor *editor, } static void -contact_list_editor_client_connect_cb (GObject *source_object, - GAsyncResult *result, - gpointer user_data) +contact_list_editor_get_client_cb (GObject *source_object, + GAsyncResult *result, + gpointer user_data) { ConnectClosure *closure = user_data; EContactListEditor *editor = closure->editor; + EClientComboBox *combo_box; EContactStore *contact_store; ENameSelectorEntry *entry; EClient *client; EBookClient *book_client; GError *error = NULL; - client = e_book_client_connect_finish (result, &error); + combo_box = E_CLIENT_COMBO_BOX (source_object); + + client = e_client_combo_box_get_client_finish ( + combo_box, result, &error); /* Sanity check. */ g_return_if_fail ( @@ -347,7 +351,7 @@ contact_list_editor_client_connect_cb (GObject *source_object, closure->source, error); e_source_combo_box_set_active ( - E_SOURCE_COMBO_BOX (WIDGET (SOURCE_MENU)), + E_SOURCE_COMBO_BOX (combo_box), closure->source); g_error_free (error); @@ -976,10 +980,10 @@ contact_list_editor_select_button_clicked_cb (GtkWidget *widget) } void -contact_list_editor_source_menu_changed_cb (GtkWidget *widget); +contact_list_editor_combo_box_changed_cb (GtkWidget *widget); void -contact_list_editor_source_menu_changed_cb (GtkWidget *widget) +contact_list_editor_combo_box_changed_cb (GtkWidget *widget) { ESourceComboBox *combo_box; EContactListEditor *editor; @@ -997,9 +1001,10 @@ contact_list_editor_source_menu_changed_cb (GtkWidget *widget) client_source = e_client_get_source (client); if (!e_source_equal (client_source, active_source)) - e_book_client_connect ( + e_client_combo_box_get_client ( + E_CLIENT_COMBO_BOX (widget), active_source, NULL, - contact_list_editor_client_connect_cb, + contact_list_editor_get_client_cb, g_object_ref (editor)); g_object_unref (active_source); @@ -1224,7 +1229,7 @@ static void setup_custom_widgets (EContactListEditor *editor) { EShell *shell; - ESourceRegistry *registry; + EClientCache *client_cache; GtkWidget *combo_box; ENameSelectorEntry *name_selector_entry; GtkWidget *old, *parent; @@ -1236,16 +1241,16 @@ setup_custom_widgets (EContactListEditor *editor) priv = E_CONTACT_LIST_EDITOR_GET_PRIVATE (editor); shell = eab_editor_get_shell (EAB_EDITOR (editor)); - registry = e_shell_get_registry (shell); + client_cache = e_shell_get_client_cache (shell); - combo_box = WIDGET (SOURCE_MENU); + combo_box = WIDGET (CLIENT_COMBO_BOX); - e_source_combo_box_set_registry ( - E_SOURCE_COMBO_BOX (combo_box), registry); + e_client_combo_box_set_client_cache ( + E_CLIENT_COMBO_BOX (combo_box), client_cache); g_signal_connect ( combo_box, "changed", G_CALLBACK ( - contact_list_editor_source_menu_changed_cb), NULL); + contact_list_editor_combo_box_changed_cb), NULL); old = CONTACT_LIST_EDITOR_WIDGET (editor, "email-entry"); g_return_if_fail (old != NULL); @@ -1407,7 +1412,7 @@ contact_list_editor_constructed (GObject *object) GtkCellRenderer *renderer; GtkTreeView *view; GtkTreeSelection *selection; - ESourceRegistry *registry; + EClientCache *client_cache; EShell *shell; editor = E_CONTACT_LIST_EDITOR (object); @@ -1417,7 +1422,7 @@ contact_list_editor_constructed (GObject *object) constructed (object); shell = eab_editor_get_shell (EAB_EDITOR (editor)); - registry = e_shell_get_registry (shell); + client_cache = e_shell_get_client_cache (shell); editor->priv->editable = TRUE; editor->priv->allows_contact_lists = TRUE; @@ -1456,7 +1461,7 @@ contact_list_editor_constructed (GObject *object) column, renderer, (GtkTreeCellDataFunc) contact_list_editor_render_destination, NULL, NULL); - editor->priv->name_selector = e_name_selector_new (registry); + editor->priv->name_selector = e_name_selector_new (client_cache); e_name_selector_model_add_section ( e_name_selector_peek_model (editor->priv->name_selector), @@ -1916,10 +1921,10 @@ e_contact_list_editor_set_contact (EContactListEditor *editor, if (priv->book_client != NULL) { e_source_combo_box_set_active ( - E_SOURCE_COMBO_BOX (WIDGET (SOURCE_MENU)), + E_SOURCE_COMBO_BOX (WIDGET (CLIENT_COMBO_BOX)), e_client_get_source (E_CLIENT (priv->book_client))); gtk_widget_set_sensitive ( - WIDGET (SOURCE_MENU), priv->is_new_list); + WIDGET (CLIENT_COMBO_BOX), priv->is_new_list); } priv->changed = FALSE; |