diff options
author | Chris Toshok <toshok@ximian.com> | 2001-06-20 08:34:24 +0800 |
---|---|---|
committer | Chris Toshok <toshok@src.gnome.org> | 2001-06-20 08:34:24 +0800 |
commit | 68a1984433b5b8597ea7cf99fc2417a30dc2d89d (patch) | |
tree | 664e7ed4c630bd1ea7a0324e6fdd4a864c65dd23 /addressbook/gui/contact-editor/e-contact-quick-add.c | |
parent | 454aa19e8b0a6a5ffa7eef70dcbbf122760dcdb3 (diff) | |
download | gsoc2013-evolution-68a1984433b5b8597ea7cf99fc2417a30dc2d89d.tar gsoc2013-evolution-68a1984433b5b8597ea7cf99fc2417a30dc2d89d.tar.gz gsoc2013-evolution-68a1984433b5b8597ea7cf99fc2417a30dc2d89d.tar.bz2 gsoc2013-evolution-68a1984433b5b8597ea7cf99fc2417a30dc2d89d.tar.lz gsoc2013-evolution-68a1984433b5b8597ea7cf99fc2417a30dc2d89d.tar.xz gsoc2013-evolution-68a1984433b5b8597ea7cf99fc2417a30dc2d89d.tar.zst gsoc2013-evolution-68a1984433b5b8597ea7cf99fc2417a30dc2d89d.zip |
rename ce_book_found_fields to this, remove the fetching of fields (the
2001-06-19 Chris Toshok <toshok@ximian.com>
* contact-editor/e-contact-quick-add.c (ce_have_book): rename
ce_book_found_fields to this, remove the fetching of fields (the
contact editor code handles that now.), and change the add_card
signal to card_added.
(card_added_cb): copied somewhat from merge_cb above. we don't
need to do the merge here, just call the callback.
* contact-editor/e-contact-editor.c (e_contact_editor_class_init):
track signal change. add book arg, and is_read_only -> editable.
(wants_html_changed): if the card isn't already changed, flag it
as such (and update the commands.)
(phone_entry_changed): same.
(email_entry_changed): same.
(address_text_changed): same.
(name_entry_changed): same.
(company_entry_changed): same.
(full_name_clicked): is_read_only -> editable.
(full_addr_clicked): same.
(card_added_cb): new function, emit our card_added signal, and
close the dialog if we're supposed to. properly deal with error
status here.
(card_modified_cb): same, modulo card_added -> card_modified.
(save_card): actually call e_card_merging_book_{add/commit}_card
instead of using a signal. Also, add a gboolean arg to tell
whether or not to close the dialog after saving the card.
(card_deleted_cb): new function, just emit our "card_deleted"
signal.
(delete_cb): actually call e_book_remove_card here, instead of
using a signal.
(tb_save_and_close_cb): call save_card with TRUE for should_close.
(e_contact_editor_init): init changed = FALSE;
(e_contact_editor_destroy): unref our book if we have one.
(e_contact_editor_new): new signature, set the "book" arg, and
call e_book_get_supported_fields here.
(supported_fields_cb): new function, show the contact editor.
(e_contact_editor_set_arg): initialize changed to FALSE when
setting the card (but *after*, since the changed callbacks will
set it to TRUE.) also, call command_state_changed if editable
changes. also handle setting "book". oh, and is_read_only ->
editable.
(command_state_changed): new function - set the state of the
commands we care about.
(e_contact_editor_get_arg): add "book" handling, and is_read_only
-> editable.
(_phone_arrow_pressed): is_read_only -> editable.
(_email_arrow_pressed): same.
(_address_arrow_pressed): same.
(enable_writable_fields): same.
(set_editable): rename set_read_only to this, and is_read_only ->
editable.
* contact-editor/e-contact-editor.h (struct _EContactEditor):
is_read_only -> editable, add a "changed" flag so we can sensitize
commands correctly, and add an EBook* arg to e_contact_editor_new
and to the EContactEditor struct. Also, change all the signals to
past tense, and send the EBookStatus in them.
* contact-editor/e-contact-editor-address.c
(e_contact_editor_address_class_init): is_read_only -> editable.
(e_contact_editor_address_set_arg): same.
(e_contact_editor_address_get_arg): same.
* contact-editor/e-contact-editor-address.h (struct
_EContactEditorAddress): same.
* contact-editor/e-contact-editor-fullname.c
(e_contact_editor_fullname_class_init): same.
(e_contact_editor_fullname_set_arg): same.
(e_contact_editor_fullname_get_arg): same.
* contact-editor/e-contact-editor-fullname.h (struct
_EContactEditorFullname): same.
* contact-editor/Makefile.am: don't build contact-editor-test now,
until contact-editor gets moved to gui/ and we can more easily
depend on the e_card_merging_* calls.
* backend/pas/pas-backend-ldap.c (ldap_error_to_response): return
CardIdAlreadyExists for LDAP_ALREADY_EXISTS.
* backend/idl/addressbook.idl: Add CardIdAlreadyExists to the
BookListener status enum.
* backend/ebook/e-book-types.h: add
E_BOOK_STATUS_CARD_ID_ALREADY_EXISTS.
* backend/ebook/e-book-listener.c
(e_book_listener_convert_status): add support for
CardIdAlreadyExists.
svn path=/trunk/; revision=10317
Diffstat (limited to 'addressbook/gui/contact-editor/e-contact-quick-add.c')
-rw-r--r-- | addressbook/gui/contact-editor/e-contact-quick-add.c | 49 |
1 files changed, 18 insertions, 31 deletions
diff --git a/addressbook/gui/contact-editor/e-contact-quick-add.c b/addressbook/gui/contact-editor/e-contact-quick-add.c index 548ff6ed4d..096f038dd7 100644 --- a/addressbook/gui/contact-editor/e-contact-quick-add.c +++ b/addressbook/gui/contact-editor/e-contact-quick-add.c @@ -151,11 +151,14 @@ quick_add_merge_card (QuickAdd *qa) */ static void -add_card_cb (EContactEditor *ce, ECard *card, gpointer closure) +card_added_cb (EContactEditor *ce, EBookStatus status, ECard *card, gpointer closure) { QuickAdd *qa = (QuickAdd *) closure; - g_warning ("add_card_cb"); - quick_add_merge_card (qa); + + if (qa->cb) + qa->cb (qa->card, qa->closure); + + quick_add_unref (qa); } static void @@ -168,32 +171,7 @@ editor_closed_cb (GtkWidget *w, gpointer closure) } static void -ce_book_found_fields (EBook *book, EBookStatus status, EList *fields, gpointer closure) -{ - QuickAdd *qa = (QuickAdd *) closure; - EContactEditor *contact_editor; - - if (status != E_BOOK_STATUS_SUCCESS) { - g_warning ("Couldn't find supported fields for local address book."); - return; - } - - contact_editor = e_contact_editor_new (qa->card, TRUE, fields, FALSE /* XXX */); - - gtk_signal_connect (GTK_OBJECT (contact_editor), - "add_card", - GTK_SIGNAL_FUNC (add_card_cb), - qa); - gtk_signal_connect (GTK_OBJECT (contact_editor), - "editor_closed", - GTK_SIGNAL_FUNC (editor_closed_cb), - qa); - - e_contact_editor_show (contact_editor); -} - -static void -ce_get_fields (EBook *book, gpointer closure) +ce_have_book (EBook *book, gpointer closure) { QuickAdd *qa = (QuickAdd *) closure; @@ -201,14 +179,23 @@ ce_get_fields (EBook *book, gpointer closure) g_warning ("Couldn't open local address book."); quick_add_unref (qa); } else { - e_book_get_supported_fields (book, ce_book_found_fields, qa); + EContactEditor *contact_editor = e_contact_editor_new (book, qa->card, TRUE, FALSE /* XXX */); + + gtk_signal_connect (GTK_OBJECT (contact_editor), + "card_added", + GTK_SIGNAL_FUNC (card_added_cb), + qa); + gtk_signal_connect (GTK_OBJECT (contact_editor), + "editor_closed", + GTK_SIGNAL_FUNC (editor_closed_cb), + qa); } } static void edit_card (QuickAdd *qa) { - e_book_use_local_address_book (ce_get_fields, qa); + e_book_use_local_address_book (ce_have_book, qa); } static void |