]> err.no Git - sope/blob - sope-mime/NGImap4/NGImap4Folder.h
synced with latest additions and bumped framework versions
[sope] / sope-mime / NGImap4 / NGImap4Folder.h
1 /*
2   Copyright (C) 2000-2005 SKYRIX Software AG
3
4   This file is part of SOPE.
5
6   SOPE is free software; you can redistribute it and/or modify it under
7   the terms of the GNU Lesser General Public License as published by the
8   Free Software Foundation; either version 2, or (at your option) any
9   later version.
10
11   SOPE is distributed in the hope that it will be useful, but WITHOUT ANY
12   WARRANTY; without even the implied warranty of MERCHANTABILITY or
13   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
14   License for more details.
15
16   You should have received a copy of the GNU Lesser General Public
17   License along with SOPE; see the file COPYING.  If not, write to the
18   Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
19   02111-1307, USA.
20 */
21 #ifndef __Networking_NGImap4_NGImap4Folder_H__
22 #define __Networking_NGImap4_NGImap4Folder_H__
23
24 #import <Foundation/Foundation.h>
25 #import <NGMime/NGPart.h>
26 #import <NGImap4/NGImap4Support.h>
27
28 #define USE_MESSAGE_CACHE 0
29
30 @class NSArray, NSString, NSMutableArray, NSNumber;
31 @class EOGlobalID, EOQualifier;
32 @class NGHashMap;
33 @class NGImap4Context, NGImap4Message, NGImap4FolderMailRegistry;
34 @class NGImap4FolderFlags;
35
36 @interface NGImap4Folder : NSObject <NGImap4Folder>
37 {
38 @private  
39   NGImap4FolderFlags *flags;
40   NSString           *name;
41   NSURL              *url;
42   EOGlobalID         *globalID;
43   NGImap4Context     *context;
44   NSArray            *subFolders;
45
46   NSArray            *msn2UidCache;
47   
48   id<NGImap4Folder> parentFolder; // not retained
49
50   NSNumber *isReadOnly;
51   NSArray  *messageFlags;
52   
53   int exists;
54   int recent;
55   int unseen;
56   
57   BOOL selectSyncState;
58   
59   int maxQuota;
60   int usedSpace;
61   int overQuota;
62
63   struct {
64     BOOL select:1;
65     BOOL status:1;
66     BOOL quota:1;
67   } failedFlags;
68   
69   NGImap4FolderMailRegistry *mailRegistry;
70   
71 #if USE_MESSAGE_CACHE
72   int cacheIdx;
73   
74   NSMutableArray *messages;  
75   NSMutableArray *qualifierCache;
76   NSMutableArray *messagesCache;
77 #endif  
78 }
79
80 - (id)initWithContext:(NGImap4Context *)_context
81   name:(NSString *)_name
82   flags:(NSArray *)_flags
83   parentFolder:(id<NGImap4Folder>)_folder;
84
85 - (BOOL)isEqual:(id)_obj;
86 - (BOOL)isEqualToImap4Folder:(NGImap4Folder *)_folder;
87
88 /* accessors */
89
90 - (NGImap4Context *)context;
91 - (NSException *)lastException;
92 - (void)resetLastException;
93 - (id<NGImap4Folder>)parentFolder;
94
95 - (NSString *)name;
96 - (NSString *)absoluteName;
97 - (NSArray *)flags;
98
99 - (NSData *)blobForUid:(unsigned)_mUid
100   part:(NSString *)_part;
101
102 - (NSArray *)fetchSortedMessages:(NSArray *)_so;
103
104 - (void)bulkFetchHeadersFor:(NSArray *)_array inRange:(NSRange)_aRange;
105 - (void)bulkFetchHeadersFor:(NSArray *)_array inRange:(NSRange)_aRange
106   withAllUnread:(BOOL)_allUnread;
107
108 - (NSArray *)fetchSortedMessages:(NSRange)_aRange
109   sortOrderings:(NSArray *)_so;
110 - (NSArray *)messageFlags;
111 - (NSArray *)messages;
112 - (NSArray *)messagesForQualifier:(EOQualifier *)_qualifier;
113 - (NSArray *)messagesForQualifier:(EOQualifier *)_qualifier maxCount:(int)_cnt;
114 - (NSArray *)subFolders;
115 - (NGImap4Folder *)subFolderWithName:(NSString *)_name
116   caseInsensitive:(BOOL)_caseIns;
117 - (NGImap4Message *)messageForUid:(unsigned)_mUid
118   sortOrderings:(NSArray *)_so
119   onlyUnread:(BOOL)_unread
120   nextMessage:(BOOL)_next;
121
122 - (BOOL)isReadOnly;
123 - (int)exists;
124 - (int)recent;
125 - (int)unseen;
126
127 - (BOOL)noselect;
128 - (BOOL)noinferiors;
129 - (BOOL)nonexistent;
130 - (BOOL)haschildren;
131 - (BOOL)hasnochildren;
132 - (BOOL)marked;
133 - (BOOL)unmarked;
134
135 /* this folder or its subfolders */
136
137 - (BOOL)hasNewMessagesSearchRecursiv:(BOOL)_recursiv;
138 - (BOOL)hasUnseenMessagesSearchRecursiv:(BOOL)_recursiv;
139 - (BOOL)hasNewMessagesSearchRecursiv:(BOOL)_rec    fetchOnDemand:(BOOL)_fetch;
140 - (BOOL)hasUnseenMessagesSearchRecursiv:(BOOL)_rec fetchOnDemand:(BOOL)_fetch;
141
142 /* Notifications */
143
144 - (void)processResponse:(NSDictionary *)_dict;
145
146 /* Actions */
147 - (BOOL)status;
148 - (BOOL)select;
149 /* if imm == YES syncState will be ignored */
150 - (BOOL)selectImmediately:(BOOL)_imm;
151 - (void)expunge;
152
153 - (BOOL)addFlag:(NSString *)_flag toMessages:(NSArray *)_messages;
154 - (BOOL)removeFlag:(NSString *)_flag fromMessages:(NSArray *)_messages;
155 - (BOOL)renameTo:(NSString *)_name;
156
157 /* returns quota in kBytes */
158 - (int)usedSpace;
159 - (int)maxQuota;
160 - (BOOL)isOverQuota; /* evaluate ALERT sequences during select */
161
162 - (BOOL)deleteMessages:(NSArray *)_messages;
163 - (BOOL)deleteAllMessages;
164 - (BOOL)moveMessages:(NSArray *)_messages toFolder:(NGImap4Folder *)_folder;
165 - (BOOL)copyMessages:(NSArray *)_messages toFolder:(NGImap4Folder *)_folder;
166 - (BOOL)appendMessage:(NSData *)_msg;
167
168 - (BOOL)deleteSubFolder:(NGImap4Folder *)_folder;
169 - (BOOL)createSubFolderWithName:(NSString *)_name;
170 - (BOOL)copySubFolder:(NGImap4Folder *)_f to:(NGImap4Folder *)_folder;
171 - (BOOL)moveSubFolder:(NGImap4Folder *)_f to:(NGImap4Folder *)_folder;
172
173 - (BOOL)isInTrash;
174
175 - (void)resetFolder;
176 - (void)resetSubFolders;
177 - (void)resetStatus;
178
179 - (void)resetSync;
180
181 - (NSURL *)url;
182 - (EOGlobalID *)serverGlobalID;
183 - (EOGlobalID *)globalID;
184
185 /* message factory */
186
187 - (id)messageWithUid:(unsigned int)_uid;
188
189 /* message registry */
190
191 - (NGImap4FolderMailRegistry *)mailRegistry;
192
193 @end
194
195 #endif /* __Networking_NGImap4_NGImap4Folder_H__ */