1
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
3
* Copyright (C) 2009 Canonical Services Ltd (www.canonical.com)
5
* Authors: Rodrigo Moya <rodrigo.moya@canonical.com>
7
* This library is free software; you can redistribute it and/or
8
* modify it under the terms of version 2 of the GNU Lesser General Public
9
* License as published by the Free Software Foundation.
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
* General Public License for more details.
16
* You should have received a copy of the GNU Lesser General Public
17
* License along with this library; if not, write to the
18
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19
* Boston, MA 02110-1301, USA.
22
#include "couchdb-document-contact.h"
25
G_DEFINE_TYPE(CouchdbDocumentContact, couchdb_document_contact, COUCHDB_TYPE_DOCUMENT)
28
couchdb_document_contact_class_init (CouchdbDocumentContactClass *klass)
33
couchdb_document_contact_init (CouchdbDocumentContact *document)
35
couchdb_document_set_record_type (COUCHDB_DOCUMENT (document), COUCHDB_RECORD_TYPE_CONTACT);
39
* couchdb_document_contact_new:
41
* Create a new #CouchdbDocumentContact object.
43
CouchdbDocumentContact *
44
couchdb_document_contact_new (void)
46
return g_object_new (COUCHDB_TYPE_DOCUMENT_CONTACT, NULL);
50
couchdb_document_contact_get_title (CouchdbDocumentContact *document)
52
g_return_val_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document), NULL);
53
g_return_val_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)), NULL);
55
return couchdb_document_get_string_field (COUCHDB_DOCUMENT (document), "title");
59
couchdb_document_contact_set_title (CouchdbDocumentContact *document, const char *title)
61
g_return_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document));
62
g_return_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)));
63
g_return_if_fail (title != NULL);
65
couchdb_document_set_string_field (COUCHDB_DOCUMENT (document), "title", title);
69
couchdb_document_contact_get_first_name (CouchdbDocumentContact *document)
71
g_return_val_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document), NULL);
72
g_return_val_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)), NULL);
74
return couchdb_document_get_string_field (COUCHDB_DOCUMENT (document), "first_name");
78
couchdb_document_contact_set_first_name (CouchdbDocumentContact *document, const char *first_name)
80
g_return_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document));
81
g_return_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)));
82
g_return_if_fail (first_name != NULL);
84
couchdb_document_set_string_field (COUCHDB_DOCUMENT (document), "first_name", first_name);
88
couchdb_document_contact_get_middle_name (CouchdbDocumentContact *document)
90
g_return_val_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document), NULL);
91
g_return_val_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)), NULL);
93
return couchdb_document_get_string_field (COUCHDB_DOCUMENT (document), "middle_name");
97
couchdb_document_contact_set_middle_name (CouchdbDocumentContact *document, const char *middle_name)
99
g_return_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document));
100
g_return_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)));
101
g_return_if_fail (middle_name != NULL);
103
couchdb_document_set_string_field (COUCHDB_DOCUMENT (document), "middle_name", middle_name);
107
couchdb_document_contact_get_last_name (CouchdbDocumentContact *document)
109
g_return_val_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document), NULL);
110
g_return_val_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)), NULL);
112
return couchdb_document_get_string_field (COUCHDB_DOCUMENT (document), "last_name");
116
couchdb_document_contact_set_last_name (CouchdbDocumentContact *document, const char *last_name)
118
g_return_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document));
119
g_return_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)));
120
g_return_if_fail (last_name != NULL);
122
couchdb_document_set_string_field (COUCHDB_DOCUMENT (document), "last_name", last_name);
126
couchdb_document_contact_get_suffix (CouchdbDocumentContact *document)
128
g_return_val_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document), NULL);
129
g_return_val_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)), NULL);
131
return couchdb_document_get_string_field (COUCHDB_DOCUMENT (document), "suffix");
135
couchdb_document_contact_set_suffix (CouchdbDocumentContact *document, const char *suffix)
137
g_return_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document));
138
g_return_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)));
139
g_return_if_fail (suffix != NULL);
141
couchdb_document_set_string_field (COUCHDB_DOCUMENT (document), "suffix", suffix);
145
couchdb_document_contact_get_nick_name (CouchdbDocumentContact *document)
147
g_return_val_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document), NULL);
148
g_return_val_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)), NULL);
150
return couchdb_document_get_string_field (COUCHDB_DOCUMENT (document), "nick_name");
154
couchdb_document_contact_set_nick_name (CouchdbDocumentContact *document, const char *nick_name)
156
g_return_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document));
157
g_return_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)));
158
g_return_if_fail (nick_name != NULL);
160
couchdb_document_set_string_field (COUCHDB_DOCUMENT (document), "nick_name", nick_name);
164
couchdb_document_contact_get_spouse_name (CouchdbDocumentContact *document)
166
g_return_val_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document), NULL);
167
g_return_val_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)), NULL);
169
return couchdb_document_get_string_field (COUCHDB_DOCUMENT (document), "spouse_name");
173
couchdb_document_contact_set_spouse_name (CouchdbDocumentContact *document, const char *spouse_name)
175
g_return_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document));
176
g_return_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)));
177
g_return_if_fail (spouse_name != NULL);
179
couchdb_document_set_string_field (COUCHDB_DOCUMENT (document), "spouse_name", spouse_name);
183
couchdb_document_contact_get_birth_date (CouchdbDocumentContact *document)
187
g_return_val_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document), NULL);
188
g_return_val_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)), NULL);
190
return couchdb_document_get_string_field (COUCHDB_DOCUMENT (document), "birth_date");
194
couchdb_document_contact_set_birth_date (CouchdbDocumentContact *document, const char *birth_date)
196
g_return_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document));
197
g_return_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)));
198
g_return_if_fail (birth_date != NULL);
200
couchdb_document_set_string_field (COUCHDB_DOCUMENT (document), "birth_date", birth_date);
204
couchdb_document_contact_get_wedding_date (CouchdbDocumentContact *document)
208
g_return_val_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document), NULL);
209
g_return_val_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)), NULL);
211
return couchdb_document_get_string_field (COUCHDB_DOCUMENT (document), "wedding_date");
215
couchdb_document_contact_set_wedding_date (CouchdbDocumentContact *document, const char *wedding_date)
217
g_return_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document));
218
g_return_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)));
219
g_return_if_fail (wedding_date != NULL);
221
couchdb_document_set_string_field (COUCHDB_DOCUMENT (document), "wedding_date", wedding_date);
225
couchdb_document_contact_get_company (CouchdbDocumentContact *document)
227
g_return_val_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document), NULL);
228
g_return_val_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)), NULL);
230
return couchdb_document_get_string_field (COUCHDB_DOCUMENT (document), "company");
234
couchdb_document_contact_set_company (CouchdbDocumentContact *document, const char *company)
236
g_return_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document));
237
g_return_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)));
238
g_return_if_fail (company != NULL);
240
couchdb_document_set_string_field (COUCHDB_DOCUMENT (document), "company", company);
244
couchdb_document_contact_get_department (CouchdbDocumentContact *document)
246
g_return_val_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document), NULL);
247
g_return_val_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)), NULL);
249
return couchdb_document_get_string_field (COUCHDB_DOCUMENT (document), "department");
253
couchdb_document_contact_set_department (CouchdbDocumentContact *document, const char *department)
255
g_return_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document));
256
g_return_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)));
257
g_return_if_fail (department != NULL);
259
couchdb_document_set_string_field (COUCHDB_DOCUMENT (document), "department", department);
263
couchdb_document_contact_get_job_title (CouchdbDocumentContact *document)
265
g_return_val_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document), NULL);
266
g_return_val_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)), NULL);
268
return couchdb_document_get_string_field (COUCHDB_DOCUMENT (document), "job_title");
272
couchdb_document_contact_set_job_title (CouchdbDocumentContact *document, const char *job_title)
274
g_return_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document));
275
g_return_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)));
276
g_return_if_fail (job_title != NULL);
278
couchdb_document_set_string_field (COUCHDB_DOCUMENT (document), "job_title", job_title);
282
couchdb_document_contact_get_manager_name (CouchdbDocumentContact *document)
284
g_return_val_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document), NULL);
285
g_return_val_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)), NULL);
287
return couchdb_document_get_string_field (COUCHDB_DOCUMENT (document), "manager_name");
291
couchdb_document_contact_set_manager_name (CouchdbDocumentContact *document, const char *manager_name)
293
g_return_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document));
294
g_return_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)));
295
g_return_if_fail (manager_name != NULL);
297
couchdb_document_set_string_field (COUCHDB_DOCUMENT (document), "manager_name", manager_name);
301
couchdb_document_contact_get_assistant_name (CouchdbDocumentContact *document)
303
g_return_val_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document), NULL);
304
g_return_val_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)), NULL);
306
return couchdb_document_get_string_field (COUCHDB_DOCUMENT (document), "assistant_name");
310
couchdb_document_contact_set_assistant_name (CouchdbDocumentContact *document, const char *assistant_name)
312
g_return_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document));
313
g_return_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)));
314
g_return_if_fail (assistant_name != NULL);
316
couchdb_document_set_string_field (COUCHDB_DOCUMENT (document), "assistant_name", assistant_name);
320
couchdb_document_contact_get_office (CouchdbDocumentContact *document)
322
g_return_val_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document), NULL);
323
g_return_val_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)), NULL);
325
return couchdb_document_get_string_field (COUCHDB_DOCUMENT (document), "office");
329
couchdb_document_contact_set_office (CouchdbDocumentContact *document, const char *office)
331
g_return_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document));
332
g_return_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)));
333
g_return_if_fail (office != NULL);
335
couchdb_document_set_string_field (COUCHDB_DOCUMENT (document), "office", office);
339
foreach_object_cb (JsonObject *object,
340
const char *member_name,
341
JsonNode *member_node,
344
GSList **list = (GSList **) user_data;
346
if (json_node_get_node_type (member_node) == JSON_NODE_OBJECT) {
347
CouchdbStructField *sf;
349
sf = couchdb_struct_field_new_from_json_object (
350
json_object_ref (json_node_get_object (member_node)));
351
couchdb_struct_field_set_uuid (sf, member_name);
352
*list = g_slist_prepend (*list, sf);
357
* couchdb_document_contact_get_email_addresses:
358
* @document: A #CouchdbDocumentContact object representing a contact
360
* Retrieve a list of email addresses from the specified contact document.
361
* Email addresses are returned in a GSList of #CouchdbStructField objects,
362
* which can be manipulated with the couchdb_document_contact_email_* functions
364
* g_slist_foreach (list, (GFunc) couchdb_struct_field_unref, NULL);
365
* g_slist_free (list);
367
* Return value: a #GSList of #CouchdbStructField objects.
370
couchdb_document_contact_get_email_addresses (CouchdbDocumentContact *document)
373
JsonObject *addresses_json;
375
g_return_val_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document), NULL);
376
g_return_val_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)), NULL);
378
addresses_json = json_object_get_object_member (
379
couchdb_document_get_json_object (COUCHDB_DOCUMENT (document)), "email_addresses");;
380
if (addresses_json) {
381
json_object_foreach_member (addresses_json,
382
(JsonObjectForeach) foreach_object_cb,
390
couchdb_document_contact_set_email_addresses (CouchdbDocumentContact *document, GSList *list)
393
JsonObject *addresses_json;
395
g_return_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document));
397
addresses_json = json_object_new ();
398
for (l = list; l != NULL; l = l->next) {
399
const gchar *address_str;
400
CouchdbStructField *sf = (CouchdbStructField *) l->data;
402
address_str = couchdb_document_contact_email_get_address (sf);
404
JsonObject *this_address;
406
this_address = json_object_new ();
407
json_object_set_string_member (this_address, "address", address_str);
408
json_object_set_string_member (this_address, "description",
409
couchdb_document_contact_email_get_description (sf));
411
json_object_set_object_member (addresses_json,
412
couchdb_struct_field_get_uuid (sf),
417
json_object_set_object_member (couchdb_document_get_json_object (COUCHDB_DOCUMENT (document)),
423
couchdb_document_contact_get_phone_numbers (CouchdbDocumentContact *document)
426
JsonObject *phone_numbers;
428
g_return_val_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document), NULL);
429
g_return_val_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)), NULL);
431
phone_numbers = json_object_get_object_member (
432
couchdb_document_get_json_object (COUCHDB_DOCUMENT (document)), "phone_numbers");
434
json_object_foreach_member (phone_numbers,
435
(JsonObjectForeach) foreach_object_cb,
443
couchdb_document_contact_set_phone_numbers (CouchdbDocumentContact *document, GSList *list)
446
JsonObject *phone_numbers;
448
g_return_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document));
450
phone_numbers = json_object_new ();
451
for (l = list; l != NULL; l = l->next) {
452
const gchar *number_str;
453
CouchdbStructField *sf = (CouchdbStructField *) l->data;
455
number_str = couchdb_document_contact_phone_get_number (sf);
457
JsonObject *this_phone;
459
this_phone = json_object_new ();
460
json_object_set_string_member (this_phone, "number", number_str);
461
json_object_set_string_member (this_phone, "description",
462
couchdb_document_contact_phone_get_description (sf));
463
json_object_set_int_member (this_phone, "priority",
464
couchdb_document_contact_phone_get_priority (sf));
466
json_object_set_object_member (phone_numbers,
467
couchdb_struct_field_get_uuid (sf),
472
json_object_set_object_member (couchdb_document_get_json_object (COUCHDB_DOCUMENT (document)),
473
"phone_numbers", phone_numbers);
477
couchdb_document_contact_get_addresses (CouchdbDocumentContact *document)
480
JsonObject *addresses;
482
g_return_val_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document), NULL);
483
g_return_val_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)), NULL);
485
addresses = json_object_get_object_member (
486
couchdb_document_get_json_object (COUCHDB_DOCUMENT (document)), "addresses");
488
json_object_foreach_member (addresses,
489
(JsonObjectForeach) foreach_object_cb,
497
couchdb_document_contact_set_addresses (CouchdbDocumentContact *document, GSList *list)
500
JsonObject *addresses;
502
g_return_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document));
504
addresses = json_object_new ();
505
for (l = list; l != NULL; l = l->next) {
506
const gchar *street_str;
507
CouchdbStructField *sf = (CouchdbStructField *) l->data;
509
street_str = couchdb_document_contact_address_get_street (sf);
511
JsonObject *this_address;
513
this_address = json_object_new ();
515
json_object_set_string_member (this_address, "address1", street_str);
516
json_object_set_string_member (this_address, "address2",
517
couchdb_document_contact_address_get_ext_street (sf));
518
json_object_set_string_member (this_address, "city",
519
couchdb_document_contact_address_get_city (sf));
520
json_object_set_string_member (this_address, "state",
521
couchdb_document_contact_address_get_state (sf));
522
json_object_set_string_member (this_address, "country",
523
couchdb_document_contact_address_get_country (sf));
524
json_object_set_string_member (this_address, "postalcode",
525
couchdb_document_contact_address_get_postalcode (sf));
526
json_object_set_string_member (this_address, "pobox",
527
couchdb_document_contact_address_get_pobox (sf));
528
json_object_set_string_member (this_address, "description",
529
couchdb_document_contact_address_get_description (sf));
531
json_object_set_object_member (addresses,
532
couchdb_struct_field_get_uuid (sf),
537
json_object_set_object_member (couchdb_document_get_json_object (COUCHDB_DOCUMENT (document)),
538
"addresses", addresses);
542
couchdb_document_contact_get_im_addresses (CouchdbDocumentContact *document)
545
JsonObject *im_addresses;
547
g_return_val_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document), NULL);
548
g_return_val_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)), NULL);
550
im_addresses = json_object_get_object_member (
551
couchdb_document_get_json_object (COUCHDB_DOCUMENT (document)), "im_addresses");
552
if (im_addresses != NULL) {
553
json_object_foreach_member (im_addresses,
554
(JsonObjectForeach) foreach_object_cb,
562
couchdb_document_contact_set_im_addresses (CouchdbDocumentContact *document, GSList *list)
565
JsonObject *im_addresses_json;
567
g_return_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document));
569
im_addresses_json = json_object_new ();
570
for (l = list; l != NULL; l = l->next) {
571
const gchar *address_str;
572
CouchdbStructField *sf = (CouchdbStructField *) l->data;
574
address_str = couchdb_document_contact_im_get_address (sf);
575
if (address_str != NULL) {
576
JsonObject *this_address;
578
this_address = json_object_new ();
579
json_object_set_string_member (this_address, "address", address_str);
580
json_object_set_string_member (this_address, "description",
581
couchdb_document_contact_im_get_description (sf));
582
json_object_set_string_member (this_address, "protocol",
583
couchdb_document_contact_im_get_protocol (sf));
585
json_object_set_object_member (im_addresses_json,
586
couchdb_struct_field_get_uuid (sf),
591
json_object_set_object_member (couchdb_document_get_json_object (COUCHDB_DOCUMENT (document)),
592
"im_addresses", im_addresses_json);
596
couchdb_document_contact_get_urls (CouchdbDocumentContact *document)
601
g_return_val_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document), NULL);
602
g_return_val_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)), NULL);
604
urls = json_object_get_object_member (
605
couchdb_document_get_json_object (COUCHDB_DOCUMENT (document)), "urls");
607
json_object_foreach_member (urls,
608
(JsonObjectForeach) foreach_object_cb,
616
couchdb_document_contact_set_urls (CouchdbDocumentContact *document, GSList *list)
619
JsonObject *urls_json;
621
g_return_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document));
623
urls_json = json_object_new ();
624
for (l = list; l != NULL; l = l->next) {
625
const gchar *address_str;
626
CouchdbStructField *sf = (CouchdbStructField *) l->data;
628
address_str = couchdb_document_contact_url_get_address (sf);
630
JsonObject *this_url;
632
this_url = json_object_new ();
633
json_object_set_string_member (this_url, "address", address_str);
634
json_object_set_string_member (this_url, "description",
635
couchdb_document_contact_url_get_description (sf));
637
json_object_set_object_member (urls_json,
638
couchdb_struct_field_get_uuid (sf),
643
json_object_set_object_member (couchdb_document_get_json_object (COUCHDB_DOCUMENT (document)),
648
* couchdb_document_contact_get_categories:
649
* @document: A #CouchdbDocumentContact object
651
* Get the list of categories (as a string) for this contact document.
653
* Return value: A comma separated list of categories as a string.
656
couchdb_document_contact_get_categories (CouchdbDocumentContact *document)
658
g_return_val_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document), NULL);
659
g_return_val_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)), NULL);
661
return couchdb_document_get_string_field (COUCHDB_DOCUMENT (document), "categories");
665
couchdb_document_contact_set_categories (CouchdbDocumentContact *document, const char *categories)
667
g_return_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document));
668
g_return_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)));
669
g_return_if_fail (categories != NULL);
671
couchdb_document_set_string_field (COUCHDB_DOCUMENT (document), "categories", categories);
675
couchdb_document_contact_get_notes (CouchdbDocumentContact *document)
677
g_return_val_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document), NULL);
678
g_return_val_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)), NULL);
680
return couchdb_document_get_string_field (COUCHDB_DOCUMENT (document), "notes");
684
couchdb_document_contact_set_notes (CouchdbDocumentContact *document, const char *notes)
686
g_return_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document));
687
g_return_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)));
688
g_return_if_fail (notes != NULL);
690
couchdb_document_set_string_field (COUCHDB_DOCUMENT (document), "notes", notes);
694
couchdb_document_contact_email_new (const char *uuid, const char *address, const char *description)
696
CouchdbStructField *sf;
698
sf = couchdb_struct_field_new_from_json_object (json_object_new ());
700
couchdb_struct_field_set_uuid (sf, uuid);
702
char *new_uuid = generate_uuid ();
703
couchdb_struct_field_set_uuid (sf, new_uuid);
708
couchdb_document_contact_email_set_address (sf, address);
710
couchdb_document_contact_email_set_description (sf, description);
716
couchdb_document_contact_email_get_address (CouchdbStructField *sf)
718
g_return_val_if_fail (sf != NULL, NULL);
720
return couchdb_struct_field_get_string_field (sf, "address");
724
couchdb_document_contact_email_set_address (CouchdbStructField *sf, const char *email)
726
g_return_if_fail (sf != NULL);
727
g_return_if_fail (email != NULL);
729
couchdb_struct_field_set_string_field (sf, "address", email);
733
couchdb_document_contact_email_get_description (CouchdbStructField *sf)
735
g_return_val_if_fail (sf != NULL, NULL);
737
return couchdb_struct_field_get_string_field (sf, "description");
741
couchdb_document_contact_email_set_description (CouchdbStructField *sf, const char *description)
743
g_return_if_fail (sf != NULL);
745
couchdb_struct_field_set_string_field (sf, "description", description);
749
couchdb_document_contact_phone_new (const char *uuid, const char *number, const char *description, gint priority)
751
CouchdbStructField *sf;
753
sf = couchdb_struct_field_new_from_json_object (json_object_new ());
755
couchdb_struct_field_set_uuid (sf, uuid);
757
char *new_uuid = generate_uuid ();
758
couchdb_struct_field_set_uuid (sf, new_uuid);
763
couchdb_document_contact_phone_set_number (sf, number);
765
couchdb_document_contact_phone_set_description (sf, description);
766
couchdb_document_contact_phone_set_priority (sf, priority);
772
couchdb_document_contact_phone_get_priority (CouchdbStructField *sf)
774
g_return_val_if_fail (sf != NULL, 0);
776
return couchdb_struct_field_get_int_field (sf, "priority");
780
couchdb_document_contact_phone_set_priority (CouchdbStructField *sf, gint priority)
782
g_return_if_fail (sf != NULL);
784
couchdb_struct_field_set_int_field (sf, "priority", priority);
788
couchdb_document_contact_phone_get_number (CouchdbStructField *sf)
790
g_return_val_if_fail (sf != NULL, NULL);
792
return couchdb_struct_field_get_string_field (sf, "number");
796
couchdb_document_contact_phone_set_number (CouchdbStructField *sf, const char *number)
798
g_return_if_fail (sf != NULL);
799
g_return_if_fail (number != NULL);
801
couchdb_struct_field_set_string_field (sf, "number", number);
805
couchdb_document_contact_phone_get_description (CouchdbStructField *sf)
807
g_return_val_if_fail (sf != NULL, NULL);
809
return couchdb_struct_field_get_string_field (sf, "description");
813
couchdb_document_contact_phone_set_description (CouchdbStructField *sf, const char *description)
815
g_return_if_fail (sf != NULL);
817
couchdb_struct_field_set_string_field (sf, "description", description);
821
couchdb_document_contact_address_new (const char *uuid,
823
const char *ext_street,
827
const char *postalcode,
829
const char *description)
831
CouchdbStructField *sf;
833
sf = couchdb_struct_field_new_from_json_object (json_object_new ());
835
couchdb_struct_field_set_uuid (sf, uuid);
837
char *new_uuid = generate_uuid ();
838
couchdb_struct_field_set_uuid (sf, new_uuid);
843
couchdb_document_contact_address_set_street (sf, street);
845
couchdb_document_contact_address_set_ext_street (sf, ext_street);
847
couchdb_document_contact_address_set_city (sf, city);
849
couchdb_document_contact_address_set_state (sf, state);
851
couchdb_document_contact_address_set_country (sf, country);
853
couchdb_document_contact_address_set_postalcode (sf, postalcode);
855
couchdb_document_contact_address_set_pobox (sf, pobox);
857
couchdb_document_contact_address_set_description (sf, description);
863
couchdb_document_contact_address_get_street (CouchdbStructField *sf)
865
g_return_val_if_fail (sf != NULL, NULL);
867
if (couchdb_struct_field_has_field (sf, "address1"))
868
return couchdb_struct_field_get_string_field (sf, "address1");
869
else if (couchdb_struct_field_has_field (sf, "street"))
870
return couchdb_struct_field_get_string_field (sf, "street");
876
couchdb_document_contact_address_set_street (CouchdbStructField *sf, const char *street)
878
g_return_if_fail (sf != NULL);
880
couchdb_struct_field_set_string_field (sf, "address1", street);
884
couchdb_document_contact_address_get_ext_street (CouchdbStructField *sf)
886
g_return_val_if_fail (sf != NULL, NULL);
888
return couchdb_struct_field_get_string_field (sf, "address2");
892
couchdb_document_contact_address_set_ext_street (CouchdbStructField *sf, const char *ext_street)
894
g_return_if_fail (sf != NULL);
896
couchdb_struct_field_set_string_field (sf, "address2", ext_street);
900
couchdb_document_contact_address_get_city (CouchdbStructField *sf)
902
g_return_val_if_fail (sf != NULL, NULL);
904
return couchdb_struct_field_get_string_field (sf, "city");
908
couchdb_document_contact_address_set_city (CouchdbStructField *sf, const char *city)
910
g_return_if_fail (sf != NULL);
912
couchdb_struct_field_set_string_field (sf, "city", city);
916
couchdb_document_contact_address_get_state (CouchdbStructField *sf)
918
g_return_val_if_fail (sf != NULL, NULL);
920
return couchdb_struct_field_get_string_field (sf, "state");
924
couchdb_document_contact_address_set_state (CouchdbStructField *sf, const char *state)
926
g_return_if_fail (sf != NULL);
928
couchdb_struct_field_set_string_field (sf, "state", state);
932
couchdb_document_contact_address_get_country (CouchdbStructField *sf)
934
g_return_val_if_fail (sf != NULL, NULL);
936
return couchdb_struct_field_get_string_field (sf, "country");
940
couchdb_document_contact_address_set_country (CouchdbStructField *sf, const char *country)
942
g_return_if_fail (sf != NULL);
944
couchdb_struct_field_set_string_field (sf, "country", country);
948
couchdb_document_contact_address_get_postalcode (CouchdbStructField *sf)
950
g_return_val_if_fail (sf != NULL, NULL);
952
return couchdb_struct_field_get_string_field (sf, "postalcode");
956
couchdb_document_contact_address_set_postalcode (CouchdbStructField *sf, const char *postalcode)
958
g_return_if_fail (sf != NULL);
960
couchdb_struct_field_set_string_field (sf, "postalcode", postalcode);
964
couchdb_document_contact_address_get_pobox (CouchdbStructField *sf)
966
g_return_val_if_fail (sf != NULL, NULL);
968
return couchdb_struct_field_get_string_field (sf, "pobox");
972
couchdb_document_contact_address_set_pobox (CouchdbStructField *sf, const char *pobox)
974
g_return_if_fail (sf != NULL);
976
couchdb_struct_field_set_string_field (sf, "pobox", pobox);
980
couchdb_document_contact_address_get_description (CouchdbStructField *sf)
982
g_return_val_if_fail (sf != NULL, NULL);
984
return couchdb_struct_field_get_string_field (sf, "description");
988
couchdb_document_contact_address_set_description (CouchdbStructField *sf, const char *description)
990
g_return_if_fail (sf != NULL);
992
couchdb_struct_field_set_string_field (sf, "description", description);
996
couchdb_document_contact_im_new (const char *uuid,
998
const char *description,
999
const char *protocol)
1001
CouchdbStructField *sf;
1003
sf = couchdb_struct_field_new_from_json_object (json_object_new ());
1005
couchdb_struct_field_set_uuid (sf, uuid);
1007
char *new_uuid = generate_uuid ();
1008
couchdb_struct_field_set_uuid (sf, new_uuid);
1012
if (address != NULL)
1013
couchdb_document_contact_im_set_address (sf, address);
1014
if (description != NULL)
1015
couchdb_document_contact_im_set_description (sf, description);
1016
if (protocol != NULL)
1017
couchdb_document_contact_im_set_protocol (sf, protocol);
1023
couchdb_document_contact_im_get_address (CouchdbStructField *sf)
1025
g_return_val_if_fail (sf != NULL, NULL);
1027
return couchdb_struct_field_get_string_field (sf, "address");
1031
couchdb_document_contact_im_set_address (CouchdbStructField *sf, const char *address)
1033
g_return_if_fail (sf != NULL);
1034
g_return_if_fail (address != NULL);
1036
couchdb_struct_field_set_string_field (sf, "address", address);
1040
couchdb_document_contact_im_get_description (CouchdbStructField *sf)
1042
g_return_val_if_fail (sf != NULL, NULL);
1044
return couchdb_struct_field_get_string_field (sf, "description");
1048
couchdb_document_contact_im_set_description (CouchdbStructField *sf, const char *description)
1050
g_return_if_fail (sf != NULL);
1051
g_return_if_fail (description != NULL);
1053
couchdb_struct_field_set_string_field (sf, "description", description);
1057
couchdb_document_contact_im_get_protocol (CouchdbStructField *sf)
1059
g_return_val_if_fail (sf != NULL, NULL);
1061
return couchdb_struct_field_get_string_field (sf, "protocol");
1065
couchdb_document_contact_im_set_protocol (CouchdbStructField *sf, const char *protocol)
1067
g_return_if_fail (sf != NULL);
1068
g_return_if_fail (protocol != NULL);
1070
couchdb_struct_field_set_string_field (sf, "protocol", protocol);
1073
CouchdbStructField *
1074
couchdb_document_contact_url_new (const char *uuid, const char *address, const char *description)
1076
CouchdbStructField *sf;
1078
sf = couchdb_struct_field_new_from_json_object (json_object_new ());
1080
couchdb_struct_field_set_uuid (sf, uuid);
1082
char *new_uuid = generate_uuid ();
1083
couchdb_struct_field_set_uuid (sf, new_uuid);
1088
couchdb_document_contact_url_set_address (sf, address);
1090
couchdb_document_contact_url_set_description (sf, description);
1096
couchdb_document_contact_url_get_address (CouchdbStructField *sf)
1098
g_return_val_if_fail (sf != NULL, NULL);
1100
return couchdb_struct_field_get_string_field (sf, "address");
1104
couchdb_document_contact_url_set_address (CouchdbStructField *sf, const char *url)
1106
g_return_if_fail (sf != NULL);
1107
g_return_if_fail (url != NULL);
1109
couchdb_struct_field_set_string_field (sf, "address", url);
1113
couchdb_document_contact_url_get_description (CouchdbStructField *sf)
1115
g_return_val_if_fail (sf != NULL, NULL);
1117
return couchdb_struct_field_get_string_field (sf, "description");
1121
couchdb_document_contact_url_set_description (CouchdbStructField *sf, const char *description)
1123
g_return_if_fail (sf != NULL);
1125
couchdb_struct_field_set_string_field (sf, "description", description);