88 |
85 |
89 // ----------------------------------------------------------------------------- |
86 // ----------------------------------------------------------------------------- |
90 // CFSMailFolder::ListMessagesL |
87 // CFSMailFolder::ListMessagesL |
91 // ----------------------------------------------------------------------------- |
88 // ----------------------------------------------------------------------------- |
92 EXPORT_C MFSMailIterator* CFSMailFolder::ListMessagesL( const TFSMailDetails aDetails, |
89 EXPORT_C MFSMailIterator* CFSMailFolder::ListMessagesL( const TFSMailDetails aDetails, |
93 const RArray<TFSMailSortCriteria>& aSorting) |
90 const RArray<TFSMailSortCriteria>& aSorting ) |
94 { |
91 { |
95 NM_FUNCTION; |
92 NM_FUNCTION; |
96 |
93 |
97 CFSMailIterator* iterator = NULL; |
94 CFSMailIterator* iterator(NULL); |
98 if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetFolderId())) |
95 if (CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetFolderId())) |
99 { |
96 { |
100 MFSMailIterator* pluginIterator = |
97 MFSMailIterator* pluginIterator = |
101 plugin->ListMessagesL(GetMailBoxId(),GetFolderId(),aDetails,aSorting); |
98 plugin->ListMessagesL(GetMailBoxId(),GetFolderId(),aDetails,aSorting); |
102 if(pluginIterator) |
99 if(pluginIterator) |
103 { |
100 { |
104 iterator = CFSMailIterator::NewL(*pluginIterator,iRequestHandler ); |
101 iterator = CFSMailIterator::NewL(*pluginIterator,iRequestHandler ); |
105 } |
102 } |
106 } |
103 } |
107 return iterator; |
104 return iterator; |
108 } |
105 } |
109 |
106 |
110 // ----------------------------------------------------------------------------- |
107 // ----------------------------------------------------------------------------- |
111 // CFSMailFolder::FetchMessagesL |
108 // CFSMailFolder::FetchMessagesL |
112 // ----------------------------------------------------------------------------- |
109 // ----------------------------------------------------------------------------- |
113 EXPORT_C TInt CFSMailFolder::FetchMessagesL( const RArray<TFSMailMsgId>& aMessageIds, |
110 EXPORT_C TInt CFSMailFolder::FetchMessagesL( const RArray<TFSMailMsgId>& aMessageIds, |
114 TFSMailDetails aDetails, |
111 TFSMailDetails aDetails, |
115 MFSMailRequestObserver& aObserver ) |
112 MFSMailRequestObserver& aObserver ) |
116 { |
113 { |
117 NM_FUNCTION; |
114 NM_FUNCTION; |
118 |
115 |
119 // init asynchronous request |
116 // init asynchronous request |
120 CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetFolderId()); |
117 CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetFolderId()); |
121 TFSPendingRequest request = |
118 TFSPendingRequest request = |
122 iRequestHandler->InitAsyncRequestL( GetFolderId().PluginId(), aObserver ); |
119 iRequestHandler->InitAsyncRequestL( GetFolderId().PluginId(), aObserver ); |
123 |
120 TInt err (KErrNone); |
124 TInt err = KErrNone; |
|
125 |
121 |
126 if (plugin) |
122 if (plugin) |
127 { |
123 { |
128 MFSMailRequestObserver* observer = request.iObserver; |
124 MFSMailRequestObserver* observer = request.iObserver; |
129 TRAP(err,plugin->FetchMessagesL( GetMailBoxId(), |
125 TRAP(err,plugin->FetchMessagesL( GetMailBoxId(), |
130 GetFolderId(), |
126 GetFolderId(), |
131 aMessageIds, |
127 aMessageIds, |
132 aDetails, |
128 aDetails, |
133 *observer, |
129 *observer, |
134 request.iRequestId)); |
130 request.iRequestId)); |
136 else |
132 else |
137 { |
133 { |
138 err = KErrNotFound; |
134 err = KErrNotFound; |
139 } |
135 } |
140 |
136 |
141 if(err != KErrNone) |
137 if (err != KErrNone) |
142 { |
138 { |
143 iRequestHandler->CompleteRequest(request.iRequestId); |
139 iRequestHandler->CompleteRequest(request.iRequestId); |
144 User::Leave(err); |
140 User::Leave(err); |
145 } |
141 } |
146 return request.iRequestId; |
142 return request.iRequestId; |
147 |
143 } |
148 } |
|
149 |
144 |
150 |
145 |
151 // ----------------------------------------------------------------------------- |
146 // ----------------------------------------------------------------------------- |
152 // CFSMailFolder::GetSubFoldersL |
147 // CFSMailFolder::GetSubFoldersL |
153 // ----------------------------------------------------------------------------- |
148 // ----------------------------------------------------------------------------- |
154 EXPORT_C void CFSMailFolder::GetSubFoldersL(RPointerArray<CFSMailFolder>& aSubFolders) |
149 EXPORT_C void CFSMailFolder::GetSubFoldersL( RPointerArray<CFSMailFolder>& aSubFolders ) |
155 { |
150 { |
156 NM_FUNCTION; |
151 NM_FUNCTION; |
157 |
152 |
158 if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetFolderId())) |
153 if (CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetFolderId())) |
159 { |
154 { |
160 TRAPD(err,plugin->ListFoldersL( GetMailBoxId(), GetFolderId(), aSubFolders)); |
155 TRAPD(err,plugin->ListFoldersL( GetMailBoxId(), GetFolderId(), aSubFolders)); |
161 if(err != KErrNone) |
156 if(err != KErrNone) |
162 { |
157 { |
163 aSubFolders.ResetAndDestroy(); |
158 aSubFolders.ResetAndDestroy(); |
164 } |
159 } |
165 } |
160 } |
166 } |
161 } |
167 |
162 |
168 // ----------------------------------------------------------------------------- |
163 // ----------------------------------------------------------------------------- |
169 // CFSMailFolder::RemoveMessageL |
164 // CFSMailFolder::RemoveMessageL |
170 // ----------------------------------------------------------------------------- |
165 // ----------------------------------------------------------------------------- |
171 EXPORT_C void CFSMailFolder::RemoveMessageL(TFSMailMsgId aMessage) |
166 EXPORT_C void CFSMailFolder::RemoveMessageL( TFSMailMsgId aMessage ) |
172 { |
167 { |
173 NM_FUNCTION; |
168 NM_FUNCTION; |
174 |
169 |
175 if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetFolderId())) |
170 if (CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetFolderId())) |
176 { |
171 { |
177 RArray<TFSMailMsgId> messages; |
172 RArray<TFSMailMsgId> messages; |
178 messages.Reset(); |
173 messages.AppendL(aMessage); |
179 messages.AppendL(aMessage); |
174 plugin->DeleteMessagesByUidL(GetMailBoxId(),GetFolderId(),messages); |
180 plugin->DeleteMessagesByUidL(GetMailBoxId(),GetFolderId(),messages); |
175 messages.Close(); |
181 messages.Close(); |
176 } |
182 } |
|
183 } |
177 } |
184 |
178 |
185 // <qmail> |
179 // <qmail> |
186 // ----------------------------------------------------------------------------- |
180 // ----------------------------------------------------------------------------- |
187 // CFSMailFolder::RemoveMessageL |
181 // CFSMailFolder::RemoveMessageL |
188 // ----------------------------------------------------------------------------- |
182 // ----------------------------------------------------------------------------- |
189 EXPORT_C TInt CFSMailFolder::RemoveMessageL(TFSMailMsgId aMessage, |
183 EXPORT_C TInt CFSMailFolder::RemoveMessageL( TFSMailMsgId aMessage, |
190 MFSMailRequestObserver& aObserver) |
184 MFSMailRequestObserver& aObserver ) |
191 { |
185 { |
192 NM_FUNCTION; |
186 NM_FUNCTION; |
193 |
187 |
194 // init asynchronous request |
188 // init asynchronous request |
195 CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetFolderId()); |
189 CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetFolderId()); |
196 TFSPendingRequest request = |
190 TFSPendingRequest request = |
197 iRequestHandler->InitAsyncRequestL( GetFolderId().PluginId(), aObserver ); |
191 iRequestHandler->InitAsyncRequestL( GetFolderId().PluginId(), aObserver ); |
198 |
192 |
199 TInt err = KErrNone; |
193 TInt err(KErrNone); |
200 |
194 |
201 if (plugin) |
195 if (plugin) |
202 { |
196 { |
203 MFSMailRequestObserver* observer = request.iObserver; |
197 MFSMailRequestObserver* observer = request.iObserver; |
204 |
198 |
205 RArray<TFSMailMsgId> messages; |
199 RArray<TFSMailMsgId> messages; |
206 messages.Reset(); |
|
207 messages.AppendL(aMessage); |
200 messages.AppendL(aMessage); |
208 |
201 |
209 TRAP(err,plugin->DeleteMessagesByUidL( |
202 TRAP(err,plugin->DeleteMessagesByUidL( |
210 GetMailBoxId(), |
203 GetMailBoxId(), |
211 GetFolderId(), |
204 GetFolderId(), |
228 return request.iRequestId; |
221 return request.iRequestId; |
229 } |
222 } |
230 // </qmail> |
223 // </qmail> |
231 |
224 |
232 // ----------------------------------------------------------------------------- |
225 // ----------------------------------------------------------------------------- |
233 // CFSMailFolder::SupportsCopyFromL |
|
234 // ----------------------------------------------------------------------------- |
|
235 EXPORT_C TBool CFSMailFolder::SupportsCopyFromL( TFSFolderType aFolderType ) |
|
236 { |
|
237 NM_FUNCTION; |
|
238 |
|
239 if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetFolderId())) |
|
240 { |
|
241 TFSMailBoxStatus onlineStatus = plugin->GetMailBoxStatus(GetMailBoxId()); |
|
242 if(onlineStatus == EFSMailBoxOnline) |
|
243 { |
|
244 for(TInt i=0;i<iCopyOnlineBlocked.Count();i++) |
|
245 { |
|
246 if(iCopyOnlineBlocked[i] == aFolderType) |
|
247 { |
|
248 return EFalse; |
|
249 } |
|
250 } |
|
251 } |
|
252 else if(onlineStatus == EFSMailBoxOffline) |
|
253 { |
|
254 for(TInt i=0;i<iCopyOfflineBlocked.Count();i++) |
|
255 { |
|
256 if(iCopyOfflineBlocked[i] == aFolderType) |
|
257 { |
|
258 return EFalse; |
|
259 } |
|
260 } |
|
261 } |
|
262 } |
|
263 return ETrue; |
|
264 } |
|
265 |
|
266 // ----------------------------------------------------------------------------- |
|
267 // CFSMailFolder::SupportsMoveFromL |
226 // CFSMailFolder::SupportsMoveFromL |
268 // ----------------------------------------------------------------------------- |
227 // ----------------------------------------------------------------------------- |
269 EXPORT_C TBool CFSMailFolder::SupportsMoveFromL( TFSFolderType aFolderType ) |
228 EXPORT_C TBool CFSMailFolder::SupportsMoveFromL( TFSFolderType aFolderType ) |
270 { |
229 { |
271 NM_FUNCTION; |
230 NM_FUNCTION; |
272 |
231 |
273 if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetFolderId())) |
232 TBool ret(ETrue); |
274 { |
233 if (CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetFolderId())) |
275 TFSMailBoxStatus onlineStatus = plugin->GetMailBoxStatus(GetMailBoxId()); |
234 { |
276 if(onlineStatus == EFSMailBoxOnline) |
235 TFSMailBoxStatus onlineStatus = plugin->GetMailBoxStatus(GetMailBoxId()); |
277 { |
236 if (onlineStatus == EFSMailBoxOnline) |
278 for(TInt i=0;i<iMoveOnlineBlocked.Count();i++) |
237 { |
279 { |
238 for(TInt i(0); i < iMoveOnlineBlocked.Count(); i++) |
280 if(iMoveOnlineBlocked[i] == aFolderType) |
|
281 { |
|
282 return EFalse; |
|
283 } |
|
284 } |
|
285 } |
|
286 else if(onlineStatus == EFSMailBoxOffline) |
|
287 { |
|
288 for(TInt i=0;i<iMoveOfflineBlocked.Count();i++) |
|
289 { |
|
290 if(iMoveOfflineBlocked[i] == aFolderType) |
|
291 { |
|
292 return EFalse; |
|
293 } |
|
294 } |
|
295 } |
|
296 } |
|
297 return ETrue; |
|
298 |
|
299 } |
|
300 // ----------------------------------------------------------------------------- |
|
301 // CFSMailFolder::RemoveDownLoadedAttachmentsL |
|
302 // ----------------------------------------------------------------------------- |
|
303 EXPORT_C void CFSMailFolder::RemoveDownLoadedAttachmentsL() |
|
304 { |
|
305 NM_FUNCTION; |
|
306 |
|
307 CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetFolderId()); |
|
308 if(plugin != NULL) |
|
309 { |
|
310 MFSMailIterator* iterator = NULL; |
|
311 |
|
312 // select message details to be listed |
|
313 TFSMailDetails details(EFSMsgDataEnvelope); |
|
314 |
|
315 // sorting is free, give empty array |
|
316 RArray<TFSMailSortCriteria> sorting; |
|
317 sorting.Reset(); |
|
318 iterator = plugin->ListMessagesL( GetMailBoxId(), |
|
319 GetFolderId(), |
|
320 details, |
|
321 sorting ); |
|
322 if(iterator) |
|
323 { |
|
324 TFSMailMsgId nullId; |
|
325 RPointerArray<CFSMailMessage> messages; |
|
326 messages.Reset(); |
|
327 iterator->NextL(nullId,GetMessageCount(),messages); |
|
328 for(TInt i=0;i<messages.Count();i++) |
|
329 { |
239 { |
330 if(messages[i]->IsFlagSet(EFSMsgFlag_Attachments)) |
240 if (iMoveOnlineBlocked[i] == aFolderType) |
331 { |
241 { |
332 messages[i]->RemoveDownLoadedAttachmentsL(); |
242 ret = EFalse; |
|
243 } |
333 } |
244 } |
|
245 } |
|
246 else if (onlineStatus == EFSMailBoxOffline) |
|
247 { |
|
248 for (TInt i(0); i < iMoveOfflineBlocked.Count(); i++) |
|
249 { |
|
250 if(iMoveOfflineBlocked[i] == aFolderType) |
|
251 { |
|
252 ret = EFalse; |
|
253 } |
334 } |
254 } |
335 messages.ResetAndDestroy(); |
255 } |
336 delete iterator; |
|
337 } |
|
338 } |
|
339 } |
256 } |
|
257 return ret; |
|
258 } |
340 |
259 |
341 // ----------------------------------------------------------------------------- |
260 // ----------------------------------------------------------------------------- |
342 // CFSMailFolder::ReleaseExtension |
261 // CFSMailFolder::ReleaseExtension |
343 // ----------------------------------------------------------------------------- |
262 // ----------------------------------------------------------------------------- |
344 EXPORT_C void CFSMailFolder::ReleaseExtension( CEmailExtension* aExtension ) |
263 EXPORT_C void CFSMailFolder::ReleaseExtension( CEmailExtension* aExtension ) |
345 { |
264 { |
346 NM_FUNCTION; |
265 NM_FUNCTION; |
347 |
266 |
348 // no specialized behaviour, call base class |
267 // no specialized behaviour, call base class |
349 CExtendableEmail::ReleaseExtension( aExtension ); |
268 CExtendableEmail::ReleaseExtension( aExtension ); |
350 } |
269 } |
351 |
270 |
352 // ----------------------------------------------------------------------------- |
271 // ----------------------------------------------------------------------------- |
353 // CFSMailFolder::ExtensionL |
272 // CFSMailFolder::ExtensionL |
354 // ----------------------------------------------------------------------------- |
273 // ----------------------------------------------------------------------------- |
355 EXPORT_C CEmailExtension* CFSMailFolder::ExtensionL( const TUid& aInterfaceUid ) |
274 EXPORT_C CEmailExtension* CFSMailFolder::ExtensionL( const TUid& aInterfaceUid ) |
356 { |
275 { |
357 NM_FUNCTION; |
276 NM_FUNCTION; |
358 |
277 |
359 return CExtendableEmail::ExtensionL( aInterfaceUid ); |
278 return CExtendableEmail::ExtensionL( aInterfaceUid ); |
360 } |
279 } |
361 |
280 |