ipsservices/ipssosplugin/src/ipsplgdeleteoperation.cpp
changeset 43 99bcbff212ad
parent 23 2dc6caa42ec3
equal deleted inserted replaced
42:139d4b7b2938 43:99bcbff212ad
    39     :
    39     :
    40     CMsvOperation( 
    40     CMsvOperation( 
    41         aMsvSession, 
    41         aMsvSession, 
    42         CActive::EPriorityStandard, 
    42         CActive::EPriorityStandard, 
    43         aObserverRequestStatus),
    43         aObserverRequestStatus),
       
    44     iOperationObserver(NULL),
       
    45     iFSRequestId(KErrNotFound),
    44     iState( ESetFlags ) // <qmail>
    46     iState( ESetFlags ) // <qmail>
    45     //</qmail> iBlank removed    
    47     //</qmail> iBlank removed    
       
    48     {
       
    49     FUNC_LOG;
       
    50     CActiveScheduler::Add(this);
       
    51     }
       
    52 //</qmail>
       
    53 
       
    54 // ----------------------------------------------------------------------------
       
    55 // CIpsPlgDeleteOperation::CIpsPlgDeleteOperation
       
    56 // ----------------------------------------------------------------------------
       
    57 //
       
    58 //<qmail>
       
    59 CIpsPlgDeleteOperation::CIpsPlgDeleteOperation(
       
    60     CMsvSession& aMsvSession,
       
    61     TRequestStatus& aObserverRequestStatus,
       
    62     MFSMailRequestObserver& aOperationObserver,
       
    63     const TInt aRequestId)
       
    64     :
       
    65     CMsvOperation( 
       
    66         aMsvSession, 
       
    67         CActive::EPriorityStandard, 
       
    68         aObserverRequestStatus),
       
    69     iOperationObserver(&aOperationObserver),
       
    70     iFSRequestId(aRequestId),
       
    71     iState( ESetFlags )
    46     {
    72     {
    47     FUNC_LOG;
    73     FUNC_LOG;
    48     CActiveScheduler::Add(this);
    74     CActiveScheduler::Add(this);
    49     }
    75     }
    50 //</qmail>
    76 //</qmail>
   113     //</qmail>
   139     //</qmail>
   114     CleanupStack::Pop( self ); 
   140     CleanupStack::Pop( self ); 
   115     return self;
   141     return self;
   116     }
   142     }
   117 
   143 
       
   144 // <qmail>
       
   145 // ----------------------------------------------------------------------------
       
   146 // CIpsPlgDeleteOperation::NewL
       
   147 // ----------------------------------------------------------------------------
       
   148 //
       
   149 CIpsPlgDeleteOperation* CIpsPlgDeleteOperation::NewL(
       
   150     CMsvSession& aMsvSession,
       
   151     TRequestStatus& aObserverRequestStatus,
       
   152     CMsvEntrySelection* aEntriesToDelete,
       
   153     MFSMailRequestObserver& aOperationObserver,
       
   154     const TInt aRequestId)
       
   155     {
       
   156     FUNC_LOG;
       
   157     CIpsPlgDeleteOperation* self=new (ELeave) CIpsPlgDeleteOperation(
       
   158         aMsvSession, aObserverRequestStatus, aOperationObserver, aRequestId );
       
   159     CleanupStack::PushL(self);
       
   160     self->ConstructL( aEntriesToDelete );
       
   161     CleanupStack::Pop( self ); 
       
   162     return self;
       
   163     }
       
   164 // </qmail>
       
   165 
   118 // ----------------------------------------------------------------------------
   166 // ----------------------------------------------------------------------------
   119 // CIpsPlgDeleteOperation::~CIpsPlgDeleteOperation
   167 // CIpsPlgDeleteOperation::~CIpsPlgDeleteOperation
   120 // ----------------------------------------------------------------------------
   168 // ----------------------------------------------------------------------------
   121 //
   169 //
   122 CIpsPlgDeleteOperation::~CIpsPlgDeleteOperation()
   170 CIpsPlgDeleteOperation::~CIpsPlgDeleteOperation()
   159     FUNC_LOG;
   207     FUNC_LOG;
   160     // Make first a check, that nothing has failed
   208     // Make first a check, that nothing has failed
   161     if ( iStatus.Int() != KErrNone )
   209     if ( iStatus.Int() != KErrNone )
   162         {
   210         {
   163         // something failed, just complete
   211         // something failed, just complete
       
   212         SignalFSObserver(iStatus.Int());
   164         TRequestStatus* status = &iObserverRequestStatus;
   213         TRequestStatus* status = &iObserverRequestStatus;
   165         User::RequestComplete(status, iStatus.Int());
   214         User::RequestComplete(status, iStatus.Int());
   166         return;
   215         return;
   167         }
   216         }
   168 
   217 
   175         
   224         
   176         TRAPD( err, ret = SetNextLocallyDeletedFlagL() );
   225         TRAPD( err, ret = SetNextLocallyDeletedFlagL() );
   177         
   226         
   178         if ( err != KErrNone )
   227         if ( err != KErrNone )
   179             {
   228             {
       
   229             SignalFSObserver(err);
   180             TRequestStatus* status = &iObserverRequestStatus;
   230             TRequestStatus* status = &iObserverRequestStatus;
   181             User::RequestComplete(status, iStatus.Int());
   231             User::RequestComplete(status, iStatus.Int());
   182             }
   232             }
   183         else if ( ret )
   233         else if ( ret )
   184             {
   234             {
   196         // local delete completed, start deleting from server
   246         // local delete completed, start deleting from server
   197         StartDeleteFromServer();
   247         StartDeleteFromServer();
   198         }
   248         }
   199     else
   249     else
   200         {
   250         {
       
   251         // Inform observer
       
   252         SignalFSObserver(iStatus.Int());
   201         // nothing left to process, so complete the observer
   253         // nothing left to process, so complete the observer
   202         TRequestStatus* status = &iObserverRequestStatus;
   254         TRequestStatus* status = &iObserverRequestStatus;
   203         User::RequestComplete(status, iStatus.Int());
   255         User::RequestComplete(status, iStatus.Int());
   204         }
   256         }
   205     // </qmail>    
   257     // </qmail>    
   242     TRAPD( err, MakeNextDeleteLocallyL() );
   294     TRAPD( err, MakeNextDeleteLocallyL() );
   243     SetActive();
   295     SetActive();
   244     // if error then complete this pass with the error code
   296     // if error then complete this pass with the error code
   245     if ( err )
   297     if ( err )
   246         {
   298         {
       
   299         SignalFSObserver(err);
   247         TRequestStatus* status = &iStatus;
   300         TRequestStatus* status = &iStatus;
   248         User::RequestComplete(status, err);
   301         User::RequestComplete(status, err);
   249         }
   302         }
   250     }
   303     }
   251 
   304 
   277 
   330 
   278     SetActive();
   331     SetActive();
   279     // if error then complete this pass with the error code
   332     // if error then complete this pass with the error code
   280     if ( err )
   333     if ( err )
   281         {
   334         {
       
   335         SignalFSObserver(err);
   282         TRequestStatus* status = &iStatus;
   336         TRequestStatus* status = &iStatus;
   283         User::RequestComplete( status, err );
   337         User::RequestComplete( status, err );
   284         }
   338         }
   285     }
   339     }
   286 
   340 
   333         ret = ETrue;
   387         ret = ETrue;
   334         }
   388         }
   335     
   389     
   336     return ret;
   390     return ret;
   337     }
   391     }
   338 // </qmail>    
   392 // </qmail>
       
   393 
       
   394 //<qmail> 
       
   395 // ----------------------------------------------------------------------------
       
   396 // CIpsPlgDeleteOperation::SignalFSObserver
       
   397 // ----------------------------------------------------------------------------
       
   398 //
       
   399 void CIpsPlgDeleteOperation::SignalFSObserver(TInt aStatus)
       
   400     {
       
   401     if (iOperationObserver)
       
   402         {
       
   403         iFSProgress.iProgressStatus = TFSProgress::EFSStatus_RequestComplete;
       
   404         iFSProgress.iError = aStatus;
       
   405         iFSProgress.iParam = NULL;
       
   406     
       
   407         TRAP_IGNORE( iOperationObserver->RequestResponseL( iFSProgress, iFSRequestId ) );
       
   408         }
       
   409     }
       
   410 // </qmail>
   339 
   411 
   340 //  End of File
   412 //  End of File
   341 
   413 
   342 
   414