diff options
author | Christopher James Lahey <clahey@helixcode.com> | 2000-05-01 01:03:06 +0800 |
---|---|---|
committer | Chris Lahey <clahey@src.gnome.org> | 2000-05-01 01:03:06 +0800 |
commit | d87a10196cd82a391f9c2f937ee91dd9f06e5abe (patch) | |
tree | 0f39e8ecfe6495db3d32716ce5b20ffd50d9bca2 /addressbook/backend | |
parent | edf876f544a5f2010f117b0b609b557f9d2b1e04 (diff) | |
download | gsoc2013-evolution-d87a10196cd82a391f9c2f937ee91dd9f06e5abe.tar.gz gsoc2013-evolution-d87a10196cd82a391f9c2f937ee91dd9f06e5abe.tar.zst gsoc2013-evolution-d87a10196cd82a391f9c2f937ee91dd9f06e5abe.zip |
From addressbook/ChangeLog
2000-04-30 Christopher James Lahey <clahey@helixcode.com>
* backend/ebook/e-card.c: Make file as not have the : after it if
it's empty. If there's no name, or file_as, fill in these fields
with defaults based on full_name or name respectively.
* backend/ebook/load-pine-addressbook.c: New file to do import of
pine .addressbook files.
* backend/pas/pas-backend-file.c: Made empty fields act as the
empty string for searches.
* contact-editor/e-contact-editor.c,
contact-editor/e-contact-editor.h: Made the File As field update
properly as you edit the name and company fields. Added the pull
down list of File As choices. Made sure that all fields will
be set to NULL if they are deleted to the empty string.
* gui/minicard/e-minicard.c: Use the File As field instead of the
Full Name field for the header. Make identical compares on the
File As field do a compare on the uid.
From wombat/ChangeLog
2000-04-30 Christopher James Lahey <clahey@helixcode.com>
* Makefile.am: Added ename libs to LDADD.
svn path=/trunk/; revision=2696
Diffstat (limited to 'addressbook/backend')
-rw-r--r-- | addressbook/backend/ebook/e-card.c | 27 | ||||
-rw-r--r-- | addressbook/backend/ebook/load-pine-addressbook.c | 147 | ||||
-rw-r--r-- | addressbook/backend/pas/pas-backend-file.c | 3 |
3 files changed, 175 insertions, 2 deletions
diff --git a/addressbook/backend/ebook/e-card.c b/addressbook/backend/ebook/e-card.c index 2f0f05b97f..2eeec38b73 100644 --- a/addressbook/backend/ebook/e-card.c +++ b/addressbook/backend/ebook/e-card.c @@ -227,13 +227,15 @@ char vobj = newVObject (VCCardProp); - if ( card->file_as ) + if ( card->file_as && *card->file_as ) addPropValue(vobj, "X-EVOLUTION-FILE-AS", card->file_as); + else if (card->file_as) + addProp(vobj, "X-EVOLUTION-FILE_AS"); if ( card->fname ) addPropValue(vobj, VCFullNameProp, card->fname); - if ( card->name ) { + if ( card->name && (card->name->prefix || card->name->given || card->name->additional || card->name->family || card->name->suffix) ) { VObject *nameprop; nameprop = addProp(vobj, VCNameProp); if ( card->name->prefix ) @@ -705,6 +707,27 @@ parse(ECard *card, VObject *vobj) while(moreIteration (&iterator)) { parse_attribute(card, nextVObject(&iterator)); } + if (!card->name) { + if (card->fname) { + card->name = e_card_name_from_string(card->fname); + } + } + if (!card->file_as) { + if (card->name) { + ECardName *name = card->name; + char *strings[3], **stringptr; + char *string; + stringptr = strings; + if (name->family && *name->family) + *(stringptr++) = name->family; + if (name->given && *name->given) + *(stringptr++) = name->given; + *stringptr = NULL; + string = g_strjoinv(", ", strings); + card->file_as = string; + } else + card->file_as = g_strdup(""); + } } static void diff --git a/addressbook/backend/ebook/load-pine-addressbook.c b/addressbook/backend/ebook/load-pine-addressbook.c new file mode 100644 index 0000000000..8837a11a9a --- /dev/null +++ b/addressbook/backend/ebook/load-pine-addressbook.c @@ -0,0 +1,147 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +#include <config.h> +#include <bonobo.h> +#include <gnome.h> +#include <stdio.h> + +#include <e-book.h> + +static CORBA_Environment ev; + +#ifdef USING_OAF + +#include <liboaf/liboaf.h> + +static void +init_corba (int *argc, char **argv) +{ + gnome_init_with_popt_table("blah", "0.0", *argc, argv, NULL, 0, NULL); + + oaf_init (*argc, argv); +} + +#else + +#include <libgnorba/gnorba.h> + +static void +init_corba (int *argc, char **argv) +{ + gnome_CORBA_init_with_popt_table ( + "blah", "0.0", + argc, argv, NULL, 0, NULL, GNORBA_INIT_SERVER_FUNC, &ev); +} + +#endif + +static void +init_bonobo (int argc, char **argv) +{ + if (bonobo_init (CORBA_OBJECT_NIL, CORBA_OBJECT_NIL, CORBA_OBJECT_NIL) == FALSE) + g_error (_("Could not initialize Bonobo")); +} + +static void +add_card_cb (EBook *book, EBookStatus status, const gchar *id, gpointer closure) +{ + ECard *card = E_CARD(closure); + char *vcard = e_card_get_vcard(card); + g_print ("Saved card: %s\n", vcard); + g_free(vcard); + gtk_object_unref(GTK_OBJECT(card)); +} + +static void +book_open_cb (EBook *book, EBookStatus status, gpointer closure) +{ + FILE *fp = fopen (".addressbook", "r"); + char line[1024]; + while(fgets(line, 1024, fp)) { + int length = strlen(line); + char **strings; + ECardName *name; + ECard *card; + ECardList *list; + if (line[length - 1] == '\n') + line[--length] = 0; + + card = e_card_new(""); + strings = g_strsplit(line, "\t", 3); + name = e_card_name_from_string(strings[1]); + gtk_object_set(GTK_OBJECT(card), + "nickname", strings[0], + "full_name", strings[1], + "name", name, + NULL); + gtk_object_get(GTK_OBJECT(card), + "email", &list, + NULL); + e_card_list_append(list, strings[2]); + g_strfreev(strings); + e_book_add_card(book, card, add_card_cb, card); + } +} + +static guint +ebook_create (void) +{ + EBook *book; + + book = e_book_new (); + + if (!book) { + printf ("%s: %s(): Couldn't create EBook, bailing.\n", + __FILE__, + __FUNCTION__); + return FALSE; + } + + + if (! e_book_load_uri (book, "file:/tmp/test.db", book_open_cb, NULL)) { + printf ("error calling load_uri!\n"); + } + + + return FALSE; +} + +#if 0 +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); +} +#endif + +int +main (int argc, char **argv) +{ + + CORBA_exception_init (&ev); + + init_corba (&argc, argv); + init_bonobo (argc, argv); + + gtk_idle_add ((GtkFunction) ebook_create, NULL); + + bonobo_main (); + + return 0; +} diff --git a/addressbook/backend/pas/pas-backend-file.c b/addressbook/backend/pas/pas-backend-file.c index cbe75a5aba..20de42808c 100644 --- a/addressbook/backend/pas/pas-backend-file.c +++ b/addressbook/backend/pas/pas-backend-file.c @@ -287,6 +287,9 @@ entry_compare(PASBackendFileSearchContext *ctx, struct _ESExp *f, if (prop && compare(prop, argv[1]->value.string)) { truth = TRUE; } + if ((!prop) && compare("", argv[1]->value.string)) { + truth = TRUE; + } } else if (info->prop_type == PROP_TYPE_LIST) { /* the special searches that match any of the list elements */ |