aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/backend
diff options
context:
space:
mode:
authorChristopher James Lahey <clahey@helixcode.com>2000-05-01 01:03:06 +0800
committerChris Lahey <clahey@src.gnome.org>2000-05-01 01:03:06 +0800
commitd87a10196cd82a391f9c2f937ee91dd9f06e5abe (patch)
tree0f39e8ecfe6495db3d32716ce5b20ffd50d9bca2 /addressbook/backend
parentedf876f544a5f2010f117b0b609b557f9d2b1e04 (diff)
downloadgsoc2013-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.c27
-rw-r--r--addressbook/backend/ebook/load-pine-addressbook.c147
-rw-r--r--addressbook/backend/pas/pas-backend-file.c3
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 */