/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* * * Author: * Nat Friedman (nat@ximian.com) * * Copyright 2000, Ximian, Inc. */ #include module GNOME { module Evolution { module Addressbook { typedef string ContactId; typedef string VCard; typedef sequence VCardList; typedef sequence ContactIdList; typedef sequence stringlist; enum BookChangeType { ContactAdded, ContactModified, ContactDeleted }; struct BookChangeItem { BookChangeType changeType; VCard vcard; }; typedef sequence BookChangeList; enum CallStatus { Success, RepositoryOffline, PermissionDenied, ContactNotFound, ContactIdAlreadyExists, AuthenticationFailed, AuthenticationRequired, UnsupportedField, UnsupportedAuthenticationMethod, TLSNotAvailable, NoSuchBook, BookRemoved, OfflineUnavailable, /* These can be returned for successful searches, but indicate the result set was truncated */ SearchSizeLimitExceeded, SearchTimeLimitExceeded, InvalidQuery, QueryRefused, CouldNotCancel, OtherError, InvalidServerVersion }; typedef long BookMode; const BookMode MODE_LOCAL = 1 << 0; const BookMode MODE_REMOTE = 1 << 1; const BookMode MODE_ANY = 0x07; /* * 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 (); oneway void dispose (); }; interface Book : Bonobo::Unknown { /* * Opening/creating addressbooks. */ oneway void open (in long opid, in boolean only_if_exists); /* * Removing addressbooks. */ oneway void remove (in long opid); /* * Fetching contacts in the addresbook. */ oneway void getContact (in long opid, in ContactId id); oneway void authenticateUser (in long opid, in string user, in string passwd, in string authMethod); /* * Adding and deleting contacts in the book. */ oneway void addContact (in long opid, in VCard vcard); oneway void removeContacts (in long opid, in ContactIdList Id); /* * Modifying contacts in the addressbook. */ oneway void modifyContact (in long opid, 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 long opid, in BookViewListener listener, in string query, in stringlist requested_fields, in long max_results); oneway void getChanges (in long opid, in string change_id); oneway void getContactList (in long opid, in string query); oneway void getSupportedFields (in long opid); oneway void getRequiredFields (in long pid); /* * 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: * * /| * * "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 (in long opid); string getStaticCapabilities (); string getName (); /* cancels the currently running operation, whatever it is. */ CallStatus cancelOperation (); }; interface BookListener : Bonobo::Unknown { oneway void notifyContactCreated (in long opid, in CallStatus status, in ContactId Id); oneway void notifyContactsRemoved (in long opid, in CallStatus status); oneway void notifyContactModified (in long opid, in CallStatus status); oneway void notifyProgress (in string status_message, in short precent); oneway void notifyBookOpened (in long opid, in CallStatus status); oneway void notifyBookRemoved (in long opid, in CallStatus status); oneway void notifyViewRequested (in long opid, in CallStatus status, in BookView view); oneway void notifyChangesRequested (in long opid, in CallStatus status, in BookChangeList changes); oneway void notifyContactRequested (in long opid, in CallStatus status, in VCard vcard); oneway void notifyContactListRequested (in long opid, in CallStatus status, in stringlist contacts); oneway void notifySupportedFields (in long opid, in CallStatus status, in stringlist fields); oneway void notifyRequiredFields (in long opid, in CallStatus status, in stringlist fields); oneway void notifyAuthenticationResult (in long opid, in CallStatus status); oneway void notifySupportedAuthMethods (in long opid, in CallStatus status, in stringlist auth_methods); oneway void notifyWritable (in boolean writable); oneway void notifyConnectionStatus (in boolean is_online); oneway void notifyAuthRequired (); }; interface BookFactory : Bonobo::Unknown { exception ProtocolNotSupported {}; Book getBook (in string source, in BookListener listener) raises (ProtocolNotSupported); }; }; }; };