2002-11-05 Chris Toshok <toshok@ximian.com>
* backend/ebook/e-card.c: g_date_* => g_date_get_*, fixes
G_DISABLE_DEPRECATED build.
* backend/ebook/e-book-listener.[ch]: remove the servant crap i'd
c&p'ed and put in here.
* backend/ebook/e-book-view-listener.[ch]: remove the servant crap
i'd c&p'ed and put in here.
* backend/pas/pas-book-factory.[ch]: subclass from BonoboObject,
and remove the servant crap from here too. whee.
* backend/pas/pas-card-cursor.[ch]: remove the servant crap i'd
c&p'ed and put in here.
* backend/pas/pas-book.[ch]: remove the servant crap i'd c&p'ed
and put in here.
* backend/pas/pas-book-view.[ch]: remove the servant crap i'd
c&p'ed and put in here.
svn path=/trunk/; revision=18548
2002-10-20 Chris Toshok <toshok@ximian.com>
[ fixes#29067 ]
* backend/pas/pas-backend-file.c (pas_backend_file_search): we
need to create a card_sexp even when doing summary queries since
it's used to check modifications of cards in the view.
svn path=/trunk/; revision=18404
2002-09-30 Chris Toshok <toshok@ximian.com>
[ Fixes#31434 ]
* backend/pas/pas-backend-file.c (do_summary_query): always
retrieve the card from the db. use the summary strictly for
matching, not for storing all information. This fixes completion
of contact lists, since only 3 addresses were being stored and
contact lists can have more.
svn path=/trunk/; revision=18271
2002-09-27 Chris Toshok <toshok@ximian.com>
* backend/pas/pas-backend-ldap.c (check_schema_support): set the
timeout to 30 seconds.
(query_ldap_root_dse): same, and also return the ldap_error since
this function is the one that actually causes openldap to
connect() to the ldap host.
(pas_backend_ldap_connect): check the return value of
query_ldap_root_dse, and error out if it's not SUCCESS.
svn path=/trunk/; revision=18251
2002-08-30 Chris Toshok <toshok@ximian.com>
[ fixes#27923]
* backend/pas/pas-backend-summary.c: up the version to 4_0 (4000).
(pas_backend_summary_load_item): handle wants_html{_set}, list,
and list_show_addresses.
(pas_backend_summary_save_item): same.
(pas_backend_summary_add_card): same.
(pas_backend_summary_get_summary_vcard): same.
svn path=/trunk/; revision=17932
2002-08-29 Chris Toshok <toshok@ximian.com>
* backend/pas/pas-backend-card-sexp.c (is_helper): use strcasecmp
here, since all the other helpers use case insensitive
comparisons.
* backend/pas/pas-backend-summary.c (is_helper): same.
svn path=/trunk/; revision=17917
2002-08-29 Chris Toshok <toshok@ximian.com>
* backend/pas/pas-backend-ldap.c (category_ber): return NULL if
the list is empty.
(pas_backend_ldap_connect): always try to use ldapv3, not just
when we want to use tls.
svn path=/trunk/; revision=17916
2002-08-28 Chris Toshok <toshok@ximian.com>
* backend/pas/pas-backend-ldap.c (pas_backend_ldap_search): spew
the filter we're using for the search.
svn path=/trunk/; revision=17914
2002-08-28 Chris Toshok <toshok@ximian.com>
[ fixes#20348 ]
* backend/pas/evolutionperson.schema: deprecate "categories" in
favor of "category". evolution no longer uses "categories".
* backend/pas/pas-backend-ldap.c (category_populate): new
function, "category" is the new name, and it's multivalued so we
need the complex-prop stuff..
(category_ber): new function, same.
(category_compare): new function, same.
* gui/component/addressbook.c (addressbook_search_activated): the
text is "Category is" so we should use "is" instead of "contains"
for the query.
svn path=/trunk/; revision=17885
2002-08-27 Chris Toshok <toshok@ximian.com>
[ Fixes#14835 ]
* backend/pas/pas-backend-ldap.c (pas_backend_ldap_search):
notify_complete with InvalidQuery if the parse fails.
svn path=/trunk/; revision=17883
2002-08-26 Chris Toshok <toshok@ximian.com>
[ Fixes (almost certainly) #24649, #25494, #27351, and other LDAP search crashes ]
* backend/pas/pas-backend-ldap.c (view_destroy): use an EList
instead of a GList to store the book_view's so we don't have weird
issues with modifying the list while it's being traversed.
(find_book_view): same.
(create_card_handler): same.
(remove_card_handler): same.
(modify_card_modify_handler): same.
(poll_ldap): same, and also ref the book_view before calling
ldap_search_op_timeout (and therefore send_pending_adds).
(ldap_search_handler): same.
(ldap_op_add): warn about conflicting ldap msgid's (shouldn't ever
happen..)
(homephone_populate): make this a bit more robust (if values[0] ==
NULL, values[1] won't be valid).
(business_populate): same.
(build_card_from_entry): break out of the prop_info loop when we
get a match, and only set the simple field if the value != NULL.
(ldap_search_dtor): free all the pending adds stuff.
(pas_backend_ldap_process_get_book_view): g_list_prepend =>
e_list_append.
(pas_backend_ldap_remove_client): simplify the removing of the
book (use g_list_remove instead of searching and then using
g_list_remove_link.)
(pas_backend_ldap_destroy): unref the book_views list.
(pas_backend_ldap_init): initialize the EList for book_views.
svn path=/trunk/; revision=17870
2002-08-19 Chris Toshok <toshok@ximian.com>
* backend/pas/pas-book-view.c (pas_book_view_notify_complete):
take and pass the CallStatus to our listener.
* backend/pas/pas-book-view.h: change the prototype for
notify_complete to include the CallStatus.
* gui/component/select-names/e-select-names-completion.c
(e_select_names_completion_seq_complete_cb): add the status arg.
* gui/widgets/e-addressbook-view.c
(e_addressbook_view_class_init): init the search_result signal.
(e_addressbook_view_init): connect to the model's search_result
signal.
(emit_search_result): emit our search_result signal.
(search_result): call emit_search_result.
* gui/widgets/e-addressbook-view.h (struct
_EAddressbookViewClass): add the search_result signal.
* gui/widgets/e-addressbook-model.c (sequence_complete): emit both
a "search_result" as well as the "stop_state_changed" signal.
(e_addressbook_model_class_init): init the search_result signal.
* gui/widgets/e-addressbook-model.h: add search_result signal.
* gui/component/addressbook.c (search_result): pop up a dialog
telling the user why the search failed or was truncated.
(addressbook_factory_new_control): connect to the "search_result"
signal on the view.
* conduit/address-conduit.c (sequence_complete): add the status
parameter to sequence_complete.
* backend/idl/addressbook.idl: add BookViewListener_CallStatus,
and change notifySequenceComplete to take a CallStatus.
* backend/pas/pas-backend-ldap.c (create_card_handler): pass
status back in the notify_complete call.
(remove_card_handler): same.
(modify_card_modify_handler): same
(ldap_search_handler): same, and parse out the ldap return code so
we can report limits being properly.
* backend/pas/pas-backend-file.c (do_summary_query): pass status
back in the notify_complete call.
(pas_backend_file_search): same, and get rid of the
status_message, as the status is passed back properly.
(pas_backend_file_search): pass status
back in the notify_complete call.
(pas_backend_file_changes): same.
(pas_backend_file_process_create_card): same.
(pas_backend_file_process_remove_card): same.
(pas_backend_file_process_modify_card): same.
* backend/ebook/e-book-util.c (simple_query_sequence_complete_cb):
add status parameter.
* backend/ebook/e-book-view-listener.c
(e_book_view_listener_queue_status_event): change name from
_queue_empty_event, and take a status arg.
(e_book_view_listener_queue_id_event): init resp->status (to
SUCCESS).
(e_book_view_listener_queue_sequence_event): same.
(e_book_view_listener_queue_message_event): same.
(impl_BookViewListener_notify_sequence_complete): call
queue_status_event, and convert the corba status to
EBookViewStatus.
(e_book_view_listener_convert_status): new function, conver the
corba status to EBookViewStatus.
* backend/ebook/e-book-view-listener.h: add a "status" slot to
EBookViewListenerResponse.
* backend/ebook/e-book-view.h: change prototype for
sequence_complete signal.
* backend/ebook/e-book-view.c (e_book_view_do_complete_event):
sequence_complete takes a parameter now (EBookViewStatus).
(e_book_view_class_init): add the enum arg to the signal.
* backend/ebook/e-book-types.h: add EBookViewStatus enum.
svn path=/trunk/; revision=17814
2002-08-19 Chris Toshok <toshok@ximian.com>
* backend/pas/pas-backend-file.c
(pas_backend_file_get_static_capabilities): add
"cache-completions" here, since file completion results are
blanket cached (as they're generated from a summary).
* backend/pas/pas-backend-ldap.c
(pas_backend_ldap_process_get_cursor): there should be no search
limit on the get_cursor_request, as it's meant to match every card
it can.
(ldap_search_handler): parse the ldap result in the
RES_SEARCH_RESULT case. we'll want more here soon, so we can
notify the front end if the result was truncated due to either the
size or time limit being exceeded.
(pas_backend_ldap_process_get_book_view): in the case of a
completion view, we hardcode (yeah yeah, i know, but really) the
search limit to MIN (100, user-specified-limit).
(pas_backend_ldap_search): each view has its own limit now,
defaulting from the user specified one for normal searches but
possibly different for completion views. use the view's limit
here.
svn path=/trunk/; revision=17811
2002-08-16 Chris Toshok <toshok@ximian.com>
* backend/pas/pas-backend-ldap.c (book_view_notify_status): new
function to save a little typing.
(find_book_view): same.
(pas_backend_ldap_connect): reorder things a bit - set the version
to VERSION3 *before* doing TLS, as tls requires v3, and if we're
doing ldaps://, do tls a little differently (not sure if this is
strictly necessary, but the openldap source did it.. *shrug*).
also, guard the schema check as this function can be called
multiple times for the same server (if the server goes down or
times us out.)
(pas_backend_ldap_reconnect): new function, reconnect and if
necessary reauth the user.
(pas_backend_ldap_process_create_card): use
find_book_view/book_view_notify_status/pas_backend_ldap_reconnect.
(pas_backend_ldap_process_remove_card): same.
(pas_backend_ldap_process_modify_card): same.
(pas_backend_ldap_process_get_vcard): same.
(pas_backend_ldap_process_get_cursor): same.
(pas_backend_ldap_search): same.
(poll_ldap): reconnect if ldap_result returns -1.
(pas_backend_ldap_process_authenticate_user): ick ick ick save off
the dn/passwd we auth with so we can use them to reauthenticate.
svn path=/trunk/; revision=17785
2002-08-16 Chris Toshok <toshok@ximian.com>
[ fix 27333 ]
* gui/widgets/e-addressbook-model.c (get_view): "local" ->
"do-initial-query".
* backend/pas/pas-backend-file.c
(pas_backend_file_get_static_capabilities): "local" ->
"local,do-initial-query".
* gui/widgets/e-addressbook-model.c (get_view): "local" ->
"do-initial-query".
* gui/component/addressbook.c (book_open_cb): Only assume the
addressbook is local if "local" appears in its static
capabilities. We still use the ldap special case, but be nicer to
other networked backends.
svn path=/trunk/; revision=17782
2002-07-31 Chris Toshok <toshok@ximian.com>
[ roll in the following change from the 1.0 branch.]
* backend/pas/pas-backend-ldap.c:
(prop_info): change the CALURI and FBURL ecard attributes to map to the
RFC 2739 specified attributes.
(check_schema_support): check to see if calEntry is supported.
(add_objectclass_mod): insert calEntry if it's supported.
* backend/pas/evolutionperson.schema: deprecate freeBusyURI
and calendarURI.
svn path=/trunk/; revision=17657
2002-07-27 Chris Toshok <toshok@ximian.com>
* backend/pas/pas-backend-summary.c (save_string): don't save
empty strings.
(pas_backend_summary_save): print out the errno when we fail.
svn path=/trunk/; revision=17623
* backend/pas/Makefile.am: Split pas-backend-file and
pas-backend-ldap out of libpas and build them as separate (noinst)
libraries libpasfile.a and libpasldap.a. This gets the db3 and
LDAP dependencies out of libpas, and people trying to create an
addressbook backend shouldn't be calling functions from the
existing backends anyway so there's no reason to install them.
svn path=/trunk/; revision=17528
2002-07-09 Peter Williams <peterw@ximian.com>
* libversit/Makefile.am (privlib_LIBRARIES): Install libversit.a so
that people compiling against the addressbook can do so successfully.
* Makefile.am: create our *Conf.sh files and dist them and install
them.
* configure.in: Define and subst some variables that the Conf.sh
file need.
2002-07-08 Peter Williams <peterw@ximian.com>
* backend/ebook/Makefile.am: Install libebook-static.la.
Also change --all-static to -all-static, which is the right flag.
* backend/pas/Makefile.am: Install the PAS headers in
$(includedir)/evolution/pas. Install libpas.a
2002-07-08 Peter Williams <peterw@ximian.com>
* cal-util/Makefile.am: Install libcal-util-static.la
and fix the -all-static flag to make it install statically.
* pcs/Makefile.am: Install libpcs.a and its headers.
* pcs/cal-backend-util.h: Same sort of include namespacing fix,
but for pcs.
* pcs/cal.h:
* pcs/query.h:
* pcs/cal-factory.h:
* pcs/cal-backend.h:
* pcs/cal-backend-file.h: Same.
2002-07-17 Peter Williams <peterw@ximian.com>
* calendar/cal-util/Makefile.am (GTKDOC_LIBS): Because we're
using libtool as our LD, we can reference .la's and libtool
will DTRT for us.
* calendar/cal-client/Makefile.am (GTKDOC_LIBS): Same here.
2002-07-03 Peter Williams <peterw@ximian.com>
* Makefile.am: Install libeutil, libeconduit, and libedb3util and
their headers.
2002-07-08 Peter Williams <peterw@ximian.com>
* Makefile.am: Reference the new libefilterbar.a.
2002-07-12 Peter Williams <peterw@ximian.com>
* Makefile.am (INCLUDES): Add -I$(builddir)/libical/src/libical
for the generated ical.h (some headers rely on this because
they too get installed.)
2002-07-09 Peter Williams <peterw@ximian.com>
* e-timezone-dialog/Makefile.am: Add -I$(top_builddir)/libical/src/libical;
some headers that we rely on get installed, so they point to the ical.h that
gets generated and installed; consequently we need to be able to find the
generated ical.h
* misc/Makefile.am: Install libemiscwidgets.a and its headers. However,
break EFilterBar into a separate libefilterbar.a because we don't want
the installed library to depend on libfilter.
svn path=/trunk/; revision=17496
2002-07-12 Chris Toshok <toshok@ximian.com>
* backend/pas/pas-backend-summary.c (free_summary_item): free the
full_name (as well as given_name. oops.)
(pas_backend_summary_new): new summaries are version 3.0 now.
(pas_backend_summary_load_item): all loaded summaries should be
3.0+, as we fail to load versions lower than that.
(pas_backend_summary_load_header): if the summary isn't version
3.0 fail out, as we need to rebuild the entire file to cache the
full_name fields.
(pas_backend_summary_save_item): save out the full_name.
(pas_backend_summary_add_card): put the item's full_name in the
card.
svn path=/trunk/; revision=17447
2002-07-10 Chris Toshok <toshok@ximian.com>
* backend/pas/pas-backend-summary.c (clear_items): actually remove
the items from the pointer array too, so an error while loading
doesn't leave the memory summary corrupted.
(pas_backend_summary_load_header): bleah, load the num_items and
summary_mtime in the right order :) Also, set upgraded to TRUE if
we loaded a v1.0 summary.
(pas_backend_summary_open): make this return a gboolean, return
TRUE if the summary is already open (priv->fp != NULL). return
FALSE in error conditions.
(pas_backend_summary_load): if summary_open returns FALSE, return
FALSE, also set the dirty flag to FALSE after we load, and if the
summary was upgraded write it out.
(pas_backend_summary_save): update the in memory mtime to that of
the file when we save.
(summary_flush_func): if we're not dirty, do nothing and return.
(pas_backend_summary_is_up_to_date): make sure we've opened the
summary.
(pas_backend_summary_get_summary_vcard): fix compiler warning.
svn path=/trunk/; revision=17416
2002-07-10 Chris Toshok <toshok@ximian.com>
* backend/idl/addressbook.idl: add Book.getCompletionView.
* backend/ebook/e-book.c (e_book_get_completion_view): new
function, basically c&p of e_book_get_book_view, but call
getCompletionView.
* backend/ebook/e-book.h: add prototype for
e_book_get_completion_view.
* backend/pas/pas-backend-ldap.c
(pas_backend_ldap_process_client_requests): add a
GetCompletionView case here that just calls the same code as
GetBookView (since we don't build summaries for the ldap backend.)
* backend/pas/pas-backend-file.c (do_summary_query): add
@completion_search. If it's TRUE, just create the vcards from the
summary using pas_backend_summary_get_summary_vcard instead of
looking them up from the db.
(pas_backend_file_search): add @completion_search and pass it on
to do_summary_query.
(pas_backend_file_process_get_book_view): pass FALSE to
pas_backend_file_search.
(pas_backend_file_process_get_completion_view): new function,
basically c&p pas_backend_file_process_get_book_view, but pass
TRUE to pas_backend_file_search.
(pas_backend_file_process_client_requests): add a case for
GetCompletionView.
(pas_backend_file_load_uri): track the change to the summary api -
create the summary filename
* backend/pas/pas-book.c (pas_book_queue_get_completion_view): new
function, queue a GetCompletionView request to our queue.
(impl_GNOME_Evolution_Addressbook_Book_getCompletionView): new
function, call pas_book_queue_get_completion_view.
(pas_book_respond_get_completion_view): new function, just call
notifyViewRequested.
(pas_book_free_request): add a case for GetCompletionView.
(pas_book_get_epv): fill in epv->getCompletionView.
* backend/pas/pas-book.h: add a GetCompletionView PASOperation,
and a new structure (PASGetCompletionViewRequest). Also, add
get_completion_view to PASRequest.
* backend/pas/pas-backend-summary.c (clear_items): remove the
items from the hash table.
(pas_backend_summary_new): db_path -> summary_path.
(pas_backend_summary_destroy): db_.path -> summary_path, and
destroy the hash table.
(pas_backend_summary_init): db_path = summary_path, and initialize
the id_to_item hashtable.
(pas_backend_summary_load_header): handle the upgrading from
version 1.0 to version 2.0 (the addition of an mtime field in the
header)
(pas_backend_summary_load_item): version 1.0 and 2.0 have the same
format for items.
(pas_backend_summary_open): new function. open the summary so we
can load the header (and get the mtime).
(pas_backend_summary_load): rework this a bit since the header has
already been loaded, and also add the items to the hashtable.
(pas_backend_summary_add_card): add the new item to the hashtable.
(pas_backend_summary_remove_card): remove the item from the hash
table.
(pas_backend_summary_is_up_to_date): new function, chekc @t
against the summary's mtime.
(pas_backend_summary_get_summary_vcard): create a vcard from the
fields we have in the summary.
* backend/pas/pas-backend-summary.h: add prorotypes for
pas_backend_summary_is_up_to_date and
pas_backend_summary_get_summary_vcard.
svn path=/trunk/; revision=17402
2002-06-29 Chris Toshok <toshok@ximian.com>
* backend/pas/Makefile.am (libpas_a_SOURCES): add
pas-backend-summary.[ch].
* backend/pas/pas-backend-file.c (string_to_dbt): move this to the
top of the file so it can be used in..
(build_summary): loop over the db, adding cards ot the summary.
(do_summary_query): call pas_backend_summary_search and loop over
the returned id's looking them up in the db.
(pas_backend_file_search): call
pas_backend_summary_is_summary_query, and either call
do_summary_query if it's a query over just the set of attributes
in the summary or use the old, slow method if not.
(pas_backend_file_process_create_card): call
pas_backend_summary_add_card.
(pas_backend_file_process_remove_card): call
pas_backend_summary_remove_card.
(pas_backend_file_process_modify_card): call remove_card/add_card.
(pas_backend_file_load_uri): try to load the summary file, and if
it doesn't exist create it.
(pas_backend_file_destroy): unref the summary.
* backend/pas/pas-backend-summary.[ch]: new files, reading and
writing (and querying) summaries.
svn path=/trunk/; revision=17330
2002-06-15 Chris Toshok <toshok@ximian.com>
* backend/pas/pas-backend-ldap.c (pas_backend_ldap_connect): use
ldap_unbind_ext.
(create_card_handler): don't leak the new vcard.
(pas_backend_ldap_process_authenticate_user): don't leak the dn.
svn path=/trunk/; revision=17197
2002-06-14 Chris Toshok <toshok@ximian.com>
* backend/pas/pas-backend-file.c (pas_backend_file_search): up the
max threshold to 3000 cards from 1000 cards.. seems to improve
performance a bit. also remove the g_list_reverse since it
doesn't matter what order the cards arrive to the gui.
(pas_backend_file_changes): plug memory leaks.
svn path=/trunk/; revision=17196
2002-04-18 Chris Toshok <toshok@ximian.com>
* gui/component/ldap-config.c (addressbook_dialog_get_source):
fill in source->ssl.
(addressbook_source_dialog_set_source): set up auth/scope/ssl
option menus properly.
* gui/component/addressbook-storage.c
(addressbook_storage_init_source_uri): always include the
limit/ssl in the uri so we don't need to rely on defaults
everywhere.
(ldap_source_foreach): store the ssl option.
* gui/component/addressbook-storage.h: reorder SSLType to match
the UI.
* backend/pas/pas-backend-ldap.c: (struct _PASBackendLDAPPrivate)
add field for ldap_timeout.
(pas_backend_ldap_connect): reorder things a bit - we need to
start tls before the root dse query, if we can.
(pas_backend_ldap_load_uri): track the way ssl parameters are
given in the uri, and parse out the timeout.
* gui/component/ldap-config.c (port_changed_func): use the
symbolic SSL name instead of an integer constant.
svn path=/trunk/; revision=16529
2002-03-27 Chris Toshok <toshok@ximian.com>
* backend/pas/pas-backend-file.c
(pas_backend_file_process_create_card): don't free req->vcard.
it's freed in pas_book_free_request.
(pas_backend_file_process_remove_card): don't free req->id for the
same reason.
(pas_backend_file_process_modify_card): don't free req->vcard for
the same reason.
(pas_backend_file_process_get_changes): don't free req->change_id
or release_unref the listener for the same reason.
svn path=/trunk/; revision=16265
2002-03-27 Chris Toshok <toshok@ximian.com>
* backend/pas/pas-backend-ldap.c (check_schema_support): make sure
to call ldap_value_free (values);, and ldap_msgfree (resp).
(get_ldap_library_info): don't ask me why, but it appears we have
to free each extension char*.
(query_ldap_root_dse): make sure to free values in the
subschemaSubentry code before overwriting it, and call
ldap_msgfree(resp) when we're all done.
(build_card_from_entry): don't leak the DN, ldap attributes, or
the berval the ldap_*_attribute calls use to step through the
attributes. the docs say this berval is freed when
ldap_next_attribute returns NULL, but if we don't free it it leaks
a substantial amount of memory.
(pas_backend_ldap_search): make sure to only allocate *op once,
and fix the g_warning since op isn't valid in its scope anymore.
svn path=/trunk/; revision=16262
2002-03-09 Chris Toshok <toshok@ximian.com>
* backend/idl/addressbook.idl: add TLSNotAvailable to
BookLister_CallStatus.
* backend/ebook/e-book-types.h: add TLS_NOT_AVAILABLE to the EBookStatus enum.
* backend/ebook/e-book-listener.c
(e_book_listener_convert_status): add TLS_NOT_AVAILABLE to the
switch.
* backend/pas/pas-backend-ldap.c
(pas_backend_ldap_get_static_capabilities): fix name.
(pas_backend_ldap_class_init): fix name.
(pas_backend_ldap_connect): change return type to CallStatus so we
can return different errors from here. Also, do STARTTLS if the
user has asked for it and the connection supports it, returning
TLSNotAvailable (and close the connection) if they chose to
require it.
(pas_backend_ldap_load_uri): return pas_backend_ldap_connect.
(func_beginswith): pull in change from evolution-1-0-branch to
make full_name beginswith search both cn and sn.
svn path=/trunk/; revision=16005
2002-03-09 Chris Toshok <toshok@ximian.com>
* gui/widgets/e-addressbook-view.c (jump_to_letter): since I've
gone ahead and made the file backend (by way of
pas-backend-card-sexp.c) use case insensitive searches for
beginswith, there's no need to list upper and lower case here.
* gui/component/addressbook.c (addressbook_search_option_items):
reorder things to put "Any field contains" at the end, since it's
the least efficient search. Also reorder the enum to the same
ordering. Change "Name contains" to "Name begins with" and change
"Email contains" to "Email is".
(addressbook_search_activated): change FULL_NAME to beginswith,
and change EMAIL to is to match the labels.
* backend/pas/pas-backend-card-sexp.c (compare_name): new
function, so we can compare both full and family names (so
beginswith can operate on them both.)
(endswith_helper): use e_utf8_strstrcase here, since all the
backends backends use case insensitive searching.
(func_endswith): same.
svn path=/trunk/; revision=16004
2002-03-07 Chris Toshok <toshok@ximian.com>
* backend/pas/pas-book.c (pas_book_queue_create_card): track
union/struct change.
(pas_book_queue_remove_card): same.
(pas_book_queue_modify_card): same.
(pas_book_queue_get_cursor): same.
(pas_book_queue_get_vcard): same.
(pas_book_queue_authenticate_user): same.
(pas_book_queue_get_book_view): same.
(pas_book_queue_get_changes): same.
(pas_book_free_request): new function - free everything we need to
for each type of request.
(pas_book_destroy): call pas_book_free_request here instead of
just freeing 3 elements of the old struct. yay plugging memleaks.
* backend/pas/pas-book.h: make PASRequest a union and split out
members into structs, so it's a little clearer which fields are
used by which requests. Also, add prototype for
pas_book_free_request so backends can just free everything at once
(usually in their requests_queued signal func.)
* backend/pas/pas-backend-file.c
(pas_backend_file_process_create_card): track struct/union change.
(pas_backend_file_process_remove_card): same.
(pas_backend_file_process_modify_card): same.
(pas_backend_file_build_cards_list): same.
(pas_backend_file_process_get_vcard): same.
(pas_backend_file_process_get_cursor): same.
(pas_backend_file_process_get_book_view): same.
(pas_backend_file_process_get_changes): same.
(pas_backend_file_process_check_connection): same.
(pas_backend_file_process_authenticate_user): same.
(pas_backend_file_process_get_supported_fields): same.
(pas_backend_file_process_client_requests): case the union to the
specific struct and pass it to the process_* functions. also,
call pas_book_free_request here, instead of relying on each of the
functions to free their stuff.
svn path=/trunk/; revision=15987
2002-02-28 Chris Toshok <toshok@ximian.com>
* backend/pas/pas-backend-ldap.c (pas_backend_ldap_search): don't
ref the view here, since it keeps the view alive until the search
is over, which we don't want. we want the view's death to cancel
the search. This speeds up starting new searches after one is
already active (since switching searches actually creates a new
book view and destroys the old one.)
(ldap_search_dtor): remove the matching unref here. The unref as
it was was incorrect anyway, and caused a crash (we needed
search_op->view, not op->view.)
svn path=/trunk/; revision=15877
* backend/pas/pas-backend-file.c (pas_backend_file_search): move
card_count++ inside the if that checks to see if a card matches
(and adds the card to the list).
svn path=/trunk/; revision=15872
2002-02-27 Chris Toshok <toshok@ximian.com>
[fixes bug #20690]
* backend/pas/pas-backend-ldap.c (func_and): the data arg is not
GList** anymore, it's PASBackendLDAPSExpData*, so use
ldap_data->list instead of *list.
(func_or): same.
(func_not): same.
(func_contains): same.
(func_is): same.
(func_endswith): same.
(func_beginswith): same, but also special case the beginswith
"fileAs" query type (the one used by the alphabet buttons on the
right hand side, so we can deal with entries that don't have
fileAs attributes, and return meaningful responses.)
(pas_backend_ldap_build_query): initialize the
PASBackendLDAPSExpData struct and pass that instead of &list.
Also, take the PASBackendLDAP arg to add to the struct in case we
need it at some point in the future.
(ldap_search_handler): pass in the PASBackendLDAP.
svn path=/trunk/; revision=15871
2002-02-22 Chris Toshok <toshok@ximian.com>
[ Fixes bugs 20740, 16680, and god knows what else :) ]
* gui/widgets/e-addressbook-model.c (create_card): double the
allocated size every time we need more space instead of using a
fixed size increment. this helps huge queries. Also, remove the
gtk_object_get of "file_as", as it was dead code.
(book_view_loaded): handle errors here (by popping up a dialog).
* backend/pas/pas-backend-ldap.c (view_destroy): search_idle ->
search_timeout.
(build_card_from_entry): comment out some spew, and unref ecard
when we're done to plug a memory leak.
(send_pending_adds): send along to the client all the cards we've
been saving up.
(poll_ldap): use a timeout for ldap_result to keep the backend
from blocking (and it turns out keep the frontend from hanging
waiting on a ref to complete) on large db's with few matches.
Also, add some fairly smart, self-tuning aggregating of cards.
Keep track of the number of cards we've sent the last time through
as well as this time, and estimate the number we want to aggregate
the next time based on them (we average them at the moment),
subject to maximum/minimum number of cards. also, we have a
maximum aggregation time, after which we force a flush if there
are pending cards and recalculate our target pending number.
there's a minimum wait time to possibly keep outselves from
spamming the ui, although it's 0 at the moment.
Lastly, make sure to only notify the GUI of status messages when
we need to. this results in a *huge* savings.
(ldap_search_handler): initialize all the pending card stuff, and
use a timeout instead of an idle function for poll_ldap.
* backend/ebook/e-book-view-listener.c
(e_book_view_listener_queue_response): performance optimization
for large adds. If we're a CardAddedEvent and there's an existing
CardAddedEvent at the end of the queue, just concat the lists of
cards together. This is to keep the gui from falling further and
further behind the ldap backend, which is merrily spewing updates
at the gui.
svn path=/trunk/; revision=15807
2002-02-20 Chris Toshok <toshok@ximian.com>
* backend/pas/pas-backend-file.c (pas_backend_file_load_uri):
track change to signature, and (for now) just change all the
return FALSE's to _RepositoryOffline (what FALSE used to map to in
pas_book_factory_process_request), and change TRUE to _Success.
* backend/pas/pas-backend-ldap.c (pas_backend_ldap_load_uri):
track change to signature, and differentiate between
pas_backend_ldap_connect failing (RepositoryOffline), and
ldap_url_parse failing (OtherError).
* backend/pas/pas-book-factory.c
(pas_book_factory_process_request): since pas_backend_load_uri
returns status now, use it to nodify the BookListener if there's a
failure.
* backend/pas/pas-backend.c (pas_backend_load_uri): track change
to signature.
* backend/pas/pas-backend.h: change return type of
pas_backend_load_uri to
GNOME_Evolution_Addressbook_BookListener_CallStatus to allow
differentiation between failure types.
* backend/ebook/e-book-listener.c
(e_book_listener_convert_status): handle _AUTHENTICATION_FAILED.
* backend/ebook/e-book-types.h (EBookStatus): add
_AUTHENTICATION_FAILED.
svn path=/trunk/; revision=15779
2002-02-18 Chris Toshok <toshok@ximian.com>
* backend/pas/pas-book-factory.c
(pas_book_factory_process_request): if the load_uri fails, notify
the listener that the repository is offline. (partial fix for bug
20347)
svn path=/trunk/; revision=15758
2002-02-18 Chris Toshok <toshok@ximian.com>
* backend/pas/pas-backend-ldap.c (create_dn_from_ecard): escape
commas in the dn, since they're used by ldap to specify the node's
placement in the tree. (fixes bug 20089)
(rfc2254_escape): just use sprintf and %02X instead.
svn path=/trunk/; revision=15756
2002-02-13 Christopher James Lahey <clahey@ximian.com>
* backend/ebook/e-book-util.c, backend/ebook/e-book-util.h
(e_book_expand_uri, e_book_load_address_book_by_uri,
e_book_use_address_book_by_uri): New functions that take a file://
url ending in the directory name and automatically append the
addressbook.db and do the appropriate thing.
* backend/pas/pas-backend-card-sexp.c,
backend/pas/pas-backend-card-sexp.h: Added copyright notice here.
* gui/component/addressbook-component.c
(destination_folder_handle_drop), gui/component/addressbook.c
(set_prop): Use e_book_expand_uri instead of
addressbook_expand_uri.
* gui/component/addressbook-storage.c: Fixed the fcntl include
here.
* gui/component/addressbook.c (ContactsCopyToFolder,
ContactsMoveToFolder): Added handlers for these two verbs.
* gui/component/addressbook.h: Removed addressbook_expand_uri in
favor of e_book_expand_uri.
* gui/widgets/e-addressbook-reflow-adapter.c (transfer_cards):
Added code to handle Move to and Copy to right click menu items.
* gui/widgets/e-addressbook-util.c,
gui/widgets/e-addressbook-util.h (e_addressbook_transfer_cards):
New function to pop up a dialog and transfer a set of cards to the
given folder.
* gui/widgets/e-addressbook-view.c,
gui/widgets/e-addressbook-view.h (display_view): Don't attach to
the view if it doesn't exist yet. We have to make this then
attach later.
(e_addressbook_view_copy_to_folder,
e_addressbook_view_move_to_folder): New functions utilizing
e_addressbook_transfer_cards.
(table_right_click): Add copy_to_folder and move_to_folder to the
right click menu for tables here.
(e_addressbook_view_discard_menus): Handle menu unmerging here.
* gui/widgets/e-minicard-view-widget.h (struct
_EMinicardViewWidget): Removed unused field.
svn path=/trunk/; revision=15710
2002-01-30 Chris Toshok <toshok@ximian.com>
* backend/pas/pas-backend-file.c (pas_backend_file_changes):
compute the change db filename based on our contact db filename.
(pas_backend_file_load_uri): store the filename in
bf->priv->filename.
(pas_backend_file_destroy): free the filename, and (!) free
bf->priv too.
svn path=/trunk/; revision=15529