/* Evolution Mail Interface * * Copyright (C) 2005 Novell, Inc. * * Authors: Michael Zucchi */ #ifndef _EVOLUTION_DATASERVER_MAIL_IDL_ #define _EVOLUTION_DATASERVER_MAIL_IDL_ #include module GNOME { module Evolution { module Mail { exception NOT_SUPPORTED { string why; }; exception FAILED { string why; }; interface Folder; typedef sequence Folders; struct FolderInfo { string name; string full_name; Folder folder; }; typedef sequence FolderInfos; interface Store; typedef sequence Stores; struct StoreInfo { string name; string uid; Store store; }; typedef sequence StoreInfos; interface Session; struct Message { string uid; string subject; string to; string from; }; typedef sequence Messages; /* ********************************************************************** */ // NB: tiny subset of omg properties service typedef string PropertyName; typedef sequence PropertyNames; struct Property { PropertyName name; any value; }; typedef sequence Properties; /* ********************************************************************** */ enum ChangeType { ADDED, REMOVED, CHANGED }; // ?? struct SessionChange { ChangeType type; StoreInfos stores; }; typedef sequence SessionChanges; struct StoreChange { ChangeType type; Folders folders; }; typedef sequence StoreChanges; struct FolderChange { ChangeType type; Messages messages; }; typedef sequence FolderChanges; interface Listener : Bonobo::Unknown { oneway void sessionChanged(in Session session, in SessionChange change); oneway void storeChanged(in Session session, in Store store, in StoreChanges change); oneway void folderChanged(in Session session, in Store store, in Folder folder, in FolderChanges changes); }; /* ********************************************************************** */ interface Session : Bonobo::Unknown { boolean getProperties(in PropertyNames names, out Properties props); StoreInfos getStores(in string pattern); void addListener(in Listener listener); void removeListener(in Listener listener); }; interface Store : Bonobo::Unknown { boolean getProperties(in PropertyNames names, out Properties props); FolderInfos getFolders(in string pattern) raises (NOT_SUPPORTED, FAILED); void sendMessage(in Bonobo::Stream msg, in string from, in string recipients) raises (NOT_SUPPORTED, FAILED); }; interface MessageIterator : Bonobo::Unknown { Messages next(in long limit); }; interface Folder : Bonobo::Unknown { boolean getProperties(in PropertyNames names, out Properties props); MessageIterator getMessages(in string pattern); Bonobo::Stream getMessage(in string uid); // void appendMessage(in MessageInfo info, in Bonobo::Stream msg); }; }; }; }; #endif