[16769] | 1 | /* -*- Mode: IDL; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ |
---|
| 2 | /* |
---|
| 3 | * Interface to allow components to switch between on-line and off-line mode. |
---|
| 4 | * |
---|
| 5 | * Authors: |
---|
| 6 | * Ettore Perazzoli <ettore@ximian.com> |
---|
| 7 | * |
---|
| 8 | * Copyright (C) 2001 Ximian, Inc. |
---|
| 9 | */ |
---|
| 10 | |
---|
| 11 | #include <Bonobo.h> |
---|
| 12 | |
---|
| 13 | module GNOME { |
---|
| 14 | module Evolution { |
---|
| 15 | |
---|
| 16 | struct Connection { |
---|
| 17 | string hostName; |
---|
| 18 | string type; |
---|
| 19 | }; |
---|
| 20 | typedef sequence<Connection> ConnectionList; |
---|
| 21 | |
---|
| 22 | interface OfflineProgressListener { |
---|
| 23 | /* Update the shell about the progress of going off-line. The |
---|
| 24 | operation is considered completed when the ConnectionList is empty. */ |
---|
| 25 | void updateProgress (in ConnectionList current_active_connections); |
---|
| 26 | }; |
---|
| 27 | |
---|
[18141] | 28 | interface SyncFolderProgressListener { |
---|
| 29 | /* Report that syncing has progressed. @progress has to be between 0.0 |
---|
| 30 | and 1.0. */ |
---|
| 31 | void updateProgress (in float progress); |
---|
| 32 | |
---|
| 33 | /* Report that the operation has finished. */ |
---|
| 34 | void reportSuccess (); |
---|
| 35 | |
---|
| 36 | /* Report an error. */ |
---|
| 37 | void reportFailure (in string message); |
---|
| 38 | }; |
---|
| 39 | |
---|
[16769] | 40 | interface Offline : Bonobo::Unknown { |
---|
[18141] | 41 | exception notPrepared {}; |
---|
| 42 | exception notSyncing {}; |
---|
| 43 | |
---|
[16769] | 44 | /* Whether the component is currently off-line. */ |
---|
| 45 | attribute boolean isOffline; |
---|
| 46 | |
---|
| 47 | /* Ask the component to prepare to go into off-line mode. The |
---|
| 48 | component must return a list of the current active connections. |
---|
[18141] | 49 | After this call, the shell is expected to: (in order) |
---|
| 50 | |
---|
| 51 | 1. Invoke ::syncFolder for each of the component's folders that |
---|
| 52 | need to be synchronized to disk for offline usage. |
---|
| 53 | |
---|
| 54 | 2. Either invoke ::goOffline (actually complete the operation |
---|
| 55 | and go off-line) or ::goOnline (operation cancelled). |
---|
| 56 | */ |
---|
[16769] | 57 | void prepareForOffline (out ConnectionList active_connection_list); |
---|
| 58 | |
---|
[18141] | 59 | /* Request the component to sync the specified folder. This has to |
---|
| 60 | happen after ::prepareForOffline. */ |
---|
| 61 | oneway void syncFolder (in Folder folder, |
---|
| 62 | in SyncFolderProgressListener listener); |
---|
| 63 | |
---|
| 64 | /* Request the component to stop syncing the specified folder. This |
---|
| 65 | has to happen after ::syncFolder. */ |
---|
| 66 | oneway void cancelSyncFolder (in Folder folder); |
---|
| 67 | |
---|
[16769] | 68 | /* Ask the component to go into off-line mode. This always comes after |
---|
[18141] | 69 | a ::prepareForOffline. */ |
---|
| 70 | void goOffline (in OfflineProgressListener listener) |
---|
| 71 | raises (notPrepared); |
---|
[16769] | 72 | |
---|
| 73 | /* Tell the component to go into on-line mode. */ |
---|
| 74 | void goOnline (); |
---|
| 75 | }; |
---|
| 76 | |
---|
| 77 | }; |
---|
| 78 | }; |
---|