Files
evolution/addressbook/backend/ebook/e-book-view.h
Chris Toshok aaa6c778e8 [ huge change, all for 1 little performance problem :) fixes #18207 ] use
2003-02-08  Chris Toshok  <toshok@ximian.com>

	[ huge change, all for 1 little performance problem :) fixes #18207 ]
	* gui/widgets/e-addressbook-model.c (get_view): use
	e_book_check_static_capability here to make things a little
	prettier.
	(remove_card): complain about my life, and add code to use one
	"model_changed" signal if we get back a list of cards instead of
	multiple "card_removed" signals.

	* gui/widgets/e-addressbook-model.h: little clean up.

	* gui/widgets/e-addressbook-view.c (delete): write a bulk-remove
	case for this.  if the backend supports it, send all the ids at
	once.  otherwise loop over the ids.
	(e_addressbook_view_delete_selection): fake a CardAndBook
	structure and call delete, instead of duplicating the code in 2
	places.

	* gui/component/addressbook.c (delete_contact_cb): don't call
	e_contact_editor_confirm_delete here, it's handled by the
	EAddressbookView.

	* backend/pas/pas-card-cursor.c (pas_card_cursor_construct): fix a
	compiler warning about a stupid crash.

	* backend/pas/pas-book.h (PASOperation): RemoveCard ->
	RemoveCards.
	(PASRemoveCardsReques): char *id -> GList *ids.
	(PASRequest): PASRemoveCardRequest -> PASRemoveCardsRequest.

	* backend/pas/pas-book.c (pas_book_queue_remove_cards): build up a
	GList from the id sequence.
	(pas_book_respond_remove): notifyCardRemoved ->
	notifyCardsRemoved.
	(impl_GNOME_Evolution_Addressbook_Book_removeCards): rename.
	(pas_book_free_request): free the idlist for RemoveCards.
	(pas_book_class_init): removeCard -> removeCards.

	* backend/pas/pas-book-view.h: change prototype for
	pas_book_view_notify_remove, and add prototype for
	pas_book_view_notify_remove_1.

	* backend/pas/pas-book-view.c (pas_book_view_notify_remove_1):
	build up a list and call pas_book_view_notify_remove.
	(pas_book_view_notify_remove): build up the corba id sequence and
	call BookViewListener::notifyCardsRemoved.

	* backend/pas/pas-backend.h: remove_card -> remove_cards.

	* backend/pas/pas-backend.c (pas_backend_remove_cards): rename
	from _remove_card.
	(process_client_requests): RemoveCard -> RemoveCards and
	_remove_card -> _remove_cards.

	* backend/pas/pas-backend-ldap.c (check_schema_support):
	g_strcasecmp -> g_ascii_strcasecmp.
	(remove_card_handler): _remove => _remove_1.
	(modify_card_modify_handler): same.
	(pas_backend_ldap_process_remove_cards): rename from _remove_card.
	(pas_backend_ldap_class_init): _remove_card -> _remove_cards.

	* backend/pas/pas-backend-file.c (pas_backend_file_class_init):
	remove_card -> remove_cards.
	(pas_backend_file_get_static_capabilities): add "bulk-removes".
	(pas_backend_file_process_remove_cards): rewrite this function
	largely, so that it handles lists of ids.  first we loop through
	and for every successful deletion we build a list of deleted
	ECards.  Then for each view we build a list (a subset of the
	deleted ECard list) and pass back that list to the view.
	(pas_backend_file_process_modify_card): use _remove_1 instead of
	_remove.
	(ecard_matches_search): new function.

	* backend/pas/pas-backend-card-sexp.c
	(pas_backend_card_sexp_match_vcard): rewrite in terms of
	_match_ecard.
	(pas_backend_card_sexp_match_ecard): new function, the guts from
	_match_vcard.

	* backend/pas/pas-backend-card-sexp.h: add prototype for
	pas_backend_card_sexp_match_ecard.

	* backend/idl/addressbook.idl: the card removal stuff now takes
	CardIdList.

	* backend/ebook/e-book.c (e_book_get_static_capabilities): cache
	successful capability queries (since they're static).
	(e_book_check_static_capability): new, convenience function to
	check if a particular capability is supported.
	(e_book_remove_card_by_id): build a single element GList and call
	e_book_remove_cards.
	(e_book_remove_cards): build up a CORBA sequence from the GList
	and call Book::removeCards.
	(e_book_dispose): free the cached capabilities string.

	* backend/ebook/e-book.h: add new prototypes for
	e_book_check_static_capability and e_book_remove_cards.

	* backend/ebook/e-book-view.h (struct _EBookViewClass): rename
	"card_removed" signal to "cards_removed".

	* backend/ebook/e-book-view.c (e_book_view_do_removed_event): id
	-> ids, and free the id list.
	(e_book_view_check_listener_queue): CardRemovedEvent ->
	CardsRemovedEvent.

	* backend/ebook/e-book-view-listener.c
	(e_book_view_listener_queue_response): free the id list.
	(e_book_view_listener_queue_idlist_event): new function, used for
	cards_removed.
	(e_book_view_listener_queue_status_event): id -> ids.
	(e_book_view_listener_queue_sequence_event): same.
	(e_book_view_listener_queue_message_event): same.
	(impl_BookViewListener_notify_cards_removed): call
	queue_idlist_event.
	(e_book_view_listener_dispose): free the id list.
	(e_book_view_listener_class_init): track change to idl call.

	* backend/ebook/e-book-view-listener.h
	(EBookViewListenerOperation): CardRemovedEvent ->
	CardsRemovedEvent.
	(EBookViewListenerResponse): char *id -> GList *ids.

	* backend/ebook/e-book-listener.c
	(impl_BookListener_respond_remove_cards): rename from remove_card.

svn path=/trunk/; revision=19853
2003-02-08 09:05:42 +00:00

64 lines
2.0 KiB
C

/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
/*
* The Evolution addressbook client object.
*
* Author:
* Nat Friedman (nat@ximian.com)
*
* Copyright 1999, 2000, Ximian, Inc.
*/
#ifndef __E_BOOK_VIEW_H__
#define __E_BOOK_VIEW_H__
#include <glib.h>
#include <glib-object.h>
#include <ebook/e-card.h>
#include <ebook/e-book-view-listener.h>
#define E_TYPE_BOOK_VIEW (e_book_view_get_type ())
#define E_BOOK_VIEW(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), E_TYPE_BOOK_VIEW, EBookView))
#define E_BOOK_VIEW_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), E_TYPE_BOOK_VIEW, EBookViewClass))
#define E_IS_BOOK_VIEW(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), E_TYPE_BOOK_VIEW))
#define E_IS_BOOK_VIEW_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), E_TYPE_BOOK_VIEW))
#define E_BOOK_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), E_TYPE_BOOK_VIEW, EBookViewClass))
G_BEGIN_DECLS
typedef struct _EBookView EBookView;
typedef struct _EBookViewClass EBookViewClass;
typedef struct _EBookViewPrivate EBookViewPrivate;
struct _EBook; /* Forward reference */
struct _EBookView {
GObject parent;
EBookViewPrivate *priv;
};
struct _EBookViewClass {
GObjectClass parent;
/*
* Signals.
*/
void (* card_changed) (EBookView *book_view, const GList *cards);
void (* card_removed) (EBookView *book_view, const GList *ids);
void (* card_added) (EBookView *book_view, const GList *cards);
void (* sequence_complete) (EBookView *book_view, EBookViewStatus status);
void (* status_message) (EBookView *book_view, const char *message);
};
/* Creating a new addressbook. */
EBookView *e_book_view_new (GNOME_Evolution_Addressbook_BookView corba_book_view, EBookViewListener *listener);
GType e_book_view_get_type (void);
void e_book_view_set_book (EBookView *book_view, struct _EBook *book);
void e_book_view_stop (EBookView *book_view);
G_END_DECLS
#endif /* ! __E_BOOK_VIEW_H__ */