Re: [Evolution-hackers] evolution-kolab: hiding IMAP folders



On Tue, 2010-07-20 at 13:18 +0200, Christian Hilberg wrote:
> Hm. Maybe I'm still missing some parts here on how Evolution
> internally works.
> 
>   Subclassing the Camel Provider in our backends and overloading 
> get_folder_info() will work for the backend part, i.e. PIM data wich
> is accessed and managed from inside E-D-S. So far, no problem.
>   But there is standard Email to handle as well, and if I understood 
> correctly, Email handling is (presently) done inside Evolution, not
> E-D-S.

	Hi,
others will correct me, but from evolution-mapi point of view (which is,
with evolution-exchange, closest to that what you are trying to do):
- create a Camel provider, which, when placed to the right place, will
be shown in new account creation as an account type (see
camel-mapi-provider.c, there's everything needed for having new mail
provider available in Evolution). Evolution-mapi is extending basic
camel objects, like CamelStore, but as you want to use IMAPX, then less
work for you, derive from it. Note that this Camel part has nothing to
do with EPlugin, the most you define an EPlugin to add menu options on
your folders, like "Folder Size" option for MAPI folders, but other than
that the EPlugin part is optional for mailer part.
- for calendar and addressbook support create your own
EBookBackend/ECalBackend descendants (with defined all the virtual
methods there). You need an EPlugin to have them accessible from UI, to
be able to setup specific things on it. See
exchange-mapi-account-setup.c:exchange_mapi_create_addressbook and
exchange_mapi_create_calendar as examples. Note these are mentioned in
org-gnome-exchange-mapi.eplug.xml.
- evolution-mapi's EPlugin also listens for changes on EAccountList
(which is a list of configured mail accounts) and adds/removes ESource-s
for addressbooks/calendars based on enabled/disabled MAPI accounts,
keeping these three in sync, so the only thing user needs to setup is an
email account, and the addressbook/calendar are added automatically.

With respect of folder structure changes, the first sync will update
internal caches as necessary, namely camel-store-summary, allowing you
to hold the necessary information about each folder, and also adding the
type annotation on it too. How or when fetch that annotation is a
question for you.
	Bye,
	Milan



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]