diff options
author | Christopher James Lahey <clahey@helixcode.com> | 2000-04-09 06:10:47 +0800 |
---|---|---|
committer | Chris Lahey <clahey@src.gnome.org> | 2000-04-09 06:10:47 +0800 |
commit | 58e7df4e0376d1248ced78659d27d61adc1434b9 (patch) | |
tree | edda4073e9e79d89b8bb9a34498049259998718d /addressbook/backend | |
parent | 6beb74f53508f0f92ad5ed0fe7e823b6a5be76f3 (diff) | |
download | gsoc2013-evolution-58e7df4e0376d1248ced78659d27d61adc1434b9.tar.gz gsoc2013-evolution-58e7df4e0376d1248ced78659d27d61adc1434b9.tar.zst gsoc2013-evolution-58e7df4e0376d1248ced78659d27d61adc1434b9.zip |
pixmap_DATA isn't defined so don't use it as a variable.
2000-04-08 Christopher James Lahey <clahey@helixcode.com>
* art/Makefile.am: pixmap_DATA isn't defined so don't use it as a variable.
* addressbook/gui/component/,
addressbook/gui/component/.cvsignore, addressbook/gui/Makefile.am,
addressbook/gui/component/addressbook-factory.c,
addressbook/gui/component/addressbook.c,
addressbook/gui/component/addressbook.gnorba,
addressbook/gui/component/addressbook.h: New directory to proivde
the component for contact management. Simply uses an e-minicard-view.
* addressbook/gui/minicard/e-minicard-view.c,
addressbook/gui/minicard/e-minicard-view.h: New subclass of
e-reflow-sorted that takes an EBook and uses it to compute the
card data to display.
* addressbook/gui/minicard/e-minicard.c,
addressbook/gui/minicard/e-minicard.h: This now backends to a
ECard instead of a ETableModel.
* addressbook/gui/minicard/e-reflow.c,
addressbook/gui/minicard/e-reflow.h: This now has a virtualized
add method.
* addressbook/gui/minicard/e-reflow-sorted.c,
addressbook/gui/minicard/e-reflow-sorted.h: New subclass of
e-reflow that allows the data to be sorted on the fly.
* addressbook/gui/minicard/test-minicard-view.c: New test to test
the new minicard view.
* addressbook/gui/minicard/test-reflow.c: Uses the new ECard
backend of the e-minicard.
* addressbook/gui/minicard/.cvsignore,
addressbook/gui/minicard/Makefile.am: Added new test. Fixed
dependencies. Added new files.
* addressbook/gui/, addressbook/gui/Makefile.am,
addressbook/gui/.cvsignore: New directory for addressbook gui
bits. Added subdirectories. Created an initial .cvsignore.
* addressbook/Makefile.am (SUBDIRS): Removed demo and added gui.
* addressbook/backend/pas/pas-backend-file.c: Added code to do
notification on bookviews when changes in the backend are made.
* addressbook/backend/pas/pas-book-view.c,
addressbook/backend/pas/pas-book-view.h: Added helper functions to
notify the view about the addition or modification of a single
card. Fixed a mistaken extra free.
* addressbook/backend/ebook/e-card-list-iterator.h: Fixed
incorrect parent class.
* addressbook/backend/ebook/test-client.c: Made this accept an
optional parameter that specifies the vcard to add.
* configure.in: Replaced widgets/e-minicard/Makefile and
addressbook/demo/Makefile with addressbook/gui/minicard/Makefile
and addressbook/gui/component/Makefile respectively.
* widgets/Makefile.am: Removed e-minicard since it's being moved
to addressbook/gui/minicard.
* widgets/e-text/e-text.c: Fixed the border width around tooltips
and made the main tooltip area yellow.
From camel/ChangeLog:
2000-04-08 Christopher James Lahey <clahey@helixcode.com>
* providers/smtp/.cvsignore: Added a .cvsignore file.
From calendar/ChangeLog:
2000-04-08 Christopher James Lahey <clahey@helixcode.com>
* gui/Makefile.am: Removed linking with libetable and libeminicard
since they weren't being used.
svn path=/trunk/; revision=2343
Diffstat (limited to 'addressbook/backend')
-rw-r--r-- | addressbook/backend/ebook/e-card-list-iterator.h | 4 | ||||
-rw-r--r-- | addressbook/backend/ebook/test-client.c | 38 | ||||
-rw-r--r-- | addressbook/backend/pas/pas-backend-file.c | 79 | ||||
-rw-r--r-- | addressbook/backend/pas/pas-book-view.c | 20 | ||||
-rw-r--r-- | addressbook/backend/pas/pas-book-view.h | 4 |
5 files changed, 121 insertions, 24 deletions
diff --git a/addressbook/backend/ebook/e-card-list-iterator.h b/addressbook/backend/ebook/e-card-list-iterator.h index cdc7a312b1..67d56cfb9c 100644 --- a/addressbook/backend/ebook/e-card-list-iterator.h +++ b/addressbook/backend/ebook/e-card-list-iterator.h @@ -26,14 +26,14 @@ typedef struct _ECardListIterator ECardListIterator; typedef struct _ECardListIteratorClass ECardListIteratorClass; struct _ECardListIterator { - GtkObject object; + ECardIterator parent; ECardList *list; GList *iterator; }; struct _ECardListIteratorClass { - GtkObjectClass parent_class; + ECardIteratorClass parent_class; }; ECardIterator *e_card_list_iterator_new (ECardList *list); diff --git a/addressbook/backend/ebook/test-client.c b/addressbook/backend/ebook/test-client.c index f535d2db1a..15c5410146 100644 --- a/addressbook/backend/ebook/test-client.c +++ b/addressbook/backend/ebook/test-client.c @@ -30,8 +30,9 @@ " " -CORBA_Environment ev; -CORBA_ORB orb; +static CORBA_Environment ev; +static CORBA_ORB orb; +static char *cardstr; static void init_bonobo (int argc, char **argv) @@ -99,7 +100,7 @@ add_card_cb (EBook *book, EBookStatus status, const gchar *id, gpointer closure) static void book_open_cb (EBook *book, EBookStatus status, gpointer closure) { - e_book_add_vcard(book, TEST_VCARD, add_card_cb, NULL); + e_book_add_vcard(book, cardstr, add_card_cb, NULL); } static guint @@ -125,6 +126,30 @@ ebook_create (void) return FALSE; } +static char * +read_file (char *name) +{ + int len; + char buff[65536]; + char line[1024]; + FILE *f; + + f = fopen (name, "r"); + if (f == NULL) + g_error ("Unable to open %s!\n", name); + + len = 0; + while (fgets (line, sizeof (line), f) != NULL) { + strcpy (buff + len, line); + len += strlen (line); + } + + fclose (f); + + return g_strdup (buff); +} + + int main (int argc, char **argv) { @@ -132,6 +157,13 @@ main (int argc, char **argv) CORBA_exception_init (&ev); init_bonobo (argc, argv); + cardstr = NULL; + if (argc == 2) + cardstr = read_file (argv [1]); + + if (cardstr == NULL) + cardstr = TEST_VCARD; + gtk_idle_add ((GtkFunction) ebook_create, NULL); bonobo_main (); diff --git a/addressbook/backend/pas/pas-backend-file.c b/addressbook/backend/pas/pas-backend-file.c index 706ab1f9a2..935dab19d5 100644 --- a/addressbook/backend/pas/pas-backend-file.c +++ b/addressbook/backend/pas/pas-backend-file.c @@ -25,11 +25,13 @@ static PASBackendClass *pas_backend_file_parent_class; typedef struct _PASBackendFileCursorPrivate PASBackendFileCursorPrivate; +typedef struct _PASBackendFileBookView PASBackendFileBookView; struct _PASBackendFilePrivate { GList *clients; gboolean loaded; DB *file_db; + GList *book_views; }; struct _PASBackendFileCursorPrivate { @@ -40,6 +42,11 @@ struct _PASBackendFileCursorPrivate { guint32 num_elements; }; +struct _PASBackendFileBookView { + PASBookView *book_view; + gchar *search; +}; + static long get_length(PASCardCursor *cursor, gpointer data) { @@ -89,6 +96,20 @@ view_destroy(GtkObject *object, gpointer data) CORBA_Environment ev; Evolution_Book corba_book; PASBook *book = (PASBook *)data; + PASBackendFile *bf; + GList *list; + + bf = PAS_BACKEND_FILE(pas_book_get_backend(book)); + for (list = bf->priv->book_views; list; list = g_list_next(list)) { + PASBackendFileBookView *view = list->data; + if (view->book_view == PAS_BOOK_VIEW(object)) { + g_free (view->search); + g_free (view); + bf->priv->book_views = g_list_remove_link(bf->priv->book_views, list); + g_list_free_1(list); + break; + } + } corba_book = bonobo_object_corba_objref(BONOBO_OBJECT(book)); @@ -131,6 +152,7 @@ pas_backend_file_process_create_card (PASBackend *backend, DBT id_dbt, vcard_dbt; int db_error; char *id; + GList *list; id = pas_backend_file_create_unique_id (req->vcard); @@ -140,9 +162,11 @@ pas_backend_file_process_create_card (PASBackend *backend, db_error = db->put (db, &id_dbt, &vcard_dbt, 0); if (0 == db_error) { -#if 0 - pas_book_notify_add(book, id); -#endif + for (list = bf->priv->book_views; list; list = g_list_next(list)) { + PASBackendFileBookView *view = list->data; + /* if (card matches view->search) */ + pas_book_view_notify_add_1 (view->book_view, req->vcard); + } pas_book_respond_create ( book, @@ -175,15 +199,18 @@ pas_backend_file_process_remove_card (PASBackend *backend, DB *db = bf->priv->file_db; DBT id_dbt; int db_error; + GList *list; string_to_dbt (req->id, &id_dbt); db_error = db->del (db, &id_dbt, 0); if (0 == db_error) { -#if 0 - pas_book_notify_remove (book, req->id); -#endif + for (list = bf->priv->book_views; list; list = g_list_next(list)) { + PASBackendFileBookView *view = list->data; + /* if (card matches view->search) */ + pas_book_view_notify_remove (view->book_view, req->id); + } pas_book_respond_remove ( book, @@ -211,6 +238,7 @@ pas_backend_file_process_modify_card (PASBackend *backend, DB *db = bf->priv->file_db; DBT id_dbt, vcard_dbt; int db_error; + GList *list; string_to_dbt (req->id, &id_dbt); string_to_dbt (req->vcard, &vcard_dbt); @@ -218,9 +246,16 @@ pas_backend_file_process_modify_card (PASBackend *backend, db_error = db->put (db, &id_dbt, &vcard_dbt, 0); if (0 == db_error) { -#if 0 - pas_book_notify_change (book, req->id); -#endif + for (list = bf->priv->book_views; list; list = g_list_next(list)) { + PASBackendFileBookView *view = list->data; + /* if (card matches view->search) */ + pas_book_view_notify_change_1 (view->book_view, req->vcard); + /* else if (card changes to match view->search ) + pas_book_view_notify_add_1 (view->book_view, req->vcard); + else if (card changes to not match view->search ) + pas_book_view_notify_remove (view->book_view, req->id); + */ + } pas_book_respond_modify ( book, @@ -335,9 +370,11 @@ pas_backend_file_process_get_book_view (PASBackend *backend, DBT id_dbt, vcard_dbt; CORBA_Environment ev; int db_error = 0; - PASBookView *view; + PASBookView *book_view; Evolution_Book corba_book; GList *cards = NULL; + PASBackendFileBookView *view; + g_return_if_fail (req->listener != NULL); @@ -354,16 +391,16 @@ pas_backend_file_process_get_book_view (PASBackend *backend, CORBA_exception_free(&ev); - view = pas_book_view_new (req->listener); + book_view = pas_book_view_new (req->listener); - gtk_signal_connect(GTK_OBJECT(view), "destroy", + gtk_signal_connect(GTK_OBJECT(book_view), "destroy", GTK_SIGNAL_FUNC(view_destroy), book); pas_book_respond_get_book_view (book, (db_error == 0 ? Evolution_BookListener_Success : Evolution_BookListener_CardNotFound /* XXX */), - view); + book_view); /* ** no reason to not iterate through the file now and notify @@ -390,14 +427,19 @@ pas_backend_file_process_get_book_view (PASBackend *backend, g_warning ("pas_backend_file_process_get_book_view: error building list\n"); } else { - pas_book_view_notify_add (view, cards); + pas_book_view_notify_add (book_view, cards); } /* - ** the following should be done when the view is destroyed + ** It's fine to do this now since the data has been handed off. */ g_list_foreach (cards, (GFunc)g_free, NULL); g_list_free (cards); + + view = g_new(PASBackendFileBookView, 1); + view->book_view = book_view; + view->search = g_strdup(req->search); + bf->priv->book_views = g_list_prepend(bf->priv->book_views, view); } static void @@ -684,9 +726,10 @@ pas_backend_file_init (PASBackendFile *backend) { PASBackendFilePrivate *priv; - priv = g_new0 (PASBackendFilePrivate, 1); - priv->loaded = FALSE; - priv->clients = NULL; + priv = g_new0 (PASBackendFilePrivate, 1); + priv->loaded = FALSE; + priv->clients = NULL; + priv->book_views = NULL; backend->priv = priv; } diff --git a/addressbook/backend/pas/pas-book-view.c b/addressbook/backend/pas/pas-book-view.c index fc706bc897..f712cc8ccf 100644 --- a/addressbook/backend/pas/pas-book-view.c +++ b/addressbook/backend/pas/pas-book-view.c @@ -50,6 +50,15 @@ pas_book_view_notify_change (PASBookView *book_view, CORBA_free(card_sequence._buffer); } +void +pas_book_view_notify_change_1 (PASBookView *book_view, + const char *card) +{ + GList *list = g_list_append(NULL, (char *) card); + pas_book_view_notify_change(book_view, list); + g_list_free(list); +} + /** * pas_book_view_notify_remove: */ @@ -89,7 +98,7 @@ pas_book_view_notify_add (PASBookView *book_view, card_sequence._length = length; for ( i = 0; cards; cards = g_list_next(cards), i++ ) { - card_sequence._buffer[i] = (char *) cards->data; + card_sequence._buffer[i] = CORBA_string_dup((char *) cards->data); } CORBA_exception_init (&ev); @@ -106,6 +115,15 @@ pas_book_view_notify_add (PASBookView *book_view, CORBA_free(card_sequence._buffer); } +void +pas_book_view_notify_add_1 (PASBookView *book_view, + const char *card) +{ + GList *list = g_list_append(NULL, (char *) card); + pas_book_view_notify_add(book_view, list); + g_list_free(list); +} + static gboolean pas_book_view_construct (PASBookView *book_view, Evolution_BookViewListener listener) diff --git a/addressbook/backend/pas/pas-book-view.h b/addressbook/backend/pas/pas-book-view.h index b742b2ba1a..9644c79de1 100644 --- a/addressbook/backend/pas/pas-book-view.h +++ b/addressbook/backend/pas/pas-book-view.h @@ -33,10 +33,14 @@ PASBookView *pas_book_view_new (Evolution_BookView void pas_book_view_notify_change (PASBookView *book_view, const GList *cards); +void pas_book_view_notify_change_1 (PASBookView *book_view, + const char *card); void pas_book_view_notify_remove (PASBookView *book_view, const char *id); void pas_book_view_notify_add (PASBookView *book_view, const GList *cards); +void pas_book_view_notify_add_1 (PASBookView *book_view, + const char *card); GtkType pas_book_view_get_type (void); |