13 * |
13 * |
14 * Description: This file implements class CIpsPlgImap4Plugin. |
14 * Description: This file implements class CIpsPlgImap4Plugin. |
15 * |
15 * |
16 */ |
16 */ |
17 |
17 |
|
18 |
|
19 |
18 #include "emailtrace.h" |
20 #include "emailtrace.h" |
19 #include "ipsplgheaders.h" |
21 #include "ipsplgheaders.h" |
20 |
22 #include <baseplugincommonutils.h> // CleanupResetAndDestroyPushL |
21 // <qmail> priority const has been removed |
23 |
|
24 const TInt KConnectOpPriority = CActive::EPriorityStandard; |
22 |
25 |
23 // --------------------------------------------------------------------------- |
26 // --------------------------------------------------------------------------- |
24 // CIpsPlgImap4Plugin::CIpsPlgImap4Plugin() |
27 // CIpsPlgImap4Plugin::CIpsPlgImap4Plugin() |
25 // --------------------------------------------------------------------------- |
28 // --------------------------------------------------------------------------- |
26 // |
29 // |
29 { |
32 { |
30 FUNC_LOG; |
33 FUNC_LOG; |
31 // none |
34 // none |
32 } |
35 } |
33 |
36 |
|
37 |
34 // --------------------------------------------------------------------------- |
38 // --------------------------------------------------------------------------- |
35 // CIpsPlgImap4Plugin::ConstructL() |
39 // CIpsPlgImap4Plugin::ConstructL() |
36 // --------------------------------------------------------------------------- |
40 // --------------------------------------------------------------------------- |
37 // |
41 // |
38 void CIpsPlgImap4Plugin::ConstructL() |
42 void CIpsPlgImap4Plugin::ConstructL() |
39 { |
43 { |
40 FUNC_LOG; |
44 FUNC_LOG; |
41 BaseConstructL(); |
45 BaseConstructL(); |
42 } |
46 } |
|
47 |
43 |
48 |
44 // --------------------------------------------------------------------------- |
49 // --------------------------------------------------------------------------- |
45 // CIpsPlgImap4Plugin::NewL() |
50 // CIpsPlgImap4Plugin::NewL() |
46 // --------------------------------------------------------------------------- |
51 // --------------------------------------------------------------------------- |
47 // |
52 // |
50 FUNC_LOG; |
55 FUNC_LOG; |
51 CIpsPlgImap4Plugin* self = CIpsPlgImap4Plugin::NewLC(); |
56 CIpsPlgImap4Plugin* self = CIpsPlgImap4Plugin::NewLC(); |
52 CleanupStack::Pop( self ); |
57 CleanupStack::Pop( self ); |
53 return self; |
58 return self; |
54 } |
59 } |
|
60 |
55 |
61 |
56 // --------------------------------------------------------------------------- |
62 // --------------------------------------------------------------------------- |
57 // CIpsPlgImap4Plugin::NewLC() |
63 // CIpsPlgImap4Plugin::NewLC() |
58 // --------------------------------------------------------------------------- |
64 // --------------------------------------------------------------------------- |
59 // |
65 // |
139 // --------------------------------------------------------------------------- |
145 // --------------------------------------------------------------------------- |
140 // |
146 // |
141 void CIpsPlgImap4Plugin::RefreshNowL( |
147 void CIpsPlgImap4Plugin::RefreshNowL( |
142 const TFSMailMsgId& aMailBoxId, |
148 const TFSMailMsgId& aMailBoxId, |
143 MFSMailRequestObserver& aOperationObserver, |
149 MFSMailRequestObserver& aOperationObserver, |
144 TInt aRequestId, |
150 TInt aRequestId ) |
145 const TBool /*aSilentConnection*/ ) |
|
146 { |
151 { |
147 FUNC_LOG; |
152 FUNC_LOG; |
148 |
153 |
149 TMsvId service = aMailBoxId.Id(); |
154 TMsvId service = aMailBoxId.Id(); |
150 |
155 |
151 CIpsPlgSingleOpWatcher* watcher = CIpsPlgSingleOpWatcher::NewL( *this ); |
156 CIpsPlgSingleOpWatcher* watcher = CIpsPlgSingleOpWatcher::NewL( *this ); |
152 CleanupStack::PushL( watcher ); |
157 CleanupStack::PushL( watcher ); |
153 |
158 |
154 // <qmail> priority parameter has been removed |
|
155 CIpsPlgBaseOperation* op = CIpsPlgImap4ConnectOp::NewL( |
159 CIpsPlgBaseOperation* op = CIpsPlgImap4ConnectOp::NewL( |
156 *iSession, |
160 *iSession, |
|
161 KConnectOpPriority, |
157 watcher->iStatus, |
162 watcher->iStatus, |
158 service, |
163 service, |
159 ActivityTimerL( aMailBoxId ), |
164 ActivityTimerL( aMailBoxId ), |
160 aMailBoxId, |
165 aMailBoxId, |
161 &aOperationObserver, |
166 aOperationObserver, |
162 aRequestId, |
167 aRequestId, |
163 iEventHandler ); |
168 iEventHandler ); |
164 |
169 |
165 watcher->SetOperation( op ); |
170 watcher->SetOperation( op ); |
166 iOperations.AppendL( watcher ); |
171 iOperations.AppendL( watcher ); |
293 info.iTotalSizeLimit = KMaxTInt32; |
298 info.iTotalSizeLimit = KMaxTInt32; |
294 info.iBodyTextSizeLimit = KMaxTInt32; |
299 info.iBodyTextSizeLimit = KMaxTInt32; |
295 info.iAttachmentSizeLimit = 0; |
300 info.iAttachmentSizeLimit = 0; |
296 info.iDestinationFolder = aFolderId.Id(); |
301 info.iDestinationFolder = aFolderId.Id(); |
297 |
302 |
298 // <qmail> priority parameter has been removed |
|
299 CIpsPlgBaseOperation* op = CIpsPlgImap4PopulateOp::NewL( |
303 CIpsPlgBaseOperation* op = CIpsPlgImap4PopulateOp::NewL( |
300 *iSession, |
304 *iSession, |
301 watcher->iStatus, |
305 watcher->iStatus, |
|
306 CActive::EPriorityStandard, |
302 aMailBoxId.Id(), |
307 aMailBoxId.Id(), |
303 ActivityTimerL( aMailBoxId ), |
308 ActivityTimerL( aMailBoxId ), |
304 info, |
309 info, |
305 *sel, |
310 *sel, |
306 aMailBoxId, |
311 aMailBoxId, |
307 &aObserver, |
312 aObserver, |
308 aRequestId, |
313 aRequestId, |
309 iEventHandler, |
314 iEventHandler, |
310 EFalse ); // do not filter mail selection |
315 EFalse ); // do not filter mail selection |
311 |
316 |
312 watcher->SetOperation( op ); |
317 watcher->SetOperation( op ); |
349 TInt msgIdCount( aMessageIds.Count() ); |
354 TInt msgIdCount( aMessageIds.Count() ); |
350 for ( TInt i(0); i< msgIdCount; i++ ) |
355 for ( TInt i(0); i< msgIdCount; i++ ) |
351 { |
356 { |
352 sel->AppendL( aMessageIds[i].Id() ); |
357 sel->AppendL( aMessageIds[i].Id() ); |
353 } |
358 } |
354 |
359 |
355 // <qmail> TImImap4GetMailInfo options not needed |
360 TPckgBuf<TImImap4GetMailInfo> optionsBuf; |
|
361 TImImap4GetMailInfo& options = optionsBuf(); |
|
362 options.iMaxEmailSize = KMaxTInt32; |
|
363 options.iGetMailBodyParts = EGetImap4EmailHeaders; |
|
364 options.iDestinationFolder = aDestinationFolderId.Id(); |
356 |
365 |
357 CIpsPlgImap4MoveRemoteOpObserver* observer = |
366 CIpsPlgImap4MoveRemoteOpObserver* observer = |
358 CIpsPlgImap4MoveRemoteOpObserver::NewL( *iSession, *iEventHandler, |
367 CIpsPlgImap4MoveRemoteOpObserver::NewL( *iSession, *iEventHandler, |
359 aSourceFolderId, aMessageIds ); |
368 aSourceFolderId, aMessageIds ); |
360 watcher->SetRequestObserver( observer ); |
369 watcher->SetRequestObserver( observer ); |
361 |
370 |
362 // Synchronous operation |
371 // Synchronous operation |
363 // <qmail> following constructor's parameters have changed |
372 CIpsPlgBaseOperation* op = CIpsPlgImap4MoveRemoteOp::NewL( |
364 CIpsPlgBaseOperation* op = CIpsPlgImap4MoveRemoteOp::NewL( |
|
365 *iSession, |
373 *iSession, |
366 watcher->iStatus, |
374 watcher->iStatus, |
|
375 KIMAP4MTMMoveMailSelectionWhenAlreadyConnected, |
367 service, |
376 service, |
368 ActivityTimerL( aMailBoxId ), |
377 ActivityTimerL( aMailBoxId ), |
369 aDestinationFolderId.Id(), |
378 options, |
370 *sel, |
379 *sel, |
371 aMailBoxId, |
380 aMailBoxId, |
372 NULL, // no observer, async not supported |
381 *observer, // async not supported |
373 0 ); // async not supported |
382 0 ); // async not supported |
374 |
383 |
375 watcher->SetOperation( op ); |
384 watcher->SetOperation( op ); |
376 CleanupStack::PopAndDestroy( sel ); |
385 CleanupStack::PopAndDestroy( sel ); |
377 iOperations.AppendL( watcher ); |
386 iOperations.AppendL( watcher ); |
431 TImImap4GetMailInfo& options = optionsBuf(); |
440 TImImap4GetMailInfo& options = optionsBuf(); |
432 options.iMaxEmailSize = KMaxTInt32; |
441 options.iMaxEmailSize = KMaxTInt32; |
433 options.iGetMailBodyParts = EGetImap4EmailBodyTextAndAttachments; |
442 options.iGetMailBodyParts = EGetImap4EmailBodyTextAndAttachments; |
434 options.iDestinationFolder = aDestinationFolderId.Id(); |
443 options.iDestinationFolder = aDestinationFolderId.Id(); |
435 |
444 |
436 // <qmail> following constructor's parameters have changed |
445 CIpsPlgBaseOperation* op = CIpsPlgImap4MoveRemoteOp::NewL( |
437 CIpsPlgBaseOperation* op = CIpsPlgImap4MoveRemoteOp::NewL( |
|
438 *iSession, |
446 *iSession, |
439 watcher->iStatus, |
447 watcher->iStatus, |
|
448 KIMAP4MTMMoveMailSelectionWhenAlreadyConnected, |
440 service, |
449 service, |
441 ActivityTimerL( aMailBoxId ), |
450 ActivityTimerL( aMailBoxId ), |
442 aDestinationFolderId.Id(), |
451 options, |
443 *sel, |
452 *sel, |
444 aMailBoxId, |
453 aMailBoxId, |
445 &aOperationObserver, // async not supported |
454 aOperationObserver, |
446 0 ); // async not supported |
455 aRequestId ); |
447 |
456 |
448 watcher->SetOperation( op ); |
457 watcher->SetOperation( op ); |
449 CleanupStack::PopAndDestroy( sel ); |
458 CleanupStack::PopAndDestroy( sel ); |
450 iOperations.AppendL( watcher ); |
459 iOperations.AppendL( watcher ); |
451 CleanupStack::Pop( watcher ); |
460 CleanupStack::Pop( watcher ); |
522 |
531 |
523 return; |
532 return; |
524 } |
533 } |
525 |
534 |
526 } |
535 } |
527 |
536 |
528 // <qmail> TImImap4GetMailInfo options removed |
537 TPckgBuf<TImImap4GetMailInfo> optionsBuf; |
|
538 TImImap4GetMailInfo& options = optionsBuf(); |
|
539 options.iMaxEmailSize = KMaxTInt32; |
|
540 options.iGetMailBodyParts = EGetImap4EmailAttachments; |
|
541 options.iDestinationFolder = 0; // not used |
|
542 |
529 CIpsPlgBaseOperation* op = CIpsPlgImap4FetchAttachmentOp::NewL( |
543 CIpsPlgBaseOperation* op = CIpsPlgImap4FetchAttachmentOp::NewL( |
530 *iSession, |
544 *iSession, watcher->iStatus, KIMAP4MTMPopulate, aMailBoxId.Id(), |
531 watcher->iStatus, |
545 ActivityTimerL( aMailBoxId ), options, *sel, aMailBoxId, |
532 aMailBoxId.Id(), |
546 aOperationObserver, aRequestId ); |
533 ActivityTimerL( aMailBoxId ), |
|
534 sel, // ownership is transferred |
|
535 aMailBoxId, |
|
536 &aOperationObserver, |
|
537 aRequestId ); |
|
538 |
547 |
539 watcher->SetOperation( op ); |
548 watcher->SetOperation( op ); |
|
549 CleanupStack::PopAndDestroy( sel ); |
540 iOperations.AppendL( watcher ); |
550 iOperations.AppendL( watcher ); |
541 // <qmail> |
|
542 CleanupStack::Pop( sel ); |
|
543 // </qmail> |
|
544 CleanupStack::Pop( watcher ); |
551 CleanupStack::Pop( watcher ); |
545 } |
552 } |
546 |
553 |
547 // ---------------------------------------------------------------------------- |
554 // ---------------------------------------------------------------------------- |
548 // CIpsPlgImap4Plugin::PopulateNewMailL( ) |
555 // CIpsPlgImap4Plugin::PopulateNewMailL( ) |
576 CEmailAccounts* accounts = CEmailAccounts::NewLC(); |
583 CEmailAccounts* accounts = CEmailAccounts::NewLC(); |
577 TImapAccount imapAcc; |
584 TImapAccount imapAcc; |
578 accounts->GetImapAccountL( aMailboxId.Id(), imapAcc ); |
585 accounts->GetImapAccountL( aMailboxId.Id(), imapAcc ); |
579 accounts->LoadImapSettingsL( imapAcc, *settings ); |
586 accounts->LoadImapSettingsL( imapAcc, *settings ); |
580 TImImap4GetPartialMailInfo info; |
587 TImImap4GetPartialMailInfo info; |
581 // <qmail> Get TImImap4GetPartialMailInfo based on settings |
588 CIpsSetDataApi::ConstructImapPartialFetchInfo( info, *settings ); |
582 CIpsPlgImap4ConnectOp::ConstructImapPartialFetchInfo( info, *settings ); |
|
583 CleanupStack::PopAndDestroy( 2, settings ); |
589 CleanupStack::PopAndDestroy( 2, settings ); |
584 |
590 |
585 if ( info.iTotalSizeLimit == KIpsSetDataHeadersOnly ) |
591 if ( info.iTotalSizeLimit == KIpsSetDataHeadersOnly ) |
586 { |
592 { |
587 return; |
593 return; |
588 } |
594 } |
589 // </qmail> |
|
590 |
595 |
591 TPckgBuf<TImImap4GetPartialMailInfo> package(info); |
596 TPckgBuf<TImImap4GetPartialMailInfo> package(info); |
592 |
597 |
593 CIpsPlgSingleOpWatcher* watcher = CIpsPlgSingleOpWatcher::NewL(*this); |
598 CIpsPlgSingleOpWatcher* watcher = CIpsPlgSingleOpWatcher::NewL(*this); |
594 CleanupStack::PushL( watcher ); |
599 CleanupStack::PushL( watcher ); |
596 CMsvEntrySelection* sel = new(ELeave) CMsvEntrySelection; |
601 CMsvEntrySelection* sel = new(ELeave) CMsvEntrySelection; |
597 CleanupStack::PushL(sel); |
602 CleanupStack::PushL(sel); |
598 sel->AppendL( aMailboxId.Id() ); |
603 sel->AppendL( aMailboxId.Id() ); |
599 sel->AppendL( aNewId ); |
604 sel->AppendL( aNewId ); |
600 |
605 |
601 // <qmail> priority parameter has been removed |
|
602 CIpsPlgBaseOperation* op = CIpsPlgImap4PopulateOp::NewL( |
606 CIpsPlgBaseOperation* op = CIpsPlgImap4PopulateOp::NewL( |
603 *iSession, |
607 *iSession, |
604 watcher->iStatus, |
608 watcher->iStatus, |
|
609 KIMAP4MTMPopulateMailSelectionWhenAlreadyConnected, |
605 aMailboxId.Id(), |
610 aMailboxId.Id(), |
606 ActivityTimerL( aMailboxId ), |
611 ActivityTimerL( aMailboxId ), |
607 info, |
612 info, |
608 *sel, |
613 *sel, |
609 aMailboxId, |
614 aMailboxId, |
610 NULL, // no operation observer |
615 *this, |
611 0, // no use for requestId |
616 KErrNotFound, |
612 iEventHandler, |
617 iEventHandler, |
613 EFalse ); // do not block entry changed and created events |
618 EFalse ); // do not block entry changed and created events |
614 |
619 |
615 watcher->SetOperation( op ); |
620 watcher->SetOperation( op ); |
616 CleanupStack::PopAndDestroy( sel ); |
621 CleanupStack::PopAndDestroy( sel ); |