diff -r dcf0eedfc1a3 -r d189ee25cf9d ipsservices/ipssosplugin/src/ipsplgimap4populateop.cpp --- a/ipsservices/ipssosplugin/src/ipsplgimap4populateop.cpp Thu Aug 19 09:38:05 2010 +0300 +++ b/ipsservices/ipssosplugin/src/ipsplgimap4populateop.cpp Tue Aug 31 15:04:17 2010 +0300 @@ -18,22 +18,21 @@ #include "emailtrace.h" #include "ipsplgheaders.h" -// Constants and defines -const TInt KFetchOpPriority = CActive::EPriorityStandard; -const TInt KIpsPlgSelectionGra = 16; +// priority const has been removed // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- +// priority parameter has been removed +// MFSMailRequestObserver& changed to pointer EXPORT_C CIpsPlgImap4PopulateOp* CIpsPlgImap4PopulateOp::NewL( CMsvSession& aMsvSession, TRequestStatus& aObserverRequestStatus, - TInt aPriority, TMsvId aService, CIpsPlgTimerOperation& aActivityTimer, const TImImap4GetPartialMailInfo& aPartialMailInfo, const CMsvEntrySelection& aSel, TFSMailMsgId aFSMailBoxId, - MFSMailRequestObserver& aFSOperationObserver, + MFSMailRequestObserver* aFSOperationObserver, TInt aFSRequestId, CIpsPlgEventHandler* aEventHandler, TBool aDoFilterSelection ) @@ -42,7 +41,6 @@ CIpsPlgImap4PopulateOp* op = new (ELeave) CIpsPlgImap4PopulateOp( aMsvSession, aObserverRequestStatus, - aPriority, aService, aActivityTimer, aPartialMailInfo, @@ -59,29 +57,31 @@ // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- +// priority parameter has been removed CIpsPlgImap4PopulateOp::CIpsPlgImap4PopulateOp( CMsvSession& aMsvSession, TRequestStatus& aObserverRequestStatus, - TInt aPriority, TMsvId aService, CIpsPlgTimerOperation& aActivityTimer, const TImImap4GetPartialMailInfo& aPartialMailInfo, TFSMailMsgId aFSMailBoxId, - MFSMailRequestObserver& aFSOperationObserver, + MFSMailRequestObserver* aFSOperationObserver, TInt aFSRequestId, CIpsPlgEventHandler* aEventHandler ) : CIpsPlgOnlineOperation( - aMsvSession, - aPriority, - aObserverRequestStatus, - aActivityTimer, - aFSMailBoxId, - aFSOperationObserver, - aFSRequestId), + aMsvSession, + aObserverRequestStatus, + aActivityTimer, + aFSMailBoxId, + aFSOperationObserver, + aFSRequestId ), + iState( EStateIdle ), iPartialMailInfo(aPartialMailInfo), - iSelection( KIpsPlgSelectionGra ), - iEventHandler( aEventHandler ) + iSelection( NULL ), + iTempSelection( NULL ), + iEventHandler( aEventHandler ), + iFetchErrorProgress( NULL ) { FUNC_LOG; iService = aService; @@ -92,14 +92,12 @@ CIpsPlgImap4PopulateOp::~CIpsPlgImap4PopulateOp() { FUNC_LOG; - - Cancel(); - iSelection.Close(); + delete iSelection; if ( iTempSelection ) { iTempSelection->Reset(); - delete iTempSelection; + delete iTempSelection; } } @@ -112,27 +110,32 @@ FUNC_LOG; BaseConstructL( KUidMsgTypeIMAP4 ); + // instantiation moved here + iSelection = new ( ELeave ) CMsvEntrySelection(); + iTempSelection = new ( ELeave ) CMsvEntrySelection(); + if ( aDoFilterSelection ) { FilterSelectionL( aSel ); } - else + else // no filtering; populate all { + // first entry in selection is serviceId for ( TInt i = 1; i < aSel.Count(); i++ ) { if ( aSel[i] != iService ) { - iSelection.AppendL( aSel.At(i) ); + iSelection->AppendL( aSel.At(i) ); } } } - iTempSelection = new ( ELeave ) CMsvEntrySelection(); DoConnectL(); } // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- -TInt CIpsPlgImap4PopulateOp::IpsOpType() const +// return type changed: TInt -> TIpsOpType +TIpsOpType CIpsPlgImap4PopulateOp::IpsOpType() const { FUNC_LOG; return EIpsOpTypeImap4PopulateOp; @@ -146,21 +149,20 @@ iState = EStateConnecting; iStatus = KRequestPending; + // priority parameter has been removed CIpsPlgImap4ConnectOp* connOp = CIpsPlgImap4ConnectOp::NewL( iMsvSession, - KFetchOpPriority, iStatus, iService, *iActivityTimer, iFSMailboxId, - iFSOperationObserver, - iFSRequestId, + NULL, // no observer for suboperations + 0, // requestId not needed iEventHandler, - ETrue, // Do plain connect - EFalse ); + ETrue ); // Do plain connect - delete iOperation; - iOperation = connOp; + delete iSubOperation; + iSubOperation = connOp; SetActive(); } @@ -184,8 +186,8 @@ { FUNC_LOG; TInt err = iStatus.Int(); - delete iOperation; - iOperation = NULL; + delete iSubOperation; + iSubOperation = NULL; switch( iState ) { @@ -204,33 +206,17 @@ } case EStateFetching: { - if( err != KErrNone && iOperation ) + if( err != KErrNone && iSubOperation ) { - iFetchErrorProgress = iOperation->ProgressL().AllocL(); + iFetchErrorProgress = iSubOperation->ProgressL().AllocL(); iState = EStateIdle; Complete(); } - else - { - - } break; } case EStateInfoEntryChange: { - TMsvEntry tentry; - TMsvId service; - iMsvSession.GetEntry( iService, service, tentry ); - - if( err == KErrNone && tentry.Connected() ) - { - DoPopulateL(); - } - else - { - iState = EStateIdle; - CompleteObserver( err ); - } + DoPopulateL(); break; } case EStateIdle: @@ -244,9 +230,9 @@ void CIpsPlgImap4PopulateOp::DoCancel() { FUNC_LOG; - if( iOperation ) + if( iSubOperation ) { - iOperation->Cancel(); + iSubOperation->Cancel(); } CompleteObserver( KErrCancel ); } @@ -260,13 +246,16 @@ { // Completed, but with an error during fetch. return *iFetchErrorProgress; - } - TImap4SyncProgress progg; - progg.iFoldersNotFound = 0; - progg.iErrorCode = KErrNone; - TPckgBuf param(progg); - iSyncProgress.Copy(param); - return iSyncProgress; + } + else + { + TImap4SyncProgress progg; + progg.iFoldersNotFound = 0; + progg.iErrorCode = KErrNone; + TPckgBuf param(progg); + iSyncProgress.Copy(param); + return iSyncProgress; + } } // ---------------------------------------------------------------------------- @@ -304,23 +293,7 @@ return result; } -// ---------------------------------------------------------------------------- -// ---------------------------------------------------------------------------- -TInt CIpsPlgImap4PopulateOp::GetEngineProgress( const TDesC8& aProgress ) - { - FUNC_LOG; - if( !aProgress.Length() ) - { - return KErrNone; - } - else - { - TPckgBuf paramPack; - paramPack.Copy( aProgress ); - const TImap4GenericProgress& progress = paramPack().iGenericProgress; - return progress.iErrorCode; - } - } +// removed CIpsPlgImap4PopulateOp::GetEngineProgress( const TDesC8& aProgress ) // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- @@ -333,11 +306,10 @@ // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- -void CIpsPlgImap4PopulateOp::FilterSelectionL( - const CMsvEntrySelection& aSelection ) +void CIpsPlgImap4PopulateOp::FilterSelectionL( const CMsvEntrySelection& aSelection ) { FUNC_LOG; - iSelection.Reset(); + iSelection->Reset(); TMsvId messageId; // NOTE: this code is taken from symbian os source IMPCMTM.CPP // filter selection is in here because messages are @@ -349,7 +321,7 @@ messageId = (aSelection)[i]; if ( messageId == iService ) { - continue; + continue; // ignore serviceId } TMsvEmailEntry entry; TMsvId service = KMsvNullIndexEntryId; @@ -369,11 +341,11 @@ && !isComplete && entry.iType == KUidMsvMessageEntry ) { - iSelection.AppendL(messageId); + iSelection->AppendL( messageId ); } else if ( isMsgEntry && isSizeUnderMax && !isParentComp ) { - iSelection.AppendL(messageId); + iSelection->AppendL( messageId ); } } } @@ -382,20 +354,15 @@ // ---------------------------------------------------------------------------- TBool CIpsPlgImap4PopulateOp::IsPartialPopulate( ) { + // cleaned up code and took one "always true" condition out from the if statement FUNC_LOG; // NOTE: this code is taken from symbian os source IMPCMTM.CPP // code is modified to this class purpose - - TBool isPartialPopulate = EFalse; - if(iPartialMailInfo.iPartialMailOptions == ENoSizeLimits && - iPartialMailInfo.iTotalSizeLimit == KMaxTInt && - iPartialMailInfo.iBodyTextSizeLimit == KMaxTInt && - iPartialMailInfo.iAttachmentSizeLimit == KMaxTInt && - (iPartialMailInfo.iGetMailBodyParts == EGetImap4EmailHeaders || - iPartialMailInfo.iGetMailBodyParts == EGetImap4EmailBodyText || - iPartialMailInfo.iGetMailBodyParts == EGetImap4EmailBodyTextAndAttachments || - iPartialMailInfo.iGetMailBodyParts == EGetImap4EmailAttachments || - iPartialMailInfo.iGetMailBodyParts == EGetImap4EmailBodyAlternativeText) ) + TBool isPartialPopulate( EFalse ); + if ( iPartialMailInfo.iPartialMailOptions == ENoSizeLimits && + iPartialMailInfo.iTotalSizeLimit == KMaxTInt && + iPartialMailInfo.iBodyTextSizeLimit == KMaxTInt && + iPartialMailInfo.iAttachmentSizeLimit == KMaxTInt ) { isPartialPopulate = EFalse; } @@ -403,7 +370,6 @@ { isPartialPopulate = ETrue; } - return isPartialPopulate; } @@ -412,50 +378,34 @@ void CIpsPlgImap4PopulateOp::DoPopulateL( ) { FUNC_LOG; - if ( iSelection.Count() > 0 ) + if ( iSelection->Count() > 0 ) { TMsvEmailEntry tEntry; TMsvId dummy; - TInt lastIndex = iSelection.Count()-1; - User::LeaveIfError( iMsvSession.GetEntry( - iSelection[lastIndex], dummy, tEntry ) ); + TInt lastIndex = iSelection->Count()-1; + User::LeaveIfError( iMsvSession.GetEntry( iSelection->At(lastIndex), dummy, tEntry ) ); iState = EStateFetching; iTempSelection->Reset(); iTempSelection->AppendL( iService ); - iTempSelection->AppendL( iSelection[lastIndex] ); - iSelection.Remove(lastIndex); - - - iStatus = KRequestPending; - + iTempSelection->AppendL( iSelection->At( lastIndex ) ); + iSelection->Delete( lastIndex ); + // Filters are not used when performing 'fetch' // operation, use normal getmail info instead - TPckg param(iPartialMailInfo); + TPckg param( iPartialMailInfo ); iBaseMtm->SwitchCurrentEntryL( iService ); - iOperation = iBaseMtm->InvokeAsyncFunctionL( - KIMAP4MTMPopulateMailSelectionWhenAlreadyConnected, - *iTempSelection, param, this->iStatus); + iSubOperation = iBaseMtm->InvokeAsyncFunctionL( + KIMAP4MTMPopulateMailSelectionWhenAlreadyConnected, + *iTempSelection, param, iStatus ); iState = EStateInfoEntryChange; SetActive(); - - if ( iEventHandler ) - { - iEventHandler->SetNewPropertyEvent( - iService, KIpsSosEmailSyncStarted, KErrNone ); - } } else { iState = EStateIdle; CompleteObserver(); - - if ( iEventHandler ) - { - iEventHandler->SetNewPropertyEvent( - iService, KIpsSosEmailSyncCompleted, KErrNone ); - } } }