aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/backend/ebook/test-card.c
blob: 62d9897c1843779ea511cba332da9f7b8f65fb2d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
#include <string.h>
#include "e-card.h"
#include <libgnome/gnome-init.h>

#define TEST_VCARD                     \
"BEGIN:VCARD\r\n"                      \
"FN:Nat\r\n"                           \
"N:Friedman;Nat;D;Mr.\r\n"             \
"ORG:Ximian, Inc.\r\n"                 \
"TITLE:Head Geek\r\n"                  \
"ROLE:Programmer/Executive\r\n"        \
"BDAY:1977-08-06\r\n"                  \
"TEL;WORK:617 679 1984\r\n"            \
"TEL;CELL:123 456 7890\r\n"            \
"EMAIL;INTERNET:nat@nat.org\r\n"       \
"EMAIL;INTERNET:nat@ximian.com\r\n"    \
"ADR;WORK;POSTAL:P.O. Box 101;;;Any Town;CA;91921-1234;\r\n" \
"ADR;HOME;POSTAL;INTL:P.O. Box 202;;;Any Town 2;MI;12344-4321;USA\r\n" \
"END:VCARD\r\n"                        \
"\r\n"

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)
{
    char  *cardstr;
    ECard *card;

    /* Fields */
    char *fname;
    char *org;
    char *org_unit;
        char *title;
    char *role;
    char *nickname;
    char *fburl;
    ECardName *name;
    EList *address;
    EList *phone;
    EList *email;
    EList *arbitrary;
    EIterator *iterator;
    ECardDate *bday;

    gnome_program_init("test-card", "0.0", LIBGNOME_MODULE, argc, argv, NULL);

    cardstr = NULL;
    if (argc == 2)
        cardstr = read_file (argv [1]);

    if (cardstr == NULL)
        cardstr = TEST_VCARD;
#if 0
    {
      int i;
      for ( i = 0; i < 100000; i++ ) {
        card = e_card_new (cardstr);
      
        g_object_unref (card);
      }
    }
#endif
    card = e_card_new_with_default_charset (cardstr, "ISO-8859-1");
    g_object_get(card,
             "full_name",  &fname,
             "name",       &name,
             "address",    &address,
             "phone",      &phone,
             "email",      &email,
             "org",        &org,
             "org_unit",   &org_unit,
             "title",      &title,
             "role",       &role,
             "nickname",   &nickname,
             "fburl",      &fburl,
             "arbitrary",  &arbitrary,
             "birth_date", &bday,
             NULL);
    if ( fname ) {
      printf("Name : %s\n", fname);
      g_free(fname);
    }
    if ( name ) {
      printf("Full Name:\n");
      if ( name->prefix )
        printf("  prefix     : %s\n", name->prefix);
      if ( name->given )
        printf("  given      : %s\n", name->given);
      if ( name->additional )
        printf("  additional : %s\n", name->additional);
      if ( name->family )
        printf("  family     : %s\n", name->family);
      if ( name->suffix )
        printf("  suffix     : %s\n", name->suffix);
    }
    if ( org ) {
      printf("Company : %s\n", org);
        }
    if ( org_unit ) {
      printf("Department : %s\n", org_unit);
        }
    if ( title ) {
      printf("Title : %s\n", title);
        }
    if ( role ) {
      printf("Profession : %s\n", role);
        }
    if ( nickname ) {
      printf("Nickname : %s\n", nickname);
        }
    if ( fburl ) {
      printf("Free Busy URL : %s\n", fburl);
    }
    if ( arbitrary ) {
      iterator = e_list_get_iterator(arbitrary);
      for (; e_iterator_is_valid(iterator); e_iterator_next(iterator)) {
            ECardArbitrary *arbitrary = (ECardArbitrary *) e_iterator_get(iterator);
        printf("Arbitrary : %s, %s\n", arbitrary->key, arbitrary->value);
      }
      g_object_unref(iterator);
    }
    if ( bday ) {
      printf("BDay : %4d-%02d-%02d\n", bday->year, bday->month, bday->day);
    }
    if ( email ) {
      iterator = e_list_get_iterator(address);
      for (; e_iterator_is_valid(iterator); e_iterator_next(iterator)) {
        printf("Email : %s\n", (char *) e_iterator_get(iterator));
      }
      g_object_unref(iterator);
    }
    if ( phone ) {
      iterator = e_list_get_iterator(address);
      for (; e_iterator_is_valid(iterator); e_iterator_next(iterator)) {
        ECardPhone *e_card_phone = (ECardPhone *) e_iterator_get(iterator);
        printf("Phone ; %d : %s\n", e_card_phone->flags, e_card_phone->number);
      }
      g_object_unref(iterator);
    }
    if ( address ) {
      iterator = e_list_get_iterator(address);
      for (; e_iterator_is_valid(iterator); e_iterator_next(iterator)) {
        ECardDeliveryAddress *del_address = (ECardDeliveryAddress *) e_iterator_get(iterator);
        printf("Address ; %d:\n", del_address->flags);
        if ( del_address->po )
          printf("  Po      : %s\n", del_address->po);
        if ( del_address->ext )
          printf("  Ext     : %s\n", del_address->ext);
        if ( del_address->street )
          printf("  Street  : %s\n", del_address->street);
        if ( del_address->city )
          printf("  City    : %s\n", del_address->city);
        if ( del_address->region )
          printf("  Region  : %s\n", del_address->region);
        if ( del_address->code )
          printf("  Code    : %s\n", del_address->code);
        if ( del_address->country )
          printf("  Country : %s\n", del_address->country);
      }
      g_object_unref(iterator);
    }
    printf("%s", e_card_get_vcard_assume_utf8(card));
    g_object_unref (card);

    return 0;
}