/* -*- Mode: IDL; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* * Interface to allow components to switch between on-line and off-line mode. * * Authors: * Ettore Perazzoli * * Copyright (C) 2001 Ximian, Inc. */ #include module GNOME { module Evolution { struct Connection { string hostName; string type; }; typedef sequence ConnectionList; interface OfflineProgressListener { /* Update the shell about the progress of going off-line. The operation is considered completed when the ConnectionList is empty. */ void updateProgress (in ConnectionList current_active_connections); }; interface SyncFolderProgressListener { /* Report that syncing has progressed. @progress has to be between 0.0 and 1.0. */ void updateProgress (in float progress); /* Report that the operation has finished. */ void reportSuccess (); /* Report an error. */ void reportFailure (in string message); }; interface Offline : Bonobo::Unknown { exception notPrepared {}; exception notSyncing {}; /* Whether the component is currently off-line. */ attribute boolean isOffline; /* Ask the component to prepare to go into off-line mode. The component must return a list of the current active connections. After this call, the shell is expected to: (in order) 1. Invoke ::syncFolder for each of the component's folders that need to be synchronized to disk for offline usage. 2. Either invoke ::goOffline (actually complete the operation and go off-line) or ::goOnline (operation cancelled). */ void prepareForOffline (out ConnectionList active_connection_list); /* Request the component to sync the specified folder. This has to happen after ::prepareForOffline. */ oneway void syncFolder (in Folder folder, in SyncFolderProgressListener listener); /* Request the component to stop syncing the specified folder. This has to happen after ::syncFolder. */ oneway void cancelSyncFolder (in Folder folder); /* Ask the component to go into off-line mode. This always comes after a ::prepareForOffline. */ void goOffline (in OfflineProgressListener listener) raises (notPrepared); /* Tell the component to go into on-line mode. */ void goOnline (); }; }; };