diff -r 139d4b7b2938 -r 99bcbff212ad ipsservices/ipssosplugin/src/ipsplgdeleteoperation.cpp --- a/ipsservices/ipssosplugin/src/ipsplgdeleteoperation.cpp Mon May 24 21:02:02 2010 +0300 +++ b/ipsservices/ipssosplugin/src/ipsplgdeleteoperation.cpp Fri May 28 13:56:43 2010 +0300 @@ -41,6 +41,8 @@ aMsvSession, CActive::EPriorityStandard, aObserverRequestStatus), + iOperationObserver(NULL), + iFSRequestId(KErrNotFound), iState( ESetFlags ) // // iBlank removed { @@ -49,6 +51,30 @@ } // +// ---------------------------------------------------------------------------- +// CIpsPlgDeleteOperation::CIpsPlgDeleteOperation +// ---------------------------------------------------------------------------- +// +// +CIpsPlgDeleteOperation::CIpsPlgDeleteOperation( + CMsvSession& aMsvSession, + TRequestStatus& aObserverRequestStatus, + MFSMailRequestObserver& aOperationObserver, + const TInt aRequestId) + : + CMsvOperation( + aMsvSession, + CActive::EPriorityStandard, + aObserverRequestStatus), + iOperationObserver(&aOperationObserver), + iFSRequestId(aRequestId), + iState( ESetFlags ) + { + FUNC_LOG; + CActiveScheduler::Add(this); + } +// + // ---------------------------------------------------------------------------- // CIpsPlgDeleteOperation::ConstructL @@ -115,6 +141,28 @@ return self; } +// +// ---------------------------------------------------------------------------- +// CIpsPlgDeleteOperation::NewL +// ---------------------------------------------------------------------------- +// +CIpsPlgDeleteOperation* CIpsPlgDeleteOperation::NewL( + CMsvSession& aMsvSession, + TRequestStatus& aObserverRequestStatus, + CMsvEntrySelection* aEntriesToDelete, + MFSMailRequestObserver& aOperationObserver, + const TInt aRequestId) + { + FUNC_LOG; + CIpsPlgDeleteOperation* self=new (ELeave) CIpsPlgDeleteOperation( + aMsvSession, aObserverRequestStatus, aOperationObserver, aRequestId ); + CleanupStack::PushL(self); + self->ConstructL( aEntriesToDelete ); + CleanupStack::Pop( self ); + return self; + } +// + // ---------------------------------------------------------------------------- // CIpsPlgDeleteOperation::~CIpsPlgDeleteOperation // ---------------------------------------------------------------------------- @@ -161,6 +209,7 @@ if ( iStatus.Int() != KErrNone ) { // something failed, just complete + SignalFSObserver(iStatus.Int()); TRequestStatus* status = &iObserverRequestStatus; User::RequestComplete(status, iStatus.Int()); return; @@ -177,6 +226,7 @@ if ( err != KErrNone ) { + SignalFSObserver(err); TRequestStatus* status = &iObserverRequestStatus; User::RequestComplete(status, iStatus.Int()); } @@ -198,6 +248,8 @@ } else { + // Inform observer + SignalFSObserver(iStatus.Int()); // nothing left to process, so complete the observer TRequestStatus* status = &iObserverRequestStatus; User::RequestComplete(status, iStatus.Int()); @@ -244,6 +296,7 @@ // if error then complete this pass with the error code if ( err ) { + SignalFSObserver(err); TRequestStatus* status = &iStatus; User::RequestComplete(status, err); } @@ -279,6 +332,7 @@ // if error then complete this pass with the error code if ( err ) { + SignalFSObserver(err); TRequestStatus* status = &iStatus; User::RequestComplete( status, err ); } @@ -335,7 +389,25 @@ return ret; } -// +// + +// +// ---------------------------------------------------------------------------- +// CIpsPlgDeleteOperation::SignalFSObserver +// ---------------------------------------------------------------------------- +// +void CIpsPlgDeleteOperation::SignalFSObserver(TInt aStatus) + { + if (iOperationObserver) + { + iFSProgress.iProgressStatus = TFSProgress::EFSStatus_RequestComplete; + iFSProgress.iError = aStatus; + iFSProgress.iParam = NULL; + + TRAP_IGNORE( iOperationObserver->RequestResponseL( iFSProgress, iFSRequestId ) ); + } + } +// // End of File