diff -r 17302fa075e1 -r da6ac9d688df email/imap4mtm/imapprotocolcontroller/src/cimapupdateflagoperation.cpp --- a/email/imap4mtm/imapprotocolcontroller/src/cimapupdateflagoperation.cpp Wed Sep 15 12:08:45 2010 +0300 +++ b/email/imap4mtm/imapprotocolcontroller/src/cimapupdateflagoperation.cpp Wed Oct 13 14:27:34 2010 +0300 @@ -66,40 +66,6 @@ CActiveScheduler::Add(this); } -// NewL for Selection -CImapUpdateFlagOperation* CImapUpdateFlagOperation::NewL(CImapSyncManager& aSyncManager, - CMsvServerEntry& aServerEntry, - CImapSettings& aImapSettings, - const CMsvEntrySelection& aSourceSel , TBool aFlagChanged) - - { - - CImapUpdateFlagOperation* self = new (ELeave) CImapUpdateFlagOperation(aSyncManager, - aServerEntry, - aImapSettings); - CleanupStack::PushL(self); - self->ConstructL(aSourceSel,aFlagChanged); - CleanupStack::Pop(self); - return self; - } -//// ConstructL for Selection -void CImapUpdateFlagOperation::ConstructL(const CMsvEntrySelection& aSourceSel, TBool aFlagChanged) - { - - iSourceSel=new (ELeave) CMsvEntrySelection; - CheckSelectionL(aSourceSel, iSourceSel, ETrue, EFalse, EFalse, ETrue); - - // Initialise the progress counters - iProgressMsgsToDo=iSourceSel->Count(); - iProgressMsgsDone=0; - iMarkFlag = aFlagChanged; - iEntrySelection = ETrue; - // Add to the active scheduler - CActiveScheduler::Add(this); - } - - - void CImapUpdateFlagOperation::StartOperation(TRequestStatus& aStatus, CImapSession& aSession) //void CImapUpdateFlagOperation::StartOperation(TRequestStatus& aStatus) { @@ -123,79 +89,37 @@ { case EUpdateFlag: - { - HBufC8* uidSeq = NULL; - if(!iEntrySelection) //Entry iMarkFlag is Flase - { - TMsvEmailEntry entry = iServerEntry.Entry(); - TUint id = entry.UID(); - iMessageUids.AppendL(id); - if(entry.Unread()) - { - entry.SetSeenIMAP4Flag(EFalse); - } - else - { - entry.SetSeenIMAP4Flag(ETrue); - } - - - User::LeaveIfError(iServerEntry.ChangeEntry(entry)); - - uidSeq = CImapSession::CreateSequenceSetLC(iMessageUids); - - // finished with the UID array. Clear it. - iMessageUids.Reset(); - if(entry.SeenIMAP4Flag()) - { - // issue the store command - iSession->StoreL(iStatus, uidSeq->Des(), KImapAddFlags, KImapFlagSeen, ETrue, iFlagInfoResponseArray); - - } - else - { - // issue the store command - iSession->StoreL(iStatus, uidSeq->Des(), KStoreFlagsClearCommand, KImapFlagSeen, ETrue, iFlagInfoResponseArray); - } - } - else //Selection iMarkFlag is Trure - { - TMsvEntry *aNewEntry1; + { + TMsvEmailEntry entry = iServerEntry.Entry(); + TUint id = entry.UID(); + iMessageUids.AppendL(id); + if(entry.Unread()) + { + entry.SetSeenIMAP4Flag(EFalse); + } + else + { + entry.SetSeenIMAP4Flag(ETrue); + } + + + User::LeaveIfError(iServerEntry.ChangeEntry(entry)); + + HBufC8* uidSeq = CImapSession::CreateSequenceSetLC(iMessageUids); + + // finished with the UID array. Clear it. + iMessageUids.Reset(); + if(entry.SeenIMAP4Flag()) + { + // issue the store command + iSession->StoreL(iStatus, uidSeq->Des(), KImapAddFlags, KImapFlagSeen, ETrue, iFlagInfoResponseArray); - TInt count = iSourceSel->Count(); - while (count--) - { - iServerEntry.GetEntryFromId(iSourceSel->At(count), aNewEntry1); - TMsvEmailEntry entry(*aNewEntry1); - iMessageUids.AppendL(entry.UID()); - - if(iMarkFlag) // True means Unread - { - entry.SetSeenIMAP4Flag(EFalse); - } - else - { - entry.SetSeenIMAP4Flag(ETrue); - } - SetEntryL((*iSourceSel)[count]); - User::LeaveIfError(iServerEntry.ChangeEntry(entry)); - }// end of while - - uidSeq = CImapSession::CreateSequenceSetLC(iMessageUids); - - // finished with the UID array. Clear it. - iMessageUids.Reset(); - if(!iMarkFlag) //read - { - // issue the store command - iSession->StoreL(iStatus, uidSeq->Des(), KImapAddFlags, KImapFlagSeen, ETrue, iFlagInfoResponseArray); - } - else //Unread - { - // issue the store command - iSession->StoreL(iStatus, uidSeq->Des(), KStoreFlagsClearCommand, KImapFlagSeen, ETrue, iFlagInfoResponseArray); - } - } //End of else (Selection) + } + else + { + // issue the store command + iSession->StoreL(iStatus, uidSeq->Des(), KStoreFlagsClearCommand, KImapFlagSeen, ETrue, iFlagInfoResponseArray); + } iProgressState = TImap4GenericProgress::EBusy; CleanupStack::PopAndDestroy(uidSeq);