aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/ChangeLog
diff options
context:
space:
mode:
Diffstat (limited to 'addressbook/ChangeLog')
-rw-r--r--addressbook/ChangeLog2073
1 files changed, 2071 insertions, 2 deletions
diff --git a/addressbook/ChangeLog b/addressbook/ChangeLog
index ed3992ba42..881c16f422 100644
--- a/addressbook/ChangeLog
+++ b/addressbook/ChangeLog
@@ -1,3 +1,893 @@
+2003-10-20 Dan Winship <danw@ximian.com>
+
+ * backend/pas/pas-book-view.c: Queue up removes and modifies as
+ well as adds, and remove the calls that took a list of changes
+ rather than a single change, since no one was really using the
+ list versions. Keep a list of IDs currently in the view so we can
+ more easily figure out what changes count as adds, modifies, and
+ removes.
+ (send_pending_adds): Don't reset next_threshold if it's being
+ called from notify_add.
+ (send_pending_changes, send_pending_removes): New
+ (pas_book_view_notify_update): Simplified add/change interface.
+ Takes an EContact and figures out if it's new, modified, or
+ removed relative to this view.
+ (pas_book_view_notify_change, pas_book_view_notify_change_1,
+ pas_book_view_notify_add, pas_book_view_notify_add_1): Gone.
+ (pas_book_view_notify_remove): Now does what remove_1 used to do.
+ (pas_book_view_vcard_matches): Remove this; no longer used.
+
+ * backend/pas/pas-backend.c (pas_backend_notify_update): New.
+ Calls pas_book_view_notify_update() on each of the backend's views.
+ (pas_backend_notify_remove): Likewise for notify_remove().
+ (pas_backend_notify_complete): And notify_complete().
+
+ * backend/pas/pas-book.c (pas_book_respond_create): Take an
+ EContact instead of an id and a vcard. Use
+ pas_backend_notify_update.
+ (pas_book_respond_remove_contacts): Use pas_backend_notify_remove.
+ (pas_book_respond_modify): Take a single EContact instead of two
+ vcards. Use pas_backend_notify_update.
+
+ * backend/pas/pas-backend-sync.c
+ (pas_backend_sync_create_contact): Return an EContact rather than
+ an id.
+ (pas_backend_sync_modify_contact): Return an EContact rather than
+ the old_vcard.
+ (_pas_backend_create_contact, _pas_backend_modify_contact): Update
+
+ * backend/pas/pas-backend-file.c (do_summary_query): Use
+ pas_book_view_notify_update.
+ (pas_backend_file_search_timeout): Likewise
+ (pas_backend_file_create_contact): Update for API changes
+ (pas_backend_file_modify_contact): Likewise.
+
+ * backend/pas/pas-backend-ldap.c (create_contact_handler,
+ pas_backend_ldap_process_create_contact): Update for API changes
+ (modify_contact_modify_handler, modify_contact_search_handler,
+ pas_backend_ldap_process_modify_contact): Likewise
+ (ldap_search_handler): Use pas_book_view_notify_update
+
+ * backend/pas/pas-backend-vcf.c (foreach_search_compare): Use
+ pas_book_view_notify_update.
+ (pas_backend_vcf_process_create_contact): Update for API changes
+ (pas_backend_vcf_process_modify_contact): Likewise
+
+ * backend/pas/pas-backend-summary.c
+ (pas_backend_summary_add_contact): Take an EContact instead of a
+ const char *vcard.
+
+ * backend/ebook/e-contact.c (photo_getter): s/malloc/g_malloc/
+
+ * backend/ebook/tests/ebook/Makefile.am:
+ * backend/ebook/tests/vcard/Makefile.am: Make these automake-1.7
+ compliant
+
+2003-10-20 JP Rosevear <jpr@ximian.com>
+
+ * backend/pas/pas-backend-vcf.c (pas_backend_vcf_search): compiler
+ with non-c99 compilers
+
+2003-10-17 Chris Toshok <toshok@ximian.com>
+
+ * backend/ebook/e-contact.c (fn_getter): new function, just return
+ the full name value.
+ (fn_setter): rather distasteful hack. set the N attribute if it's
+ not already present.
+ (n_setter): set the X-EVOLUTION-FILE-AS attribute if it's not
+ already set.
+
+ * backend/pas/pas-backend-ldap.c (prop_info): add PROP_WRITE_ONLY
+ flag for properties (right now just 'sn') that we don't want to
+ use when building the EContact - we only use it when storing the
+ contact out to the ldap server.
+ (build_contact_from_entry): skip WRITE_ONLY properties.
+
+2003-10-17 Chris Toshok <toshok@ximian.com>
+
+ * gui/widgets/e-addressbook-view.c (init_collection): add the
+ minicard factory back in.
+ (display_view): add the minicard case back in.
+ (get_selection_model): same.
+ (minicard_right_click): resurrect.
+ (create_minicard_view): same.
+ (change_view_type): add the minicard case back in.
+ (eab_view_print): same.
+ (eab_view_print_preview): same.
+
+ * gui/widgets/e-addressbook-view.h (EABViewType): add MINICARD
+ back in.
+
+ * gui/widgets/e-addressbook-model.c (eab_model_new):
+ E_TYPE_AB_MODEL -> EAB_TYPE_MODEL.
+
+ * gui/widgets/e-addressbook-model.h: rename E_TYPE_AB_MODEL to
+ EAB_TYPE_MODEL.
+
+ * gui/widgets/Makefile.am (libeabwidgets_la_SOURCES): add the
+ minicard stuff back into the build.
+
+ * gui/widgets/e-addressbook-reflow-adapter.[ch],
+ gui/widgets/e-minicard-label.[ch],
+ gui/widgets/e-minicard-view-widget.[ch],
+ gui/widgets/e-minicard-view.[ch], gui/widgets/e-minicard.[ch],
+ gui/widgets/gal-view-factory-minicard.[ch], gal-view-minicard.h:
+ resurrect the minicard stuff, in a new uneditable,
+ EContact-friendly state. no in-place editing anymore.
+
+
+2003-10-10 Chris Toshok <toshok@ximian.com>
+
+ * gui/contact-editor/e-contact-editor.c (fill_in_info): un-ifdef
+ the date handling code.
+ (extract_info): same.
+
+ * backend/pas/pas-backend-ldap.c (prop_info): add the address
+ labels and dates to the build.
+ (anniversary_populate): un-ifdef and get this working.
+ (anniversary_ber): same.
+ (anniversary_compare): same.
+ (birthday_populate): same.
+ (birthday_ber): same.
+ (birthday_compare): same.
+
+ * backend/ebook/tests/ebook/.cvsignore,
+ backend/ebook/tests/ebook/Makefile.am
+ backend/ebook/tests/ebook/test-date.c: add a test for EContactDate
+ getting/setting.
+
+ * backend/ebook/e-vcard.h: add EVC_BDAY.
+
+ * backend/ebook/e-contact.h: add prototypes for the
+ e_contact_date_* functions.
+
+ * backend/ebook/e-contact.c (field_info): add
+ BIRTH_DATE/ANNIVERSARY fields.
+ (date_getter): new
+ (date_setter): new
+ (e_contact_date_new): new
+ (e_contact_date_from_string): new
+ (e_contact_date_to_string): new
+ (e_contact_date_free): new
+
+2003-10-10 Not Zed <NotZed@Ximian.com>
+
+ *
+ gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.server.in.in:
+ Use the main factory on the .so file, so it can be found.
+
+2003-10-08 Chris Toshok <toshok@ximian.com>
+
+ * gui/component/select-names/e-select-names.c (contact_key): add a
+ descriptive comment about this "#if notyet".
+
+ * gui/component/select-names/e-select-names-model.h
+ (e_select_names_model_thaw): add prorotype for
+ e_select_names_model_cancel_all_contact_load.
+
+ * gui/component/select-names/e-select-names-bonobo.c
+ (_EntryPropertyID): remove the SIMPLE_CARD_LIST property.
+ (entry_get_property_fn): same.
+ (impl_SelectNames_get_entry_for_section): same.
+
+ * backend/ebook/e-contact.h: add prototype for
+ e_contact_name_to_string.
+
+2003-10-07 Chris Toshok <toshok@ximian.com>
+
+ * util/eab-book-util.c: remove a bunch of ifdef'ed code (that's
+ going to be living in e-book.c)
+
+ * backend/pas/pas-backend-summary.c
+ (pas_backend_summary_add_contact): un-ifdef some code.
+ (pas_backend_summary_get_summary_vcard): same.
+
+ * backend/pas/pas-backend-ldap.c (prop_info): remove the
+ query_prop field since we can get it from e_contact_field_name.
+ also remove it from all the macros and their uses.
+ (homephone_populate): un-ifdef.
+ (homephone_ber): same.
+ (homephone_compare): same.
+ (business_populate): same.
+ (business_ber): same.
+ (business_compare): same.
+ (query_prop_to_ldap): use e_contact_field_name to get the query
+ prop for a given attribute.
+ (add_oc_attributes_to_supported_fields): same.
+
+ * backend/pas/pas-backend-card-sexp.c (compare_phone): use the new
+ EContactField constants to iterate over the phone list.
+
+ * backend/ebook/e-contact.h (EContactField): add some useful
+ constants for those pieces of code that iterate over
+ email/phones/addresses.
+
+2003-10-07 Chris Toshok <toshok@ximian.com>
+
+ * gui/widgets/eab-vcard-control.c (book_open_cb): un-ifdef this.
+ (eab_vcard_control_new): put the buttons above the vcard so they
+ don't move when it's expanded.
+
+ * gui/widgets/eab-popup-control.h: remove prototypes for
+ eab_popup_control_set_name and eab_popup_control_set_email.
+
+ * gui/widgets/eab-popup-control.c (email_table_ok_cb): remove the
+ stupid idle function and do the work here.
+ (eab_popup_control_set_name): make this static - noone uses it.
+ (eab_popup_control_set_email): same.
+
+ * gui/widgets/eab-gui-util.c (eab_show_contact_editor):
+ e_contact_editor_new is what we use for the time being.
+
+ * gui/widgets/eab-contact-display.c (render_string): abstract this
+ code out.
+ (render_url): same.
+ (eab_contact_display_render_normal): make use of render_string and
+ render_url.
+
+ * gui/widgets/e-addressbook-view.c (delete): un-ifdef this and get
+ it working.
+ (selection_received): same.
+
+ * gui/widgets/e-addressbook-model.c (get_view): nuke some code
+ that was moved to another function.
+ (eab_model_set_property): get the writable state when we set the
+ book - don't rely on the timing of signals.
+
+ * gui/contact/editor/contact-editor.glade: add the blog field
+ below the homepage url field.
+
+ * gui/contact/editor/e-contact-editor-address.[ch]: get this
+ building with the new stuff.
+
+ * gui/contact/editor/e-contact-editor-fullname.[ch]: get this
+ building with the new stuff.
+
+ * gui/contact-editor/e-contact-editor.[ch]: get this most of the
+ way there.
+
+ * gui/contact-editor/e-contact-quick-add.[ch]: get this building
+ with the new stuff.
+
+ * gui/contact-editor/Makefile.am (libecontacteditor_la_SOURCES):
+ remove e-contact-save-as.[ch]. They're in
+ addressbook/widgets/eab-gui-util.[ch] now.
+
+ * gui/merging/Makefile.am: track all the naming changes.
+
+ * gui/merging/*.glade: gratuitous renaming.
+
+ * gui/merging/eab-contact-compare.[ch]: gratuitous renaming, and
+ move this from the old ebook/
+
+ * gui/merging/eab-contact-merging.[ch]: gratuitous renaming.
+
+ * backend/ebook/e-contact.[ch]: lots of overly complicated changes
+ for an overly complicated piece of code.
+
+ * backend/ebook/e-book-view.c (e_book_view_do_added_event): remove
+ some ifdef'ed code.
+ (e_book_view_do_modified_event): same.
+
+ * backend/ebook/e-vcard.c (parse): plug a memory leak.
+ (escape_string): deal with @s being NULL.
+ (e_vcard_remove_attribute): new function.
+ (e_vcard_attribute_remove_params): same.
+ (e_vcard_attribute_param_free): same.
+ (e_vcard_attribute_param_remove_values): same.
+
+ * backend/ebook/e-vcard.h: add prototypes for
+ e_vcard_remove_attribute, e_vcard_attribute_remove_params, and
+ e_vcard_attribute_param_remove_values.
+
+ * backend/ebook/e-book.c (e_book_handle_response): cache the
+ writable state of the ebook before generating the signal.
+ (e_book_unload_uri): initialize cap to NULL and writable to FALSE.
+
+ * backend/ebook/e-book.h: add prototype for e_book_is_writable.
+
+ * backend/ebook/e-book-async.c (_get_fields_response_handler):
+ don't call the callback if it's NULL.
+ (_get_methods_response_handler): same.
+ (_auth_user_response_handler): same.
+ (_get_contact_response_handler): same.
+ (_remove_contacts_response_handler): same.
+ (_add_contact_response_handler): same.
+ (_commit_contact_response_handler): same.
+ (_get_book_view_response_handler): same.
+ (_get_contacts_response_handler): same.
+ (_remove_contacts_dtor): free the list.
+ (e_book_async_remove_contacts): duplicate the list.
+
+ * backend/pas/pas-backend.c (pas_backend_open): if we successfully
+ load the uri, report the writable status back.
+
+ * backend/pas/pas-backend-sync.c (_pas_backend_remove_contacts):
+ free the list of ids.
+
+ * backend/pas/pas-backend-file.c (do_create): return the contact
+ we create here.
+ (pas_backend_file_create_contact): format the newly created
+ contact as a string to add to the summary.
+ (pas_backend_file_remove_contacts): don't free the list of removed
+ cards here - it happens in pas-backend-sync.
+ (pas_backend_file_load_uri): pass NULL for @contact to do_create.
+
+2003-10-01 Chris Toshok <toshok@ximian.com>
+
+ * gui/widgets/eab-contact-display.c (render_address): move the :'s
+ inside the <b>'s. Thanks for pointing this out, guenther. :)
+ (eab_contact_display_render_normal): same.
+ (eab_contact_display_render_compact): same.
+
+ * gui/widgets/eab-vcard-control.c (save_in_addressbook): track
+ change to address_load_default_book.
+
+2003-10-01 Chris Toshok <toshok@ximian.com>
+
+ * gui/component/Makefile.am: remove some commented out crap about
+ e-address-popup.[ch].
+
+ * gui/component/component-factory.c (factory): use
+ eab_popup_control_new for the AddressPopup iid.
+
+ * gui/widgets/Makefile.am (libeabwidgets_la_SOURCES): add
+ eab-popup-control.[ch].
+
+ * backend/ebook/e-book.c (e_book_get_default_addressbook): hack
+ this so it at least sorta works - hardcode the
+ ~/evolution/local/Contacts uri for now.
+
+ * gui/component/addressbook.[ch] (addressbook_load_default_book):
+ remove the EBook argument, and call
+ e_book_async_get_default_addressbook.
+
+ * gui/component/e-address-popup.[ch]: nuke.
+
+ * gui/widgets/eab-popup-control.c: rename
+ gui/component/e-address-popup.c to this.
+
+ * gui/widgets/eab-popup-control.h: rename
+ gui/component/e-address-popup.h to this.
+
+ * backend/ebook/e-book-async.h: add prototype for
+ e_book_async_get_default_addressbook.
+
+ * backend/ebook/e-book-async.c
+ (e_book_async_get_default_addressbook): new function.
+
+2003-10-01 Chris Toshok <toshok@ximian.com>
+
+ * gui/widgets/e-addressbook-view.c (eab_view_new): create the
+ scrolled window to embed the EABContactDisplay widget inside of.
+
+ * gui/widgets/e-addressbook-view.h (struct _EABView): add scrolled;
+
+ * gui/widgets/eab-contact-display.h: add
+ EABContactDisplayRenderMode enum, and add @render_mode arg to
+ eab_contact_display_render.
+
+ * gui/widgets/eab-contact-display.c
+ (eab_contact_display_render_compact): new function, render a
+ compact format suitable for inclusion in the mail display.
+ (eab_contact_display_render_normal): move the previouw contents of
+ eab_contact_display_render here.
+ (eab_contact_display_render): render in either compact or normal
+ mode depending on @mode.
+ (eab_contact_display_new): remove the scrolled window stuff from
+ here, as in the compact mode we don't want it present. push it up
+ into the e-addressbook-view.c code.
+
+ * gui/widgets/eab-vcard-control.[ch]: bonobo control that wraps up
+ the EABContactDisplay stuff and lets us display vcards in a pretty
+ format in mail messages.
+
+ * gui/component/component-factory.c (factory): replace the #if
+ notyet'ed minicard control code with the new vcard control.
+
+ * gui/component/Makefile.am (INCLUDES): remove gui/minicard.
+
+ * gui/component/GNOME_Evolution_Addressbook.server.in.in: remove
+ the MiniCard_Control iid, and replace it with VCard_Control.
+
+2003-10-01 Chris Toshok <toshok@ximian.com>
+
+ * gui/component/addressbook-component.c
+ (destination_folder_handle_drop): use
+ eab_contact_list_from_string, and un-"#if notyet" this.
+
+ * gui/component/addressbook.c: remove #include
+ "e-contact-save-as.h"
+
+ * gui/contact-list-editor/e-contact-list-editor.c
+ (file_save_as_cb): use eab_contact_save.
+ (file_send_as_cb): use eab_send_contact, un-"#if notyet" this.
+ (file_send_to_cb): same.
+ (table_drag_data_received_cb): use eab_contact_list_from_string.
+
+ * gui/widgets/e-addressbook-reflow-adapter.[ch]: nuke. last
+ vestiges of the minicard view.
+
+ * gui/widgets/e-addressbook-view.c (eab_view_init):
+ s/clipboard_cards/cliboard_contacts.
+ (eab_view_dispose): same.
+ (get_contact_list_1): s/card/contact
+ (get_contact_list): same.
+ (save_as): same, and use eab_contact_list_save.
+ (send_as): reenable this code, s/card/contact, and use
+ eab_send_contact_list.
+ (send_to): same.
+ (print): s/card/contact.
+ (delete): same.
+ (new_card): same, and un-"#if notyet" some code.
+ (selection_get): use eab_contact_list_to_string.
+ (selection_clear_event): s/card/contact
+ (selection_received): same.
+ (get_selected_contacts): same.
+ (eab_view_save_as): same, and use eab_contact_list_save.
+ (eab_view_view): same, and use eab_show_multiple_contacts.
+ (eab_view_send): reenable this code, s/card/contact, and use
+ eab_send_contact_list.
+ (eab_view_send_to): same.
+ (eab_view_copy): s/card/contact.
+ (view_transfer_contacts): same.
+ (eab_view_copy_to_folder): same.
+ (eab_view_move_to_folder): same.
+
+ * gui/widgets/e-addressbook-view.h (struct _EABView): rename
+ clipboard_cards to clipboard_contacts.
+
+ * gui/widgets/eab-gui-util.c (view_contacts): un-"#if notyet"
+ (file_exists): moved from e-contact-save-as.c
+ (save_it): same.
+ (close_it): same.
+ (destroy_it): same.
+ (make_safe_filename): same.
+ (eab_contact_save): same, and renamed from e_contact_save_as.
+ (eab_contact_list_save): same, and renamed from
+ e_contact_list_save_as.
+ (contact_deleted_cb): s/card/contact.
+ (do_delete): same, and use e_book_async.
+ (delete_contacts): s/card/contact.
+ (process_unref): same.
+ (contact_added_cb): same.
+ (do_copy): same, and use e_book_async.
+ (got_book_cb): same.
+ (eab_transfer_contacts): same, and use e_book_async.
+ (eab_send_contact_list): s/card/contact
+ (eab_send_contact): same.
+
+ * gui/widgets/eab-gui-util.h: some random s/card/contact work, and
+ move the contents of e-contact-save-as.h here.
+
+ * util/eab-book-util.c (eab_contact_list_from_string): rename
+ eab_load_contacts_from_string to this.
+ (eab_contact_list_to_string): new function.
+
+ * util/eab-book-util.h: add prototype for
+ eab_contact_list_to_string, and rename
+ eab_load_contacts_from_string to eab_contact_list_from_string.
+
+ * gui/contact-editor/e-contact-save-as.[ch]: nuke. the contents
+ of these files has been wrapped up in
+ gui/widgets/eab-gui-util.[ch].
+
+2003-09-30 Chris Toshok <toshok@ximian.com>
+
+ * gui/component/Makefile.am (libevolution_addressbook_la_LIBADD):
+ add libecontactlisteditor.la back into the build.
+
+ * gui/component/addressbook-component.c (new_item_cb): enable the
+ contact list editor portion.
+
+ * util/eab-book-util.c (eab_load_contacts_from_string): new
+ function, return a GList of EContact*'s parsed from the string.
+
+ * util/eab-book-util.h: add prototype for
+ eab_load_contacts_from_string.
+
+ * gui/contact-list-editor/contact-list-editor.glade: set the id of
+ the list-image widget.
+
+ * gui/contact-list-editor/e-contact-list-editor.c
+ (e_contact_list_editor_class_init): PROP_CARD -> PROP_CONTACT.
+ (e_contact_list_editor_init): initialize image_buf to null and
+ card -> contact. also, hook up the dnd signals on the list_image
+ widget so we can drop images.
+ (e_contact_list_editor_dispose): free the image_buf.
+ (list_added_cb): card -> contact.
+ (list_modified_cb): same.
+ (save_contact): same, and use the ebook-async api.
+ (prompt_to_save_changes): card -> contact.
+ (file_save_cb): same.
+ (file_save_as_cb): same.
+ (file_send_as_cb): #if notyet for now.
+ (file_send_to_cb): same.
+ (tb_save_and_close_cb): card -> contact.
+ (list_deleted_cb): same.
+ (delete_cb): same.
+ (delete_cb): same, and use ebook-async.
+ (e_contact_list_editor_new): card -> contact.
+ (e_contact_list_editor_set_property): same.
+ (table_drag_motion_cb): use GDK_POINTER_TO_ATOM instead of
+ casting.
+ (table_drag_data_received_cb): use eab_load_contacts_from_string,
+ and card -> contact.
+ (set_image_from_data): new function. create a pixbuf from the
+ image data and composite it in an image that's the same size as
+ the initial list_image widget.
+ (image_drag_motion_cb): new function.
+ (image_drag_drop_cb): new function.
+ (image_drag_data_received_cb): new function.
+ (extract_info): port to EContact, and add support for the image.
+ (fill_in_info): same.
+
+ * gui/contact-list-editor/e-contact-list-editor.h (struct
+ _EContactListEditor): add image stuff, and ECard -> EContact.
+
+ * gui/contact-list-editor/e-contact-list-model.c
+ (contact_list_value_at): e_destination -> eab_destination.
+ (e_contact_list_model_init): same.
+ (e_contact_list_model_add_destination): same.
+ (e_contact_list_model_add_email): same.
+ (e_contact_list_model_add_contact): same, and card -> contact.
+ (e_contact_list_model_remove_row): e_destination ->
+ eab_destination.
+ (e_contact_list_model_get_destination): same.
+
+ * gui/contact-list-editor/e-contact-list-model.h: card -> contact,
+ and e-destination -> eab-destination.
+
+ * gui/widgets/e-addressbook-view.etspec: fix a couple of
+ fields.. this needs a completely once-over at some point soon.
+
+ * gui/widgets/e-addressbook-view.c (table_double_click): reenable
+ all of this.
+
+ * gui/widgets/eab-contact-display.c (render_address): use
+ e_text_to_html to convert the \n's to <br>'s.
+ (on_url_requested): get PHOTO if there is one, otherwise LOGO.
+ (eab_contact_display_render): escape all the text we're sending to
+ gtkhtml with e_text_to_html. also, if it's a contact list, output
+ _("List Members") with the contents of _EMAIL.
+
+ * gui/widgets/eab-gui-util.h: rename eab_send_card{_list} to
+ eab_send_contact{_list}.
+
+2003-09-30 Chris Toshok <toshok@ximian.com>
+
+ * backend/ebook/tests/ebook/Makefile.am (noinst_PROGRAMS): add
+ test-string.
+
+ * backend/ebook/tests/ebook/test-string.c: test setting/getting a
+ string attribute.
+
+ * backend/ebook/e-contact.c (photo_setter): do gnome-vfs mime type
+ sniffing before we set the attribute value.
+ (e_contact_set_property): implement setting of MULTI list
+ attributes (like MAIL).
+ (e_contact_get_property): rework the ATTR_TYPE attribute handling
+ so we aren't calling g_value_set_pointer on a value that holds a
+ string (and vice versa).
+
+ * backend/ebook/e-vcard.c (e_vcard_remove_attributes): implement.
+ (e_vcard_attribute_add_param): use g_ascii_strcasecmp.
+
+ * backend/ebook/e-vcard.h: rename e_vcard_remove_attribute to
+ e_vcard_remove_attributes, since it removes all matching
+ attributes.
+
+ * backend/ebook/e-book.c (e_book_response_add_contact): we need to
+ strdup the id here since the listener frees it.
+ (e_book_handle_response): implement the WritableStatusEvent part
+ of the switch.
+
+ * backend/ebook/e-book-listener.c
+ (impl_BookListener_report_writable): un-"#if notyet" this.
+
+ * backend/ebook/e-book-async.c (_add_contact_handler): fill in
+ response->id.
+
+2003-09-29 Chris Toshok <toshok@ximian.com>
+
+ * printing/e-contact-print-envelope.c: card -> contact.
+
+ * printing/e-contact-print-envelope.h: card -> contact.
+
+ * printing/e-contact-print.c: card -> contact.
+
+ * printing/e-contact-print.h: card -> contact.
+
+ * printing/Makefile.am (contact_print_test_LDADD): add
+ libeabutil.la and reorder things so it links.
+ (contact_print_style_editor_test_LDADD): same.
+
+2003-09-29 Chris Toshok <toshok@ximian.com>
+
+ * gui/component/select-names/e-select-names-text-model.c:
+ e-addressbook-util.h -> eab-gui-util.h.
+
+ * gui/component/select-names/e-select-names-popup.c:
+ e-addressbook-util.h -> eab-gui-util.h.
+
+ * gui/component/e-address-popup.c: e-addressbook-util.h ->
+ eab-gui-util.h.
+
+ * gui/component/component-factory.c: #if notyet the minicard
+ control stuff, since it's been completely nuked from the tree.
+
+ * gui/component/addressbook.c: e-addressbook-util.h ->
+ eab-gui-util.h.
+
+ * gui/component/addressbook-component.c: e-addressbook-util.h ->
+ eab-gui-util.h.
+
+ * gui/component/Makefile.am (libevolution_addressbook_la_LIBADD):
+ rename libeminicard to libeabwidgets.
+
+ * Makefile.am (SUBDIRS): add util/ to the build.
+
+2003-09-29 Chris Toshok <toshok@ximian.com>
+
+ * gui/widgets/e-addressbook-treeview-adapter.c:
+ e-addressbook-util.h -> eab-gui-util.h, and convert some
+ EDestination code to EABDestination.
+
+ * gui/widgets/e-addressbook-table-adapter.c: e-addressbook-util.h
+ -> eab-gui-util.h, and include util/eab-destination.h.
+ (addressbook_value_at): un-#if 0 some code.
+
+ * gui/widgets/e-addressbook-model.c: e-addressbook-util.h ->
+ eab-gui-util.h
+
+ * gui/widgets/e-addressbook-view.c: e-addressbook-util.h ->
+ eab-gui-util.h
+
+ * gui/widgets/e-minicard-control.c,
+ gui/widgets/e-minicard-control.h, gui/widgets/e-minicard-label.c,
+ gui/widgets/e-minicard-label.h,
+ gui/widgets/e-minicard-view-widget.c,
+ gui/widgets/e-minicard-view-widget.h,
+ gui/widgets/e-minicard-view.c, gui/widgets/e-minicard-view.h,
+ gui/widgets/e-minicard-widget-test.c,
+ gui/widgets/e-minicard-widget.c, gui/widgets/e-minicard-widget.h,
+ gui/widgets/e-minicard.c, gui/widgets/e-minicard.h,
+ test-minicard-label.c, test-minicard-view.c, test-minicard.c: nuke
+ all of the old minicard stuff.
+
+ * gui/widgets/eab-gui-util.[ch]: rename e-addressbook-util.[ch] to
+ this and nuke e-addressbook-util.[ch].
+
+ * gui/widgets/Makefile.am (INCLUDES): change G_LOG_DOMAIN to
+ eab-widgets, and add -I$(top_srcdir)/addressbook.
+ (noinst_LTLIBRARIES): rename to libeabwidgets.la
+ (libeabwidgets_la_SOURCES): rename e-addressbook-util.[ch] to
+ eab-gui-util.[ch].
+
+2003-09-29 Chris Toshok <toshok@ximian.com>
+
+ * gui/widgets/eab-contact-display.c (eab_contact_display_new):
+ track change from E_TYPE_AB_CONTACT_DISPLAY to
+ EAB_TYPE_CONTACT_DISPLAY.
+
+ * gui/widgets/eab-contact-display.h: change from E_* type foo to
+ EAB_* type foo.
+
+2003-09-29 Chris Toshok <toshok@ximian.com>
+
+ * gui/search/e-addressbook-search-dialog.[ch]: convert everything
+ from e_addressbook_search_dialog to eab_search_dialog, and
+ EAddressbookSearchDialog to EABSearchDialog.
+
+ * gui/component/addressbook.c (search_cb):
+ e_addressbook_search_dialog -> eab_search_dialog.
+ (addressbook_search_activated): same.
+ (addressbook_query_changed): same.
+
+2003-09-29 Chris Toshok <toshok@ximian.com>
+
+ * backend/pas/pas-book.c (pas_book_respond_get_supported_fields):
+ don't free the fields here - the backends hold onto them.
+ (pas_book_respond_get_supported_auth_methods): don't free the
+ auth_methods here - the backends hold onto them.
+
+ * backend/pas/pas-backend-file.c
+ (pas_backend_file_get_supported_fields): fields go from 1 to
+ E_CONTACT_FIELD_LAST, not 0.
+
+2003-09-29 Chris Toshok <toshok@ximian.com>
+
+ * gui/component/addressbook.c: e-book-util.h -> eab-book-util.h
+
+ * gui/component/addressbook-component.c: e-book-util.h ->
+ eab-book-util.h.
+ (new_item_cb): enable the contact editor portion of this.
+ (user_create_new_item_cb): convert to async_load_uri api, and
+ ifdef the _use_default_book crap.
+ (ensure_completion_uris_exist): e_book_get_config_database ->
+ eab_get_config_database.
+
+ * gui/component/e-address-widget.h: e-book-util.h ->
+ eab-book-util.h.
+
+ * gui/component/Makefile.am (libevolution_addressbook_la_LIBADD):
+ add selectnames back in, and add util/libeabutil.la.
+
+2003-09-29 Chris Toshok <toshok@ximian.com>
+
+ * backend/ebook/e-contact.c: my head explodes from so many
+ changes.
+
+ * backend/ebook/e-contact.h: reorder fields such that all the
+ string fields are first in the enum (and add a
+ E_CONTACT_LAST_SIMPLE_STRING value, ala the old e-card-simple
+ stuff.) Also, add E_CONTACT_LOGO, WANTS_HTML, IS_LIST, and
+ LIST_SHOW_ADDRESSES. remove E_CONTACT_PHOTO_URI.
+
+ * backend/ebook/e-vcard.c (e_vcard_remove_attribute): rename from
+ e_card_remove_attribute, and add a g_assert_not_reached.
+ (_evc_base64_encode_simple): make this not static (we need it for
+ a test.)
+ (_evc_base64_decode_simple): same.
+
+ * backend/ebook/e-vcard.h: add LOGO, X-MOZILLA-HTML,
+ X-EVOLUTION-LIST, and X-EVOLUTION-LIST-SHOW_ADDRESSES #defines.
+
+ * backend/ebook/e-book.c (EBookLoadState): change from
+ UriNotLoaded to E_BOOK_URI_NOT_LOADED, etc.
+ (e_book_add_contact): track _URI_ change.
+ (e_book_get_supported_fields): same.
+ (e_book_get_supported_auth_methods): same.
+ (e_book_authenticate_user): same.
+ (e_book_get_contact): same.
+ (e_book_response_get_contact): remove the ifdefed call to
+ e_contact_set_book.
+ (e_book_remove_contacts): track _URI_ change.
+ (e_book_get_book_view): same.
+ (e_book_get_contacts): same.
+ (e_book_get_changes): same.
+ (e_book_remove): same.
+ (e_book_unload_uri): same.
+ (e_book_load_uri): same.
+ (e_book_load_uri): same.
+ (e_book_get_self): start the implementation of this.
+ (e_book_get_default_addressbook): ifdef out a possible
+ implementation of this (it's broken.)
+ (e_book_init): track _URI_ change.
+ (e_book_dispose): same.
+
+ * backend/ebook/e-book.h: move get_default_addressbook out of the
+ ifdef, and change get_default_addressbook/get_addressbooks to be
+ more like the rest of the api.
+
+ * backend/ebook/e-book-util.[ch]: nuke.
+
+ * backend/ebook/e-card-compare.[ch]: nuke.
+
+ * backend/ebook/e-destination.[ch]: nuke.
+
+ * backend/ebook/e-book-query.c (func_and): fix valgrind error.
+ (func_or): same.
+
+ * backend/ebook/e-book-listener.h: drop #include of e-list.h
+
+ * backend/ebook/e-book-async.c (_get_contacts_response_handler)
+ (_get_contacts_response_dtor, _get_contacts_handler)
+ (_get_contacts_dtor, e_book_async_get_contacts): new functions,
+ implementing e_book_async_get_contacts.
+
+ * backend/ebook/e-book-async.h: add e_book_async_get_contacts.
+
+2003-09-29 Chris Toshok <toshok@ximian.com>
+
+ * util/eab-marshal.list: new file.
+
+ * util/eab-destination.[ch]: rename
+ backend/ebook/e-destination.[ch] to this, and change all the entry
+ point names too.
+
+ * util/eab-book-util.[ch]: rename backend/ebook/e-book-util.[ch]
+ to this, and change all the entry point names too.
+
+ * util/Makefile.am: new file, build libeabutil.la
+
+2003-09-29 Chris Toshok <toshok@ximian.com>
+
+ * gui/component/select-names/e-select-names.c
+ (addressbook_model_set_uri): e_addressbook_model -> eab_model.
+ (contact_key): e-contactify this, and remove the call to
+ e_contact_get_book since we don't have it.
+ (sync_one_model): card -> contact.
+ (real_add_address_cb): track various name changes.
+ (esn_get_key_fn): same.
+ (e_addressbook_create_ebook_table): same.
+ (folder_selected): same.
+ (select_entry_changed): same.
+ (e_select_names_new): same.
+
+ * gui/component/select-names/e-select-names-text-model.c
+ (dump_model): s/card/contact.
+ (e_select_names_text_model_insert_length): e-destination ->
+ eab-destination.
+ (e_select_names_text_model_delete): same.
+ (e_select_names_text_model_obj_count): same.
+ (nth_obj_index): same.
+ (e_select_names_text_model_activate_obj): ifdef this out since we
+ don't have e_contact_get_book in the new api.
+
+ * gui/component/select-names/e-select-names-table-model.c
+ (fill_in_info): convert to e_contact/eab_destination.
+
+ * gui/component/select-names/e-select-names-popup.c
+ (change_email_num_cb): e_destination -> eab_destination.
+ (populate_popup_contact): same, and ECard -> EContact. Also, the
+ email attribute is a GList, not an EList. lastly, rename from
+ populate_popup_card.
+ (populate_popup_nocontact): same, and rename from
+ populate_popup_nocard.
+ (e_select_names_populate_popup): same.
+
+ * gui/component/select-names/e-select-names-model.h: track changes
+ to e_destination, and rename the cardify methods to something mode
+ descriptive.
+
+ * gui/component/select-names/e-select-names-model.c
+ (e_select_names_model_duplicate): e_destination ->
+ eab_destination.
+ (e_select_names_model_get_textification): same.
+ (e_select_names_model_get_address_text): same.
+ (e_select_names_model_get_destination): same.
+ (e_select_names_model_export_destinationv): same.
+ (send_changed): same.
+ (e_select_names_model_import_destinationv): same.
+ (e_select_names_model_get_contact): same, and rename from
+ _get_card
+ (e_select_names_model_get_string): same.
+ (connect_destination): same.
+ (disconnect_destination): same.
+ (e_select_names_model_contains): same.
+ (e_select_names_model_insert): same.
+ (e_select_names_model_append): same.
+ (e_select_names_model_replace): same.
+ (e_select_names_model_delete): same.
+ (e_select_names_model_clean): same.
+ (delete_all_iter): same.
+ (e_select_names_model_overwrite_copy): same.
+ (e_select_names_model_merge): same.
+ (e_select_names_model_name_pos): same.
+ (e_select_names_model_text_pos): same.
+ (e_select_names_model_cardify): nuke.
+ (e_select_names_model_uncardify): nuke.
+ (e_select_names_model_cancel_cardify): nuke.
+ (e_select_names_model_load_all_contacts): rename _cardify_all to
+ this.
+ (e_select_names_model_cancel_all_contact_load): rename
+ _cancel_cardify to this.
+
+ * gui/component/select-names/e-select-names-manager.c
+ (focus_in_cb): cancel_cardify_all -> cancel_all_contact_load
+ (focus_out_cb): cardify_all -> load_all_contacts.
+ (completion_popup_cb): same.
+ (load_completion_books): no e_book_expand_uri anymore.
+ (e_select_names_manager_new): e_book_get_config_database ->
+ eab_get_config_database.
+ (e_select_names_manager_dispose): same.
+
+ * gui/component/select-names/e-select-names-completion.h: e-book.h
+ -> e-book-async.h
+
+ * gui/component/select-names/e-select-names-completion.c:
+ EContactify this.
+
+ * gui/component/select-names/e-select-names-bonobo.c
+ (entry_get_property_fn): ifdef out the SIMPLE_CARD_LIST getter,
+ and cardify_all -> load_all_contacts.
+
+ * gui/component/select-names/Evolution-Addressbook-SelectNames.idl:
+ nuke all the SimpleCard stuff. It's a horribly inefficient way to
+ deal with vcards, and since ebook is platform level now, we can
+ (and should) promote just linking to ebook to do this.
+
2003-09-19 Gilbert Fang <gilbert.fang@sun.com>
* addressbook/gui/component/addressbook-component.c (xfer_folder):
@@ -12,17 +902,715 @@
non-static versions of libraries: the static ones were only needed
for libtool 1.3.
+2003-09-07 Chris Toshok <toshok@ximian.com>
+
+ * backend/ebook/e-contact.c (e_contact_get_property): implement
+ getters for the address labels. they aren't really synthetic, but
+ we can't handle them as normal strings because they switch off the
+ TYPE parameter, not the attribute name (go go vcard.) Also add
+ getters for the structured address fields (ADR). Also fix a spot
+ where we were using strcmp instead of strcasecmp.
+ (e_contact_address_free): new function.
+
+ * backend/ebook/e-contact.h: Add EContactAddress structure, which
+ will probably go away once i merge in my cool spiffy address
+ editor. Add LABEL fields for the address labels, and add
+ prototype for e_contact_address_free.
+
+ * backend/ebook/e-vcard.h: add EVC_LABEL and EVC_X_BLOG_URL.
+
+ * backend/ebook/e-vcard.c (read_attribute_value): step to the next
+ character after unescaping \-escaped characters. keeps commas
+ from multiplying.
+
+ * gui/widgets/eab-contact-display.c (render_address): new function
+ (eab_contact_display_render): display email, delivery addresses,
+ and the blog url.
+
+2003-09-06 Chris Toshok <toshok@ximian.com>
+
+ * backend/ebook/e-contact.c (e_contact_set_property): implement
+ E_CONTACT_EMAIL_*.
+
+ * backend/pas/pas-backend-ldap.c (email_ber): EContact-ify and
+ re-enable this code.
+ (email_compare): same.
+ (email_populate): same.
+
+ * backend/pas/pas-backend-vcf.c (pas_backend_vcf_load_uri): use
+ XIMIAN_VCARD.
+
+ * backend/pas/pas-backend-file.c (pas_backend_file_load_uri): use
+ XIMIAN_VCARD, and don't fail if the directory already exists.
+ just try to create the db anyway.
+
+ * backend/pas/Makefile.am (libpas_a_SOURCES): add ximian-vcard.h
+
+ * backend/pas/ximian-vcard.h (XIMIAN_VCARD): put the initial vcard
+ here, so we can share 1 #define between file/vcf backends. Also,
+ add a jpeg photo.
+
+2003-09-06 Chris Toshok <toshok@ximian.com>
+
+ * gui/widgets/Makefile.am (libeminicard_la_SOURCES): add
+ eab-contact-display.[ch]
+
+ * gui/widgets/e-addressbook-view.c (eab_view_init): just init
+ everything to NULL.
+ (eab_view_new): move a bunch of stuff that was in eab_view_init
+ here. create a vpaned to hold the contact display, and create the
+ contact display.
+ (render_contact): render the selected contact to the
+ contact_display.
+ (selection_changed): add logic to display the currently selected
+ contact in the preview pane.
+ (create_table_view): add the table to the paned.
+ (create_treeview_view): add the scrolled to the paned.
+ (change_view_type): remove view->widget from the paned.
+
+ * gui/widgets/e-addressbook-view.h: switch from using a GtkTable
+ to a GtkEventBox - we don't need the table logic anymore.
+
+ * gui/widgets/e-addressbook-model.c (create_contact): indent
+ (eab_model_get_contact): same.
+
+ * gui/widgets/eab-contact-display.[ch]: new files - this
+ implements the preview pane.
+
+2003-09-06 Chris Toshok <toshok@ximian.com>
+
+ * backend/pas/pas-backend-ldap.c (BINARY_PROP): new type of
+ property, for specifying data coming back from the ldap server
+ with both data/length (like photos).
+ (photo_populate): set the contact's photo.
+ (build_contact_from_entry): add PROP_TYPE_BINARY handling.
+
+ * backend/ebook/e-vcard.c (EVCardEncoding): new enum for use with
+ the ENCODING attribute parameter. Right now, just "raw",
+ "base64", and "quoted-printable".
+ (struct _EVCardAttribute): add a "decoded_values" list of
+ GString*'s, as well as fields to hold encoding/encoding_set.
+ (e_vcard_class_init): call _evc_base64_init.
+ (e_vcard_attribute_add_value_decoded): based on what encoding the
+ attribute uses, add the value properly.
+ (e_vcard_attribute_add_param): if the parameter is ENCODING, work
+ our magic.
+ (e_vcard_attribute_get_values_decoded): spit out properly decoded
+ values depending on the decoding type.
+ (_evc_base64*): copy the camel base64 routines here.
+
+ * backend/ebook/e-vcard.h: add prototypes for
+ e_vcard_attribute_add_value_decoded and
+ e_vcard_attribute_get_values_decoded.
+
+ * backend/ebook/e-contact.c (e_contact_get_first_attr): move this
+ to above _set_property so we can make use of it there.
+ (e_contact_set_property): fix up the generic STRING field handler,
+ and implement E_CONTACT_PHOTO setting.
+ (e_contact_get_property): add handling for
+ E_CONTACT_PHOTO/E_CONTACT_PHOTO_URI.
+ (e_contact_photo_free): new function.
+
+ * backend/ebook/e-contact.h: add EContactPhoto struct, a prototype
+ for e_contact_photo_free, and two new EContactField elements (PHOTO and
+ PHOTO_URI).
+
+ * backend/ebook/tests/ebook/.cvsignore: ignore test-photo
+
+ * backend/ebook/tests/ebook/Makefile.am (noinst_PROGRAMS): add test-photo
+
+ * backend/ebook/tests/ebook/test-photo.c: test for the photo
+ set/get routines (which do base64 encoding/decoding).
+
+2003-09-02 Chris Toshok <toshok@ximian.com>
+
+ * gui/component/Makefile.am: comment out a buncha stuff just to
+ get this building.
+
+ * gui/component/select-names/e-select-names.c: #include
+ e-book-async.h
+ (search_result): EAddressbookModel -> EABModel.
+ (addressbook_model_set_uri): same, and don't use
+ e_book_expand_uri, as it's dead.
+ (esn_get_key_fn): EAddressbookModel -> EABModel.
+ (e_addressbook_create_ebook_table): same.
+ (status_message): same.
+
+ * gui/component/select-names/e-select-names.h (struct
+ _ESelectNames): EAddressbookModel -> EABModel.
+
+ * gui/component/addressbook-component.c (new_item_cb): ifdef out
+ for now.
+ (dnd_drop_book_open_cb): s/card/contact.
+ (destination_folder_handle_drop): ifdef out.
+ (request_quit): same.
+
+ * gui/component/addressbook.c: track api changes - e_addressbook_
+ -> eab_, and e_book_* becomes e_book_async_*.
+
+ * gui/component/addressbook.h: #include e-book-async.h
+
+ * gui/component/e-address-widget.c (query_results_cb):
+ e/EBookSimpleQueryStatus/EBookStatus
+
+ * gui/component/e-address-widget.h: s/ECard/EContact.
+
+ * gui/component/e-cardlist-model.[ch]: nuke.
+
+ * gui/component/e-address-popup.c: s/e-book.h/e-book-async.h
+
+ * gui/component/e-address-popup.h: s/ECard/EContact
+
+2003-09-02 Chris Toshok <toshok@ximian.com>
+
+ * backend/ebook/Makefile.am (libebook_la_SOURCES): remove
+ e-card.c,e-card.simple.c
+
+ * backend/ebook/tests/ebook/test-ebook.c: remove #include of
+ e-card-simple.h
+
+ * backend/ebook/tests/ebook/test-changes.c: remove #include of
+ e-card-simple.h
+
+ * backend/ebook/e-card.[ch], backend/ebook/e-card-simple.[ch]:
+ nuke.
+
+ * backend/ebook/e-book-util.h: s/card/contact.
+
+ * backend/ebook/e-book-util.c: ifdef out an #include.
+
+ * backend/ebook/e-book-async.[ch]: stop doing the stupid #define
+ renaming trick, and just rename all the prototypes from e_book_*
+ to e_book_async_*. Also, get rid of the *_vcard variants.
+
+2003-09-02 Chris Toshok <toshok@ximian.com>
+
+ * backend/pas/pas-backend-card-sexp.[ch]
+ (pas_backend_card_sexp_match_contact): rename
+ pas_backend_card_sexp_match_card, and it takes an EContact now.
+ Also, port this file to use EContact instead of ECard, and ifdef
+ out lots of stuff.
+
+ * backend/pas/pas-backend-ldap.c: convert this to use EContact
+ instead of ECard, and ifdef great swaths of code to make it
+ compile.
+
+ * backend/pas/pas-book.c (pas_book_respond_modify): convert this
+ from ECard to EContact.
+
+2003-09-02 Chris Toshok <toshok@ximian.com>
+
+ * gui/widgets/Makefile.am (libeminicard_la_SOURCES): remove all
+ the reflow/minicard stuff from the build.
+ (e-addressbook-marshal.[ch]): change the prefix on the marshallers to
+ eab_marshal.
+
+ * gui/widgets/e-addressbook-view.etspec: bring this more in line
+ with the field ids for EContact, and comment out a ton of them
+ that aren't there yet.
+
+ * gui/widgets/e-addressbook-view.[ch]: big renaming - rename
+ e_addressbook_view to eab_view, and EAddressbookView to EABView.
+
+ * gui/widgets/e-addressbook-util.c (eab_error_dialog): rename, and
+ change a few of the error strings s/Card/Contact.
+ (added_cb): E_BOOK_STATUS_SUCCESS => E_BOOK_ERROR_OK.
+ (modified_cb): same.
+ (e_addressbook_show_contact_editor): this takes an EContact now,
+ and track the change to the contact editor signal names.
+ (e_addressbook_show_contact_list_editor): this takes an EContact
+ now.
+ (view_contacts): rename view_cards to this, and ifdef the body.
+ (e_addressbook_show_multiple_contacts): rename
+ e_addressbook_show_multiple_cards to this, and s/card/contact.
+
+ * gui/widgets/e-addressbook-util.h: ifdef some things out, and
+ rename e_addressbook_error_dialog to eab_error_dialog.
+
+ * gui/widgets/e-addressbook-table-adapter.[ch]: big renaming -
+ rename e_addressbook_table_adapter to eab_table_adapter, and
+ EAddressbookTableAdapter to EABTableAdapter. Also, remove the
+ simple mapping - we can do ECardSimple-like operations directly on
+ the EContacts from the EABModel.
+
+ * gui/widgets/e-addressbook-model.[ch]: big renaming - rename
+ e_addressbook_model to eab_model, and EAddressbookModel to
+ EABModel. Also, convert everything from ECard to EContact.
+
+2003-09-01 Chris Toshok <toshok@ximian.com>
+
+ * backend/ebook/e-vcard.c (e_vcard_new_from_string): omg i'm dumb.
+ don't call e_vcard_new here since it just turns around and calls
+ e_vcard_new_from_string again.
+
+2003-09-01 Chris Toshok <toshok@ximian.com>
+
+ * backend/pas/pas-book-view.c (pas_book_view_notify_change): guard
+ pending adds foo.
+ (pas_book_view_notify_remove): same.
+ (pas_book_view_notify_add): same.
+ (pas_book_view_notify_complete): same.
+ (pas_book_view_construct): init mutex
+ (pas_book_view_dispose): free mutex
+
+ * backend/pas/pas-backend-ldap.c (func_exists): new function.
+ (send_pending_adds): remove
+ (ldap_search_handler): let the BookView stuff handle the pending
+ adds for us.
+ (ldap_search_dtor): remove pending adds stuff.
+ (pas_backend_ldap_search): same
+
+ * backend/pas/pas-backend-card-sexp.c (func_exists): new function.
+
+ * backend/ebook/tests/ebook/test-ebook.c (print_all_emails): use
+ an exists query.
+
+2003-08-31 Chris Toshok <toshok@ximian.com>
+
+ * backend/ebook/e-book-query.c (func_and, func_or, func_not)
+ (func_contains, func_is, func_beginswith, func_endswith)
+ (e_book_query_from_string): adapt the pas ldap backend sexp
+ parsing code to this, build up an EBookQuery that represents the
+ sexp.
+
+ * backend/ebook/e-contact.h (e_contact_field_id): add prototype.
+
+ * backend/ebook/e-contact.c (e_contact_field_id): new function.
+
+ * backend/ebook/Makefile.am (libebook_la_SOURCES): add
+ e-book-util.c back into the build, if only for the config_database
+ thingy.
+
+2003-08-31 Chris Toshok <toshok@ximian.com>
+
+ * backend/ebook/e-contact.c (e_contact_duplicate): new function.
+
+ * backend/ebook/e-contact.h: add prototype for
+ e_contact_duplicate.
+
+ * backend/ebook/e-book-util.[ch]: massive ifdeffing. most of this
+ is either gone or will be unnecessary soon.
+
+ * backend/ebook/e-book-query.c (e_book_query_from_string): hack
+ this so it'll at least generate a query.
+
+ * backend/ebook/e-book-listener.c
+ (impl_BookListener_respond_get_view): add some debug spew and
+ remove a c&p'ed comment.
+
+ * backend/ebook/e-book-async.h: add prototype for
+ e_book_async_unload_uri.
+
+ * backend/ebook/e-book-async.c (e_book_async_unload_uri): new
+ function.
+
+ * backend/pas/pas-book-view.c (pas_book_view_construct): switch to
+ CORBA_Object_duplicate, ala pas_book.
+
+ * backend/pas/pas-backend-sync.c (pas_backend_sync_class_init):
+ fix typo and the build.
+
+2003-08-29 Chris Toshok <toshok@ximian.com>
+
+ * backend/pas/pas-backend-ldap.c (ldap_error_to_response):
+ s/card/contact.
+ (pas_backend_ldap_process_create_contact): same.
+ (remove_contact_handler): same.
+ (remove_contact_dtor): same.
+ (pas_backend_ldap_process_remove_contacts): same.
+ (modify_contact_modify_handler): same.
+ (modify_contact_dtor): same.
+ (pas_backend_ldap_process_modify_contact): same.
+ (get_contact_handler): same.
+ (get_contact_dtor): same.
+ (pas_backend_ldap_process_get_contact): same.
+ (pas_backend_ldap_class_init): same.
+
+ * backend/pas/pas-backend-summary.c
+ (pas_backend_summary_add_contact): s/card/contact, and mostly
+ switch from ECard{Simple} to EContact.
+ (pas_backend_summary_get_summary_vcard): same.
+ (pas_backend_summary_remove_contact): s/card/contact
+
+ * backend/pas/pas-backend-summary.h: s/card/contact.
+
+ * backend/pas/pas-backend-file.c (build_summary): fix g_warning,
+ and return immediately if the db->cursor call fails.
+ (pas_backend_file_create_contact): s/card/contact
+ (pas_backend_file_remove_contacts): same.
+ (pas_backend_file_modify_contact): same.
+ (pas_backend_file_get_contact): same.
+ (pas_backend_file_get_contact_list): same.
+ (pas_backend_file_class_init): same.
+
+ * backend/pas/pas-backend-vcf.c
+ (pas_backend_vcf_process_create_contact): s/card/contact.
+ (pas_backend_vcf_process_remove_contacts): same.
+ (pas_backend_vcf_process_modify_contact): same.
+ (pas_backend_vcf_process_get_contact): same.
+ (pas_backend_vcf_process_get_contact_list): same.
+ (pas_backend_vcf_class_init): same.
+
+ * backend/pas/pas-backend-sync.c (pas_backend_sync_create_contact): s/card/contact.
+ (pas_backend_sync_remove_contacts): same.
+ (pas_backend_sync_modify_contact): same.
+ (pas_backend_sync_get_contact): same.
+ (pas_backend_sync_get_contact_list): same.
+ (_pas_backend_create_contact): same.
+ (_pas_backend_remove_contacts): same.
+ (_pas_backend_modify_contact): same.
+ (_pas_backend_get_contact): same.
+ (_pas_backend_get_contact_list): same.
+ (pas_backend_sync_class_init): same.
+
+ * backend/pas/pas-backend-sync.h: s/card/contact.
+
+ * backend/pas/pas-backend.c (pas_backend_create_contact): s/card/contact.
+ (pas_backend_remove_contacts): same.
+ (pas_backend_modify_contact): same.
+ (pas_backend_get_contact): same.
+ (pas_backend_get_contact_list): same.
+ (pas_backend_change_add_new): same.
+ (pas_backend_change_modify_new): same.
+ (pas_backend_change_delete_new): same.
+
+ * backend/pas/pas-backend.h: s/card/contact.
+
+ * backend/pas/pas-book-view.c (send_pending_adds): s/card/contact
+ (pas_book_view_notify_change): same.
+ (pas_book_view_notify_remove): same.
+
+ * backend/pas/pas-book.c
+ (impl_GNOME_Evolution_Addressbook_Book_getContact): s/card/contact
+ (impl_GNOME_Evolution_Addressbook_Book_getContactList): same.
+ (impl_GNOME_Evolution_Addressbook_Book_addContact): same.
+ (impl_GNOME_Evolution_Addressbook_Book_removeContacts): same.
+ (impl_GNOME_Evolution_Addressbook_Book_modifyContact): same.
+ (pas_book_respond_create): same.
+ (pas_book_respond_remove_contacts): same.
+ (pas_book_respond_modify): same.
+ (pas_book_respond_get_contact): same.
+ (pas_book_respond_get_contact_list): same.
+ (pas_book_respond_get_changes): same.
+ (pas_book_class_init): same.
+
+ * backend/pas/pas-book.h: s/card/contact
+
+ * backend/ebook/tests/vcard/dump-vcard.c: #include
+ "ebook/e-vcard.h"
+
+ * backend/ebook/tests/vcard/Makefile.am (TEST_LIBS): use
+ top_builddir.
+ (CFLAGS): same.
+
+ * backend/ebook/tests/ebook/Makefile.am (TEST_LIBS): use
+ top_builddir.
+ (CFLAGS): use srcdir
+
+ * backend/ebook/test-card.c, backend/ebook/test-client-list.c,
+ backend/ebook/test-client.c, backend/ebook/test-ebook.c: remove.
+
+ * backend/ebook/e-card-cursor.[ch]: remove.
+
+ * backend/ebook/e-card-pairs.h: remove.
+
+ * backend/ebook/e-book.c (e_book_add_contact): s/Card/Contact.
+ (e_book_commit_contact): same
+ (e_book_get_contact): same.
+ (e_book_remove_contacts): same.
+ (e_book_get_contacts): same.
+ (e_book_handle_response): same.
+
+ * backend/ebook/e-book-view.c (e_book_view_do_added_event):
+ s/card/contact
+ (e_book_view_do_modified_event): same.
+ (e_book_view_do_removed_event): same.
+ (e_book_view_handle_response): same.
+ (e_book_view_class_init): same.
+
+ * backend/ebook/e-book-view.h: s/card/contact and pad the class
+ struct.
+
+ * backend/ebook/e-book-view-listener.c
+ (e_book_view_listener_queue_response): s/Card/Contact.
+ (e_book_view_listener_queue_status_event): no need to assign
+ things to NULL, we g_new0.
+ (e_book_view_listener_queue_idlist_event): s/Card/Contact, and no
+ need to assign things to NULL, we g_new0.
+ (e_book_view_listener_queue_sequence_event): same.
+ (e_book_view_listener_queue_message_event): same.
+ (impl_BookViewListener_notify_contacts_added): s/Card/Contact.
+ (impl_BookViewListener_notify_contacts_removed): same.
+ (impl_BookViewListener_notify_contacts_changed): same.
+ (e_book_view_listener_class_init): same.
+
+ * backend/ebook/e-book-view-listener.h: s/Card/Contact
+
+ * backend/ebook/e-book-types.h: s/CARD/CONTACT
+
+ * backend/ebook/e-book-listener.c
+ (e_book_listener_convert_status): s/Card/Contact
+ (impl_BookListener_respond_create_contact): same.
+ (impl_BookListener_respond_remove_contacts): same.
+ (impl_BookListener_respond_modify_contact): same.
+ (impl_BookListener_respond_get_contact): same.
+ (impl_BookListener_respond_get_contact_list): same.
+ (impl_BookListener_respond_get_changes): same.
+ (e_book_listener_class_init): same.
+
+ * backend/ebook/e-book-listener.h: pad the class struct, and
+ s/Card/Contact.
+
+ * backend/ebook/e-book-async.c (_load_uri_handler): GError
+ changes.
+ (_get_fields_handler): same.
+ (_get_methods_handler): same.
+ (_auth_user_handler): same.
+ (_get_card_handler): same.
+ (_remove_cards_handler): same.
+ (_add_vcard_handler): same.
+ (_commit_vcard_handler): same.
+ (_get_book_view_handler): same.
+ (e_book_async_get_book_view): use an EBookQuery instead of a char*.
+
+ * backend/ebook/Makefile.am: remove the test handling.
+ (SUBDIRS): set to ". tests"
+ (libebook_la_SOURCES): add e-book-async.c
+
+ * backend/idl/addressbook.idl: possibly gratuitous renaming, but i
+ was sick of seeing "Card" being used everywhere. "Contact" is the
+ new "Card".
+
+2003-08-28 Chris Toshok <toshok@ximian.com>
+
+ * backend/ebook/e-book.c (e_book_op_free): rename from
+ e_book_free_op.
+ (e_book_op_remove): rename from e_book_remove_op.
+ (e_book_clear_op): new function, remove the op, unlock its mutex,
+ and free it.
+ (e_book_add_contact): use e_book_clear_op.
+ (e_book_commit_contact): same.
+ (e_book_get_supported_fields): same.
+ (e_book_get_supported_auth_methods): same.
+ (e_book_authenticate_user): same.
+ (e_book_get_contact): same.
+ (e_book_remove_contacts): same.
+ (e_book_get_book_view): same.
+ (e_book_get_contacts): same.
+ (e_book_get_changes): same.
+ (e_book_load_uri): same.
+ (e_book_remove): new function.
+ (e_book_response_remove): new function.
+ (e_book_handle_response): add handling for RemoveBookResponse.
+ (e_book_load_local_addressbook): pass TRUE for e_book_load_uri
+ @only_if_exists.
+
+ * backend/ebook/e-book.h: add @only_if_exists arg to
+ e_book_load_uri so we can support folder creation at load_uri
+ time, and add prototype for e_book_remove.
+
+ * backend/ebook/e-book-types.h: add an "id" slot in EBookChange.
+
+ * backend/ebook/e-book-listener.c
+ (impl_BookListener_respond_get_changes): handle union in idl.
+ (impl_BookListener_respond_open_book): remove unnecessary
+ exception check.
+ (impl_BookListener_respond_remove_book): new function.
+ (impl_BookListener_respond_get_supported_fields): rename this from
+ _response_.
+ (impl_BookListener_respond_get_supported_auth_methods): same.
+ (e_book_listener_class_init): add _remove_book and track change to
+ get_supported_fields/get_supported_auth_methods names.
+
+ * backend/ebook/e-book-listener.h: add RemoveBookResponse to
+ EBookListenerOperation enum.
+
+ * backend/idl/addressbook.idl: make BookChangeItem a union that
+ switches over BookChangeType.
+
+ * backend/pas/pas-backend.c (pas_backend_change_add_new): new
+ function, create a BookChangeItem representing the addition of a
+ contact.
+ (pas_backend_change_modify_new): same, but for modifications.
+ (pas_backend_change_delete_new): same, but for deletions.
+
+ * backend/pas/pas-backend.h: add prototypes for
+ pas_backend_change_{add,modify,delete}_new
+
+ * backend/pas/pas-backend-file.c (pas_backend_file_changes): nuke.
+ (do_create): fix memory corruption.
+ (pas_backend_file_get_changes): copy the body of
+ pas_backend_file_changes here, and rework so that it's synchronous
+ and return a list instead of the book view hack.
+ (pas_backend_file_load_uri): mkdir the directory (we need a mkdir
+ -p here).
+ (select_changes): new function, scandir helper.
+ (pas_backend_file_remove): NULL out bf->priv->summary to quiet
+ valgrind, and call scandir to accumulate the .changes.db files
+ then unlink them.
+
+ * backend/pas/pas-book.c (pas_book_respond_remove): new function.
+ (pas_book_respond_get_supported_fields): unifdef this, and make it
+ use a glist.
+ (pas_book_respond_get_supported_auth_methods): same.
+ (pas_book_respond_get_changes): this code is kinda gross... lots
+ of copying going on, there's got to be a better way. but it
+ works.
+
+2003-08-26 Chris Toshok <toshok@ximian.com>
+
+ * backend/idl/addressbook.idl: add oneway void Book::remove() and
+ oneway void notifyBookRemoved()
+
+2003-08-26 Chris Toshok <toshok@ximian.com>
+
+ * backend/pas/pas-backend.c (pas_backend_remove): new function.
+ (pas_backend_add_book_view): new function.
+ (pas_backend_add_client): move the "real_add_client" code here.
+ (pas_backend_remove_client): move the "real_remove_client" code
+ here.
+ (pas_backend_class_init): remove assignments of add_client and
+ remove_client vtable entries.
+ (pas_backend_is_removed): new function.
+ (pas_backend_set_is_removed): new function.
+ (pas_backend_init): init clients_mutex and views_mutex.
+
+ * backend/pas/pas-backend.h: remove the vtable entries for
+ add/remove_client, since these are fully handled in PASBackend.
+ Add prototypes for
+ pas_backend_is_removed/pas_backend_add_book_view/pas_backend_set_is_removed.
+
+ * backend/pas/pas-book.c
+ (impl_GNOME_Evolution_Addressbook_Book_remove): new function.
+ (impl_GNOME_Evolution_Addressbook_Book_getBookView): clean things
+ up a bit, and don't use pas_backend_get_book_views as it can't
+ lock the list of views.
+ (pas_book_respond_get_supported_auth_methods): remove the extra
+ unnecessary arg from the corba call.
+ (pas_book_respond_get_changes): same.
+ (pas_book_class_init): fill in epv "remove" slot.
+
+ * backend/pas/pas-book.h: rename pas_book_respond_remove to
+ pas_book_respond_remove_cards, and add a new
+ pas_book_respond_remove for use with removing books.
+
+ * backend/pas/pas-backend-sync.c (pas_backend_sync_remove): new
+ function.
+ (_pas_backend_remove): new function.
+ (pas_backend_sync_class_init): fill in the "remove" vtable entry.
+ (_pas_backend_remove_cards): track change to
+ pas_book_respond_remove_cards (pas_book_respond_remove is used for
+ removing the book, not the cards.)
+
+ * backend/pas/pas-backend-sync.h: add pas_backend_sync_remove
+ prototype and add remove_sync virtual function.
+
+2003-08-26 Chris Toshok <toshok@ximian.com>
+
+ * backend/pas/pas-backend-file.c (pas_backend_file_create_card,
+ pas_backend_file_remove_cards, pas_backend_file_modify_card,
+ pas_backend_file_get_vcard, pas_backend_file_get_card_list,
+ pas_backend_file_start_book_view, pas_backend_file_get_changes,
+ pas_backend_file_authenticate_user,
+ pas_backend_file_get_supported_fields): rename from
+ pas_backend_file_process_*
+ (pas_backend_file_load_uri): save off the dirname/summary
+ filename.
+ (pas_backend_file_remove): new function, unlink all the files we
+ know about.
+ (pas_backend_file_class_init): track changes to functions, and add
+ pas_backend_file_remove.
+
2003-08-26 JP Rosevear <jpr@ximian.com>
- * conduit/address-conduit.c (ecard_from_remote_record): duplicate
+ * conduit/address-conduit.c (ecard_from_remote_record): duplicate
the extra address lines
+2003-08-22 Chris Toshok <toshok@ximian.com>
+
+ * backend/pas/pas-book.[ch]: switch from using the PASRequest
+ union and a central PASBackend dispatch function. just call the
+ pas_backend methods directly and expand the args out.
+
+ * backend/pas/pas-backend.[ch]: same.
+
+ * backend/pas/pas-backend-sync.[ch]: same.
+
+ * backend/pas/pas-backend-vcf.c, backend/pas/pas-backend-file.c,
+ backend/pas/pas-backend-ldap.c: same, and get these all compiling
+ against the rest of the current pas/ebook code.
+
+2003-08-21 Chris Toshok <toshok@ximian.com>
+
+ * backend/ebook/test-ebook.c: track GError case.
+
+ * backend/ebook/e-book.[ch]: GError-ify the api, and clean up some
+ cases where we weren't removing the current op.
+
+ * backend/ebook/e-book-view-listener.c
+ (e_book_view_listener_convert_status): track change from
+ E_BOOK_VIEW_STATUS_* to E_BOOK_VIEW_ERROR_*.
+
+ * backend/ebook/e-book-types.h: track change from E_BOOK_STATUS_*
+ to E_BOOK_ERROR_*, and some E_BOOK_VIEW_STATUS_* to
+ E_BOOK_VIEW_ERROR_*.
+
+ * backend/ebook/e-book-listener.c
+ (e_book_listener_convert_status): track change from
+ E_BOOK_STATUS_* to E_BOOK_ERROR_*.
+
+ * backend/ebook/e-book-query.c (e_book_query_any_field_contains):
+ new function.
+ (e_book_query_unref): handle the any_field_contains case.
+ (e_book_query_to_string): same.
+
+ * backend/ebook/e-book-query.h: add prototype for
+ e_book_query_any_field_contains.
+
+ * backend/ebook/e-card.c (e_card_load_uri): ifdef this out for
+ now.
+
+ * backend/ebook/e-contact.[ch] (e_contact_get_const): new
+ function/prototype.
+
2003-08-20 Gilbert Fang <gilbert.fang@sun.com>
- * gui/widgets/e-addressbook-util.c
+ * gui/widgets/e-addressbook-util.c
(e_addressbook_send_card_list): use memcpy to assign
CORBA_char_sequence instead of strcpy. (#46706)
+2003-08-18 Ettore Perazzoli <ettore@ximian.com>
+
+ * gui/component/component-factory.c: Update OAFIIDs.
+
+ * gui/widgets/e-addressbook-util.c (e_addressbook_transfer_cards):
+ Removed extern declaration for global_shell_client [yuck].
+ (e_addressbook_transfer_cards): #if 0 the invocation for
+ evolution_shell_client_user_select_folder(), we need to
+ reimplement this component-side now.
+
+ * gui/component/component-factory.c (factory): Call
+ addressbook_component_peek() here instead of
+ addressbook_component_init() [since the latter is no more].
+
+ * gui/component/addressbook.c (set_status_message): Don't create
+ the activity client for now.
+
+ * gui/component/addressbook-config.c: Removed member shell from
+ struct AddressbookDialog.
+ (ldap_dialog_new): Do not take a shell arg anymore.
+ (ldap_config_control_new): Likewise.
+ (addressbook_config_control_new): No need to get the global shell
+ pointer here anymore.
+
+ * gui/component/addressbook-component.c: Rewritten to support the
+ new ::Component interface.
+ * gui/component/addressbook-component.h: Likewise.
+
+ * gui/component/GNOME_Evolution_Addressbook.server.in.in: Version
+ factory's OAFIID. Remove ShellComponent server, add Component
+ server.
+
2003-08-12 Rodrigo Moya <rodrigo@ximian.com>
* backend/ebook/e-book.c (e_book_dispose): unref the
@@ -70,6 +1658,487 @@
* printins/e-contact-print-style-editor.c
(e_contact_print_stule_editor_destroy): Chain. Prevent double unref.
+2003-08-07 Chris Toshok <toshok@ximian.com>
+
+ * backend/ebook/e-vcard.c (e_vcard_to_string_vcard_21): new,
+ unimplemented, function.
+ (e_vcard_to_string_vcard_30): move the 3.0 vcard export code here.
+ (e_vcard_to_string): call e_vcard_to_string_vcard_21 or
+ e_vcard_to_string_vcard_30 based on @format.
+ (e_vcard_attribute_remove_values): new function.
+
+ * backend/ebook/e-vcard.h: add @format to e_vcard_to_string, and
+ add prototype for e_vcard_attribute_remove_values. also, add
+ prototype for e_vcard_decode_b_encoding.
+
+2003-08-07 Chris Toshok <toshok@ximian.com>
+
+ * backend/ebook/e-book-listener.c
+ (impl_BookListener_respond_open_book): remove the book arg.
+
+ * backend/ebook/e-book-listener.h (struct _EBookListenerResponse):
+ remove the corba book.
+
+ * backend/ebook/e-book-async.c (_get_book_view_dtor): free the
+ query string.
+ (e_book_async_get_book_view): dup the query string.
+
+ * backend/ebook/e-book.h: change e_book_get_book_view and
+ e_book_get_contacts to take a const char * query string instead of
+ an EBookQuery.
+
+ * backend/ebook/e-book.c (e_book_add_contact): pass
+ EVC_FORMAT_VCARD_30 to e_vcard_to_string.
+ (e_book_commit_contact): same.
+ (e_book_get_book_view): take a const char* query string instead of
+ an EBookQuery.
+ (e_book_get_contacts): same.
+ (e_book_response_open): track change - the Book is no longer
+ communicated back here.
+ (listener_cb): nuke.
+ (e_book_handle_response): track change to e_book_response_open.
+ (e_book_load_uri): rework this from using BookFactory::openBook to
+ BookFactory::getBook + Book::open.
+ (e_book_get_uri): new function, reimplement from old api.
+ (e_book_get_static_capabilities): same.
+ (e_book_check_static_capability): same.
+ (startup_mainloop): new function, run bonobo_main.
+ (e_book_activate): start up a thread with startup_mainloop as the
+ start func.
+ (e_book_new): call e_book_activate.
+
+ * backend/idl/addressbook.idl: Add Book::open, remove the Book
+ from notifyBookOpened's args, and change BookFactory::openBook to
+ BookFactory::getBook.
+
+ * backend/pas/pas-backend-file.c (pas_backend_file_load_uri): add
+ only_if_exists - stop using the "create-initial" special file.
+
+ * backend/pas/pas-backend-vcf.c (pas_backend_vcf_load_uri): add
+ only_if_exists - stop using the "create-initial" special file.
+
+ * backend/pas/pas-backend.c (pas_backend_load_uri): add
+ @only_if_exists, and pass it along to the virtual method.
+ (pas_backend_open): new function, lock the mutex so only one
+ PASBook can actually call load_uri. call load_uri with
+ pas_book_get_uri, and req->only_if_exists.
+ (pas_backend_handle_request): rename process_client_request to
+ this, and expose it publicly. Also add a case statement for
+ "Open".
+ (real_add_client): gut this function, we don't need to create the
+ book anymore, just add the client to the list and do the weak
+ ref/ORBit small stuff.
+ (pas_backend_add_client): track change to signature - BookListener
+ -> PASBook.
+ (pas_backend_init): init open_mutex.
+ (pas_backend_dispose): free open_mutex.
+
+ * backend/pas/pas-backend.h (PASBackendClass): add @only_if_exists
+ to the load_uri virtual method, and change the add_client virtual
+ method to take a PASBook instead of a BookListener. add the same
+ args to _load_uri and add_client. Also, add prototypes for
+ pas_backend_handle_request and pas_backend_open.
+
+ * backend/pas/pas-book-factory.c
+ (_pas_book_factory_send_open_book_response): nuke.
+ (pas_book_factory_launch_backend): just return NULL, don't call
+ _pas_book_factory_send_open_book_response, in the error case.
+ (start_backend): nuke
+ (impl_GNOME_Evolution_Addressbook_BookFactory_getBook): rename
+ _openBook to this. clean up the code a bit. Create the PASBook
+ here, and always track change to pas_backend_add_client's type (we
+ pass the book now, not the listener).
+ (pas_book_factory_class_init): openBook -> getBook.
+
+ * backend/pas/pas-book.c
+ (impl_GNOME_Evolution_Addressbook_Book_open): new function, call
+ pas_backend_open.
+ (impl_GNOME_Evolution_Addressbook_Book_getVCard): get rid of the
+ signal crap, just call pas_backend_handle_request.
+ (impl_GNOME_Evolution_Addressbook_Book_getCardList): same.
+ (impl_GNOME_Evolution_Addressbook_Book_authenticateUser): same.
+ (impl_GNOME_Evolution_Addressbook_Book_addCard): same.
+ (impl_GNOME_Evolution_Addressbook_Book_removeCards): same.
+ (impl_GNOME_Evolution_Addressbook_Book_modifyCard): same.
+ (impl_GNOME_Evolution_Addressbook_Book_getChanges): same.
+ (impl_GNOME_Evolution_Addressbook_Book_getSupportedFields): same.
+ (impl_GNOME_Evolution_Addressbook_Book_getSupportedAuthMethods):
+ same.
+ (impl_GNOME_Evolution_Addressbook_Book_cancelOperation): same.
+ (pas_book_get_backend): aggregate some g_return_if_fail's.
+ (pas_book_get_listener): new function.
+ (pas_book_get_uri): new function.
+ (pas_book_respond_open): just call BookListener::notifyBookOpened.
+ (pas_book_construct): add @uri, and g_strdup it.
+ (pas_book_new): add @uri, and pass it to pas_book_construct.
+ (pas_book_class_init): remove the "request" signal stuff, and fill
+ in epv->open.
+
+ * backend/pas/pas-book.h: add PASOpenRequest struct/enum entry.
+ Also, add @uri to the pas_book_new args, and add a prototype for
+ pas_book_get_uri. Also, remove the "request" signal.
+
+2003-08-07 Chris Toshok <toshok@ximian.com>
+
+ * backend/pas/pas-book-factory.c
+ (pas_book_factory_get_n_backends): lock map_mutex around hash
+ table work.
+ (pas_book_factory_dump_active_backends): same.
+ (backend_last_client_gone_cb): same.
+ (_pas_book_factory_send_open_book_response): track CallStatus idl
+ change.
+ (start_backend): simplify this greatly, since the factory is
+ tagged with HINT_PER_THREAD.
+ (impl_GNOME_Evolution_Addressbook_BookFactory_openBook): lock
+ around hash table.
+ (pas_book_factory_init): initialize map_mutex.
+ (pas_book_factory_dispose): free map_mutex.
+
+2003-08-06 Chris Toshok <toshok@ximian.com>
+
+ * backend/pas/pas-backend-file.c
+ (pas_backend_file_book_view_copy): nuke.
+ (pas_backend_file_book_view_free): same.
+ (view_destroy): same.
+ (pas_backend_file_changes): #if notyet
+ (do_create): e-card -> e-contact.
+ (pas_backend_file_process_create_card): remove view handling from
+ here.
+ (pas_backend_file_process_remove_cards): same.
+ (pas_backend_file_process_modify_card): convert to e-contact, and
+ remove view handling.
+ (pas_backend_file_get_book_view): nuke.
+ (pas_backend_file_process_get_supported_fields): e-card-simple ->
+ e-contact.
+ (pas_backend_file_upgrade_db): e-card -> e-contact.
+ (pas_backend_file_cancel_operation): implement, just return
+ CouldNotCancel.
+ (pas_backend_file_class_init): assign cancel_operation, and remove
+ get_book_view assignment.
+ (pas_backend_file_init): remove book_views assignment.
+
+2003-08-06 Chris Toshok <toshok@ximian.com>
+
+ * backend/pas/pas-backend-vcf.c (pas_backend_vcf_book_view_copy):
+ nuke.
+ (pas_backend_vcf_book_view_free): same.
+ (view_destroy): same.
+ (insert_contact): new function, insert the contact into our hash
+ table.
+ (load_file): reimplement without the e_card stuff.
+ (foreach_build_list): e_card -> e_contact.
+ (save_file): mostly reimplement in terms of e-contact. more error
+ case work needs doing.
+ (do_create): e-card -> e-contact.
+ (pas_backend_vcf_process_create_card): remove the view handling
+ from here.
+ (pas_backend_vcf_process_remove_cards): implement this, just
+ remove it from the hash table and set ourselves to dirty.
+ (pas_backend_vcf_process_modify_card): remove the view handling
+ from here.
+ (pas_backend_vcf_process_get_book_view): nuke.
+ (pas_backend_vcf_process_get_supported_fields): reimplement in
+ terms of e-contact.
+ (INITIAL_VCARD): add in a FN attribute, and remove the quoted
+ printable encoding.
+ (pas_backend_vcf_cancel_operation): implement, just always return
+ CouldNotCancel.
+ (pas_backend_vcf_class_init): fill in cancel_operation, and remove
+ get_book_view_sync.
+ (pas_backend_vcf_init): remove book_views handling.
+
+ * backend/pas/pas-backend-vcf.h: update copyright.
+
+2003-08-06 Chris Toshok <toshok@ximian.com>
+
+ * backend/pas/pas-backend-sync.c (pas_backend_sync_remove_cards):
+ add out param @ids, so we can call pas_book_respond_remove
+ properly.
+ (_pas_backend_remove_cards): the other half of the change - pass
+ the ids on to pas_book_response_remove.
+ (pas_backend_sync_modify_card): add out param @old_vcard so we can
+ call pas_book_respond_modify properly.
+ (_pas_backend_modify_card): the other half of the change, pass the
+ old_vcard on to pas_book_respond_modify.
+ (pas_backend_sync_get_book_view): nuke.
+ (pas_backend_sync_get_changes): track change (book view -> GList)
+ (_pas_backend_is_threaded): nuke.
+ (_pas_backend_create_card): indent.
+ (_pas_backend_remove_cards): same.
+ (_pas_backend_modify_card): same.
+ (_pas_backend_get_card_list): same.
+ (_pas_backend_get_changes): same.
+ (_pas_backend_authenticate_user): same.
+ (_pas_backend_get_supported_fields): same.
+ (_pas_backend_get_supported_auth_methods): same.
+ (_pas_backend_get_book_view): nuke.
+ (pas_backend_sync_class_init): remove assignment to is_threaded
+ and get_book_view.
+
+ * backend/pas/pas-backend-sync.h: add out-params @ids to
+ remove_cards_sync, @old_vcard to modify_card_sync.
+ get_changes_sync's out-param is a GList instead of a book view,
+ and remove get_book_view_sync.
+
+ * backend/pas/pas-backend.c (pas_backend_get_book_view): nuke.
+ (pas_backend_is_threaded): nuke.
+ (pas_backend_start_threaded): nuke.
+ (pas_backend_init): initialize priv->views.
+ (pas_backend_dispose): free priv->views.
+ (pas_backend_get_book_views): new function, return priv->views.
+
+ * backend/pas/pas-backend.h: remove the get_book_view virtual
+ method, and the pas_backend_get_book_view prototype. Also, track
+ the CallStatus change, and add a cancel_operation virtual method
+ and prototype, and add pas_backend_get_book_views function, so the
+ PASBook's can get ahold of the list.
+
+ * backend/pas/pas-book-view.h: track collapsing of
+ Addressbook::BookListenerCallStatus and
+ Addressbook::BookView::CallStatus enums into
+ Addressbook::CallStatus.
+
+ * backend/pas/pas-book-view.c: same.
+
+ * backend/pas/pas-card-cursor.[ch]: nuke
+
+ * backend/pas/pas-book.c: track collapsing of
+ Addressbook::BookListenerCallStatus and
+ Addressbook::BookView::CallStatus enums into
+ Addressbook::CallStatus.
+ (impl_GNOME_Evolution_Addressbook_Book_getBookView): implement
+ this all here, instead of farming it out to the backends.
+ (impl_GNOME_Evolution_Addressbook_Book_getChanges): track change
+ to signature. this is no longer a book view, it'll return an
+ actual list.
+ (impl_GNOME_Evolution_Addressbook_Book_cancelOperation): new
+ function, implement.
+ (pas_book_respond_create): iterate over the views, notifying them
+ if the new card matches their query.
+ (pas_book_respond_remove): iterate over the views, telling them to
+ delete the card matching the id.
+ (pas_book_respond_modify): iterate over the views, notifying them
+ if they need to change/add/remove that card.
+ (view_destroy): move this here from the backends.
+ (pas_book_respond_get_book_view): weak-ref the book view.
+ (pas_book_new): remove the is_threaded switch on POA hints, and
+ always use PER_REQUEST.
+ (pas_book_class_init): fill in cancelOperation.
+
+ * backend/pas/pas-book.h: track collapsing of
+ Addressbook::BookListenerCallStatus and
+ Addressbook::BookView::CallStatus enums into
+ Addressbook::CallStatus.
+
+2003-08-01 Chris Toshok <toshok@ximian.com>
+
+ * backend/ebook/e-book-async.c: mostly finished.
+
+2003-08-01 Chris Toshok <toshok@ximian.com>
+
+ * backend/ebook/e-book-async.[ch]: new files, create async methods
+ similar to the old ebook api that use GThread/GAsyncQueue to
+ simulate the old async behavior.
+
+2003-07-29 Chris Toshok <toshok@ximian.com>
+
+ * backend/idl/addressbook.idl: collapse
+ Addressbook::BookListenerCallStatus and
+ Addressbook::BookView::CallStatus enums into
+ Addressbook::CallStatus.
+
+2003-07-29 Chris Toshok <toshok@ximian.com>
+
+ * backend/ebook/e-book-types.h: add EBookChangeType/EBookChange.
+
+2003-07-29 Chris Toshok <toshok@ximian.com>
+
+ * backend/ebook/e-book-view-listener.c: track collapsing of
+ Addressbook::BookListenerCallStatus and
+ Addressbook::BookView::CallStatus enums into
+ Addressbook::CallStatus.
+
+ * backend/ebook/e-book-listener.c track collapsing of
+ Addressbook::BookListenerCallStatus and
+ Addressbook::BookView::CallStatus enums into
+ Addressbook::CallStatus.
+ (response_free): nuked
+ (e_book_listener_check_queue): nuked
+ (e_book_listener_queue_response): nuked
+ (e_book_listener_queue_progress): nuked
+ (e_book_listener_queue_get_view_response): nuked
+ (e_book_listener_queue_get_changes_response): nuked
+ (e_book_listener_queue_writable_status): nuked
+ (e_book_listener_queue_authentication_response): nuked
+ (e_book_listener_queue_get_supported_fields_response): nuked
+ (e_book_listener_queue_get_supported_auth_methods_response): nuked
+ (e_book_listener_dispose): nuked
+
+ * backend/ebook/e-book-listener.h: remove prototypes for
+ check_pending and pop_response.
+
+ * backend/ebook/e-book.c (e_book_get_changes): new function.
+ implement this as more of a getCardList type function, instead of
+ getBookView.
+ (e_book_response_get_changes): new function.
+ (e_book_free_change_list): new function.
+
+ * backend/ebook/e-book.h: add prototype for
+ e_book_free_change_list.
+
+2003-07-23 Chris Toshok <toshok@ximian.com>
+
+ * backend/ebook/e-book.c (e_book_get_book_view): new function,
+ implement this.
+ (e_book_response_get_book_view): same.
+ (e_book_get_contacts): remove the op so we don't see BUSY after
+ this request.
+ (e_book_handle_response): unifdef a few things.
+ (e_book_unload_uri): fix the assertion about URI_NOT_LOADED, and
+ unifdef some code.
+ (e_book_dispose): fix a typo.
+
+ * backend/ebook/e-book-view.c (e_book_view_handle_response):
+ rename _check_listener_queue to this. we don't need to pop the
+ response either, it's passed as an arg.
+ (e_book_view_construct): "response_queued" -> "response"
+ (e_book_view_start): new function, call BookView.start.
+ (e_book_view_dispose): track the signal id change.
+
+ * backend/ebook/e-book-view.h: add prototype for
+ e_book_view_start.
+
+ * backend/ebook/e-book-view-listener.c
+ (e_book_view_listener_check_queue): remove.
+ (e_book_view_listener_queue_response): just emit the signal.
+ (impl_BookViewListener_notify_card_added): spew.
+ (impl_BookViewListener_notify_card_changed): spew.
+ (impl_BookViewListener_notify_sequence_complete): spew.
+ (impl_BookViewListener_notify_progress): spew.
+ (e_book_view_listener_check_pending): remove
+ (e_book_view_listener_check_pop_response): remove
+ (e_book_view_listener_new): use the ALL_AT_IDLE poa policy.
+ (e_book_view_listener_init): remove the queue/timeout stuff.
+ (e_book_view_listener_dispose): remove the queue/timeout stuff.
+
+ * backend/ebook/e-book-view-listener.h: remove _check_pending and
+ _pop_response.
+
+2003-07-23 Chris Toshok <toshok@ximian.com>
+
+ * backend/pas/pas-backend-file.c (do_summary_query): remove the
+ completion_search argument, and remove the aggregating stuff.
+ just call pas_book_view_notify_add_1.
+ (pas_backend_file_book_view_copy): remove card_sexp crap.
+ (pas_backend_file_book_view_free): same.
+ (get_length): remove
+ (get_nth): remove
+ (cursor_destroy): remove
+ (vcard_matches_search): remove
+ (ecard_matches_search): remove
+ (pas_backend_file_search_timeout): remove the aggregating stuff.
+ just call pas_book_view_notify_add_1.
+ (pas_backend_file_search): simplify this a bunch.
+ (do_create): use pas_book_view_vcard_matches.
+ (pas_backend_file_process_get_card_list): add some more error
+ checks.
+ (pas_backend_file_process_get_book_view): unifdef this, and
+ implement it.
+ (pas_backend_file_start_book_view): kick off the search.
+ (pas_backend_file_get_uri): remove.
+ (pas_backend_file_class_init): remove get_uri, add
+ start_book_view.
+
+ * backend/pas/pas-backend-ldap.c (view_destroy): don't need to
+ unref the card_sexp, as the PASBookView owns it now.
+ (create_card_handler): use pas_book_view_vcard_matches.
+ (modify_card_modify_handler): same.
+ (ldap_get_view): initialize the view properly.
+ (pas_backend_ldap_get_uri): remove.
+ (pas_backend_ldap_class_init): remove the get_uri assignment.
+
+ * backend/pas/pas-backend-sync.c (_pas_backend_get_card_list):
+ don't free this, it's freed in the pas_book code.
+
+ * backend/pas/pas-backend-sync.h: make use of pas-types.h and
+ remove some typedefs.
+
+ * backend/pas/pas-backend-summary.h: same.
+
+ * backend/pas/pas-backend-card-sexp.h: same.
+
+2003-07-23 Chris Toshok <toshok@ximian.com>
+
+ * backend/pas/pas-book.c
+ (impl_GNOME_Evolution_Addressbook_Book_getBookView): spew.
+ (pas_book_respond_create): unifdef this.
+ (pas_book_respond_remove): same.
+ (pas_book_respond_modify): same.
+ (pas_book_respond_authenticate_user): same.
+ (pas_book_respond_get_supported_fields): unref the iterator.
+ (pas_book_respond_get_book_view): unifdef, and add spew.
+
+ * backend/pas/pas-book.h: make use of pas-types.h and remove some
+ typedefs.
+
+2003-07-23 Chris Toshok <toshok@ximian.com>
+
+ * backend/pas/pas-types.h: new file, all the typedefs shared
+ between files here.
+
+2003-07-23 Chris Toshok <toshok@ximian.com>
+
+ * backend/pas/pas-book-view.c (send_pending_adds): abstract all
+ the aggregating code to the book view. backends just call
+ notify_card_added and the superclass does all the aggregating.
+ (pas_book_view_notify_change): if there are pending adds, send
+ them before we send the change.
+ (pas_book_view_notify_remove): same.
+ (pas_book_view_notify_add): the other part of the aggregating
+ code.
+ (pas_book_view_notify_complete): send pending adds if there are
+ any.
+ (impl_GNOME_Evolution_Addressbook_BookView_start): new function,
+ call pas_backend_start_book_view.
+ (pas_book_view_get_card_query): new function.
+ (pas_book_view_get_card_sexp): new function.
+ (pas_book_view_get_backend): new function.
+
+ * backend/pas/pas-book-view.h: add a PASBackend arg to the
+ constructor, as well as the char* query and PASBackendCardSExp
+ form. also add accessors for card_query, card_sexp, and backend.
+
+ * backend/idl/addressbook.idl
+ (GNOME::Evolution::Addressbook::BookView): add start() method.
+ (GNOME::Evolution::Addressbook::BookListener): remove the oneway
+ tag from notifyBookOpened, notifyViewRequested, and
+ notifyChangesRequested so the call doesn't return until the remote
+ object has gotten the method call.
+
+ * backend/pas/pas-backend.c (pas_backend_load_uri): fill in the
+ uri slot if the load was successful.
+ (pas_backend_get_uri): return the uri, remove the virtual method
+ call.
+ (pas_backend_start_book_view): new function.
+ (process_client_request): ifdef out the threaded foo, since i'm
+ not certain it's at all necessary.
+ (real_add_client): remove the bonobo_object_unref of the book,
+ since it's immortal.
+ (pas_backend_dispose): free the uri.
+
+ * backend/pas/pas-backend.h: remove the get_uri virtual method,
+ and add the start_book_view virtual method and
+ pas_backend_start_book_view prototype.
+
+2003-07-23 Chris Toshok <toshok@ximian.com>
+
+ * backend/pas/Makefile.am (libpasvcf_a_SOURCES): new.
+ (noinst_LIBRARIES): add libpasvcf.a
+
+ * backend/pas/pas-backend-vcf.[ch]: new files, implement a vcard
+ file backend. the backend api still needs a little work, but it's
+ getting easier to write backends.
+
2003-07-23 Chris Toshok <toshok@ximian.com>
* printing/e-contact-print.c (e_contact_print_response): deal with