aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/backend/idl/addressbook.idl
blob: 193d1246abb975a1f3a49ae2335518cd57056333 (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
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
/*
 *
 * Author:
 *   Nat Friedman (nat@ximian.com)
 *
 * Copyright 2000, Ximian, Inc.
 */

#include <Bonobo.idl>

module GNOME {
module Evolution {
module Addressbook {
    typedef string ContactId;
    typedef string VCard;
    typedef sequence<VCard> VCardList;
    typedef sequence<ContactId> ContactIdList;
    typedef sequence<string> stringlist;

    enum BookChangeType {
        ContactAdded,
        ContactModified,
        ContactDeleted
    };

    struct BookChangeItem {
        BookChangeType changeType;
        VCard vcard;
    };

    typedef sequence<BookChangeItem> BookChangeList;

    enum CallStatus {
        Success,
        RepositoryOffline,
        PermissionDenied,
        ContactNotFound,
        ContactIdAlreadyExists,
        AuthenticationFailed,
        AuthenticationRequired,
        UnsupportedField,
        UnsupportedAuthenticationMethod,
        TLSNotAvailable,
        NoSuchBook,
        BookRemoved,

        /* These can be returned for successful searches, but
           indicate the result set was truncated */
        SearchSizeLimitExceeded,
        SearchTimeLimitExceeded,

        InvalidQuery,
        QueryRefused,

        CouldNotCancel,
        
        OtherError
    };

    /* 
     * A book view is a live view of a book.  It's either a view
     * of all the contacts in the book or a view of a query.  When
     * created, it will get a series of notifyContactsAdded calls
     * for all objects in the initial set.  After that, it will
     * get added, removed, or changed signals whenever the book
     * changes (if it affects the set of viewed contacts.)
     */
    interface BookViewListener : Bonobo::Unknown {
        oneway void notifyContactsAdded    (in VCardList vcards);
        oneway void notifyContactsRemoved  (in ContactIdList ids);
        oneway void notifyContactsChanged  (in VCardList vcards);
        oneway void notifySequenceComplete (in CallStatus status);
        oneway void notifyProgress         (in string message, in short percent);
    };
    
    interface BookView : Bonobo::Unknown {
        oneway void start ();
        oneway void stop ();
    };

    interface Book : Bonobo::Unknown {

        /*
         * Opening/creating addressbooks.
         */
        oneway void open (in boolean only_if_exists);

        /*
         * Removing addressbooks.
         */
        oneway void remove ();

        /*
         * Fetching contacts in the addresbook.
         */
        oneway void getContact (in ContactId id);

        oneway void authenticateUser (in string user, in string passwd,
                          in string authMethod);

        /*
         * Adding and deleting contacts in the book.
         */
        oneway void addContact    (in VCard vcard);
        oneway void removeContacts (in ContactIdList Id);
            
        /*
         * Modifying contacts in the addressbook.
         */
        oneway void modifyContact (in VCard vcard);
        
        /*
         * These two functions return a book view to the book
         * listener.  This is for people who want a live view
         * of the addressbook.
         */
        oneway void getBookView (in BookViewListener listener, in string query,
                     in stringlist requested_fields, in long max_results);

        oneway void getChanges  (in string change_id);

        oneway void getContactList (in string query);

        oneway void getSupportedFields ();

        /*
         * This function returns a list of strings
         * representing the auth methods (e.g. SASL mechs)
         * that a backend/server supports.
         *
         * Some examples are:
         *
         * "ldap/simple-email|By email Address"
         * "sasl/CRAM-MD5|CRAM-MD5(SASL)"
         *
         * The format should be:
         *
         * <class>/<type>|<i18nized string>
         *
         * "i18nized string" is shown in the UI, and should be
         * a user friendly representation of the auth method.
         *
         * in the case of SASL auth mechs, the text trailing
         * the '/' should be the proper name of the mechanism,
         * as it will be passed unchanged to the backend auth
         * function (eg. ldap_sasl_bind)
         */
        oneway void getSupportedAuthMethods ();

        string getStaticCapabilities ();

        string getName ();

        /* cancels the currently running operation, whatever
           it is. */
        CallStatus cancelOperation ();
    };

    interface BookListener : Bonobo::Unknown {

        oneway void notifyContactCreated       (in CallStatus status, in ContactId Id);
        oneway void notifyContactsRemoved      (in CallStatus status);
        oneway void notifyContactModified      (in CallStatus status);
        oneway void notifyProgress             (in string status_message, in short precent);
        oneway void notifyBookOpened           (in CallStatus status);
        oneway void notifyBookRemoved          (in CallStatus status);
        oneway void notifyViewRequested        (in CallStatus status, in BookView view);
        oneway void notifyChangesRequested     (in CallStatus status, in BookChangeList changes);
        oneway void notifyContactRequested     (in CallStatus status, in VCard vcard);
        oneway void notifyContactListRequested (in CallStatus status, in stringlist contacts);
        oneway void notifySupportedFields      (in CallStatus status, in stringlist fields);
        oneway void notifyAuthenticationResult (in CallStatus status);
        oneway void notifySupportedAuthMethods (in CallStatus status, in stringlist auth_methods);

        oneway void notifyWritable (in boolean writable);
    };

    interface BookFactory : Bonobo::Unknown {
        exception ProtocolNotSupported {};

        Book getBook (in string uri, in BookListener listener)
            raises (ProtocolNotSupported);
    };
};
};
};