--- a/ipsservices/ipssosplugin/src/ipsplgdeleteoperation.cpp Thu May 27 12:43:55 2010 +0300
+++ b/ipsservices/ipssosplugin/src/ipsplgdeleteoperation.cpp Fri Jun 11 13:27:14 2010 +0300
@@ -41,6 +41,8 @@
aMsvSession,
CActive::EPriorityStandard,
aObserverRequestStatus),
+ iOperationObserver(NULL),
+ iFSRequestId(KErrNotFound),
iState( ESetFlags ) // <qmail>
//</qmail> iBlank removed
{
@@ -49,6 +51,30 @@
}
//</qmail>
+// ----------------------------------------------------------------------------
+// CIpsPlgDeleteOperation::CIpsPlgDeleteOperation
+// ----------------------------------------------------------------------------
+//
+//<qmail>
+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);
+ }
+//</qmail>
+
// ----------------------------------------------------------------------------
// CIpsPlgDeleteOperation::ConstructL
@@ -115,6 +141,28 @@
return self;
}
+// <qmail>
+// ----------------------------------------------------------------------------
+// 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;
+ }
+// </qmail>
+
// ----------------------------------------------------------------------------
// 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;
}
-// </qmail>
+// </qmail>
+
+//<qmail>
+// ----------------------------------------------------------------------------
+// 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 ) );
+ }
+ }
+// </qmail>
// End of File