1*cdf0e10cSrcweir  /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir 
28*cdf0e10cSrcweir #ifndef _CONNECTIVITY_EVOAB_EVOLUTION_API_HXX_
29*cdf0e10cSrcweir #define _CONNECTIVITY_EVOAB_EVOLUTION_API_HXX_
30*cdf0e10cSrcweir #include <glib-object.h>
31*cdf0e10cSrcweir 
32*cdf0e10cSrcweir // Initializes the API below, returns false if not available
33*cdf0e10cSrcweir bool EApiInit();
34*cdf0e10cSrcweir 
35*cdf0e10cSrcweir G_BEGIN_DECLS
36*cdf0e10cSrcweir 
37*cdf0e10cSrcweir // This header defined all the API methods as
38*cdf0e10cSrcweir // function pointers instead of real functions
39*cdf0e10cSrcweir // this will all evaporate as it is compiled generating
40*cdf0e10cSrcweir // no symbol lookups or relocations, but giving code
41*cdf0e10cSrcweir // clarity.
42*cdf0e10cSrcweir 
43*cdf0e10cSrcweir // We attempt to define a minimum API that we use:
44*cdf0e10cSrcweir 
45*cdf0e10cSrcweir // e-contact.h
46*cdf0e10cSrcweir #ifdef DECLARE_FN_POINTERS
47*cdf0e10cSrcweir #define EAPI_EXTERN
48*cdf0e10cSrcweir #else
49*cdf0e10cSrcweir #define EAPI_EXTERN extern
50*cdf0e10cSrcweir #endif
51*cdf0e10cSrcweir 
52*cdf0e10cSrcweir 
53*cdf0e10cSrcweir typedef void EContact;
54*cdf0e10cSrcweir #define E_CONTACT(a) ((EContact *)(a))
55*cdf0e10cSrcweir #define E_TYPE_CONTACT (e_contact_get_type())
56*cdf0e10cSrcweir typedef int EContactField;
57*cdf0e10cSrcweir 
58*cdf0e10cSrcweir EAPI_EXTERN const char      *(*e_contact_field_name)   ( EContactField field_id);
59*cdf0e10cSrcweir EAPI_EXTERN gpointer      	(*e_contact_get)   (EContact *contact, EContactField field_id);
60*cdf0e10cSrcweir EAPI_EXTERN gconstpointer  (*e_contact_get_const)   (EContact *contact, EContactField field_id);
61*cdf0e10cSrcweir // e-source.h
62*cdf0e10cSrcweir typedef void ESource;
63*cdf0e10cSrcweir #define E_SOURCE(a) ((ESource *)(a))
64*cdf0e10cSrcweir EAPI_EXTERN const char  *(*e_source_peek_name)    (ESource *source);
65*cdf0e10cSrcweir EAPI_EXTERN const gchar *(*e_source_get_property) (ESource *source,
66*cdf0e10cSrcweir 				       const gchar *property);
67*cdf0e10cSrcweir 
68*cdf0e10cSrcweir EAPI_EXTERN GType         (*e_contact_get_type) (void);
69*cdf0e10cSrcweir EAPI_EXTERN EContactField (*e_contact_field_id) (const char *field_name);
70*cdf0e10cSrcweir 
71*cdf0e10cSrcweir // e-source-list.h
72*cdf0e10cSrcweir typedef void ESourceList;
73*cdf0e10cSrcweir EAPI_EXTERN GSList *(*e_source_list_peek_groups) (ESourceList *list);
74*cdf0e10cSrcweir 
75*cdf0e10cSrcweir // e-source-group.h
76*cdf0e10cSrcweir typedef void ESourceGroup;
77*cdf0e10cSrcweir #define E_SOURCE_GROUP(a) ((ESourceGroup *)(a))
78*cdf0e10cSrcweir 
79*cdf0e10cSrcweir EAPI_EXTERN GSList  *(*e_source_group_peek_sources) (ESourceGroup *group);
80*cdf0e10cSrcweir EAPI_EXTERN const char *(*e_source_group_peek_base_uri)  (ESourceGroup *group);
81*cdf0e10cSrcweir // e-book.h
82*cdf0e10cSrcweir typedef enum {
83*cdf0e10cSrcweir   E_BOOK_QUERY_IS,
84*cdf0e10cSrcweir   E_BOOK_QUERY_CONTAINS,
85*cdf0e10cSrcweir   E_BOOK_QUERY_BEGINS_WITH,
86*cdf0e10cSrcweir   E_BOOK_QUERY_ENDS_WITH,
87*cdf0e10cSrcweir } EBookQueryTest;
88*cdf0e10cSrcweir 
89*cdf0e10cSrcweir typedef void EBook;
90*cdf0e10cSrcweir typedef void EBookQuery;
91*cdf0e10cSrcweir 
92*cdf0e10cSrcweir EAPI_EXTERN EBook      *(*e_book_new) 		(ESource      *source,
93*cdf0e10cSrcweir 								       		 GError      **error);
94*cdf0e10cSrcweir 
95*cdf0e10cSrcweir EAPI_EXTERN gboolean    (*e_book_open)		(EBook       *book,
96*cdf0e10cSrcweir 					       				 	 gboolean     only_if_exists,
97*cdf0e10cSrcweir 				                         	 GError     **error);
98*cdf0e10cSrcweir 
99*cdf0e10cSrcweir EAPI_EXTERN const char *(*e_book_get_uri)	(EBook        *book);
100*cdf0e10cSrcweir EAPI_EXTERN ESource    *(*e_book_get_source)(EBook        *book);
101*cdf0e10cSrcweir 
102*cdf0e10cSrcweir EAPI_EXTERN gboolean    (*e_book_get_addressbooks)        (ESourceList **addressbook_sources,
103*cdf0e10cSrcweir 													       GError      **error);
104*cdf0e10cSrcweir 
105*cdf0e10cSrcweir EAPI_EXTERN gboolean    (*e_book_get_contacts)            (EBook        *book,
106*cdf0e10cSrcweir 													       EBookQuery   *query,
107*cdf0e10cSrcweir 													       GList       **contacts,
108*cdf0e10cSrcweir 													       GError      **error);
109*cdf0e10cSrcweir 
110*cdf0e10cSrcweir EAPI_EXTERN gboolean    (*e_book_authenticate_user)       (EBook        *book,
111*cdf0e10cSrcweir 													       const char   *user,
112*cdf0e10cSrcweir 													       const char   *passwd,
113*cdf0e10cSrcweir 													       const char   *auth_method,
114*cdf0e10cSrcweir 													       GError      **error);
115*cdf0e10cSrcweir 
116*cdf0e10cSrcweir // e-book-query.h
117*cdf0e10cSrcweir EAPI_EXTERN EBookQuery* (*e_book_query_field_exists) (EContactField   field);
118*cdf0e10cSrcweir EAPI_EXTERN EBookQuery* (*e_book_query_field_test)   (EContactField   field,
119*cdf0e10cSrcweir 					  								  EBookQueryTest     test,
120*cdf0e10cSrcweir 													  const char        *value);
121*cdf0e10cSrcweir EAPI_EXTERN EBookQuery* (*e_book_query_and)          (int nqs, EBookQuery **qs, gboolean unref);
122*cdf0e10cSrcweir EAPI_EXTERN EBookQuery* (*e_book_query_or)           (int nqs, EBookQuery **qs, gboolean unref);
123*cdf0e10cSrcweir EAPI_EXTERN EBookQuery* (*e_book_query_not)          (EBookQuery *q, gboolean unref);
124*cdf0e10cSrcweir EAPI_EXTERN EBookQuery* (*e_book_query_ref)          (EBookQuery *q);
125*cdf0e10cSrcweir EAPI_EXTERN void        (*e_book_query_unref)        (EBookQuery *q);
126*cdf0e10cSrcweir EAPI_EXTERN char*       (*e_book_query_to_string)    (EBookQuery *q);
127*cdf0e10cSrcweir EAPI_EXTERN EBookQuery* (*e_book_query_from_string)   (const char *query_string);
128*cdf0e10cSrcweir 
129*cdf0e10cSrcweir typedef struct {
130*cdf0e10cSrcweir         char *address_format; /* the two letter country code that
131*cdf0e10cSrcweir                                  determines the format/meaning of the
132*cdf0e10cSrcweir                                  following fields */
133*cdf0e10cSrcweir         char *po;
134*cdf0e10cSrcweir         char *ext;
135*cdf0e10cSrcweir         char *street;
136*cdf0e10cSrcweir         char *locality;
137*cdf0e10cSrcweir         char *region;
138*cdf0e10cSrcweir         char *code;
139*cdf0e10cSrcweir         char *country;
140*cdf0e10cSrcweir } EContactAddress;
141*cdf0e10cSrcweir G_END_DECLS
142*cdf0e10cSrcweir #endif
143*cdf0e10cSrcweir 
144