aboutsummaryrefslogtreecommitdiffstats
path: root/shell/Evolution-Storage.idl
blob: dcc87ca6dd0c62cb1475a668fc8e387653fd7009 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
/* -*- Mode: IDL; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
/*
 * Storage interface for the Evolution shell.
 *
 * Authors:
 *   Ettore Perazzoli <ettore@ximian.com>
 *
 * Copyright (C) 2000, 2001 Ximian, Inc.
 */

#include <Bonobo.h>

module GNOME {
module Evolution {
    interface Storage;
    interface StorageListener;

    interface Storage : Bonobo::Unknown {
        exception AlreadyListening {};
        exception NotFound {};

        enum Result {
            OK,
            UNSUPPORTED_OPERATION,
            UNSUPPORTED_TYPE,
            INVALID_URI,
            ALREADY_EXISTS,
            DOES_NOT_EXIST,
            PERMISSION_DENIED,
            NO_SPACE,
            NOT_EMPTY,
            GENERIC_ERROR
        };

        struct FolderResult {
            Result result;
            string path;
        };

        /* The name of the storage.  */
        readonly attribute string name;

        /* Whether the storage has folders from other user's.  */
        readonly attribute boolean hasSharedFolders;
        
        /* Flat list of the folders in the storage.  */
        readonly attribute FolderList folderList;

        /* Folder Operations.  */

        void asyncCreateFolder (in string path,
                    in string type,
                    in string description,
                    in string parent_physical_uri,
                    in Bonobo::Listener listener);

        void asyncRemoveFolder (in string path,
                    in string physical_uri,
                    in Bonobo::Listener listener);

        void asyncXferFolder (in string source_path,
                      in string destination_path,
                      in boolean remove_source,
                      in Bonobo::Listener listener);

        /* Open remote nodes.  */

        void asyncOpenFolder (in string path);

        /* Set unread count.  */

        void updateFolder (in string path,
                   in long unread_count);

        /* Shared folders.  */

        void asyncDiscoverSharedFolder (in string user,
                        in string folder_name,
                        in Bonobo::Listener listener);

        /* Listener handling.  */

        void addListener       (in StorageListener listener)
            raises (AlreadyListening);

        void removeListener    (in StorageListener listener)
            raises (NotFound);
    };

    interface StorageListener {
        exception Exists {};
        exception NotFound {};

        void notifyDestroyed ();

        /* FIXME exceptions don't make much sense here...  */

        void notifyFolderCreated (in string path,
                      in Folder folder)
            raises (Exists);
        
        void notifyFolderUpdated (in string path,
                      in long   unread_count)
            raises (NotFound);

        void notifyFolderRemoved (in string path)
            raises (NotFound);

        void notifyHasSubfolders (in string path,
                      in string message)
            raises (NotFound);
    };

    interface StorageRegistry : Bonobo::Unknown {
        exception Exists {};
        exception NotFound {};
        exception AlreadyListening {};

        typedef sequence<Storage> StorageList;
        
        enum MessageType {
            STORAGE_CREATED,
            STORAGE_DESTROYED
        };

        struct NotifyResult {
            MessageType type;
            string name;
        };
        
        StorageListener addStorage (in Storage storage,
                        in string name)
            raises (Exists);

        StorageList getStorageList ();
        
        Storage getStorageByName (in string name)
            raises (NotFound);

        void removeStorageByName (in string name)
            raises (NotFound);

        void addListener (in Bonobo::Listener listener)
            raises (AlreadyListening);

        void removeListener (in Bonobo::Listener listener)
            raises (NotFound);

        Folder getFolderByUri (in string uri)
            raises (NotFound);
    };
};
};