diff -r dcf0eedfc1a3 -r d189ee25cf9d emailservices/emailclientapi/src/emailfolder.cpp --- a/emailservices/emailclientapi/src/emailfolder.cpp Thu Aug 19 09:38:05 2010 +0300 +++ b/emailservices/emailclientapi/src/emailfolder.cpp Tue Aug 31 15:04:17 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c)2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c)2010 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -20,12 +20,11 @@ #include "emailapiutils.h" #include "messageiterator.h" #include "emailsorting.h" -#include "cfsmailfolder.h" -#include "cfsmailplugin.h" +#include "CFSMailFolder.h" +#include "CFSMailPlugin.h" #include "emailclientapi.hrh" #include "emailclientapiimpldefs.h" - // ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- @@ -50,7 +49,7 @@ CFSMailFolder *aFolder ) { CEmailFolder* self = CEmailFolder::NewLC( aPluginData, aFolderId, aFolder); - CleanupStack::Pop(); // self + CleanupStack::Pop( self ); return self; } @@ -76,6 +75,8 @@ { iPlugin = iPluginData.ClaimInstance(); + User::LeaveIfNull( iFolder ); + const TFSFolderType fsType = iFolder->GetFolderType(); switch ( fsType ) { @@ -158,7 +159,9 @@ // ----------------------------------------------------------------------------- TPtrC CEmailFolder::Name() const { - return TPtrC (iFolder->GetFolderName()); + if ( !iFolder ) + return KNullDesC(); + return TPtrC ( iFolder->GetFolderName() ); } // ----------------------------------------------------------------------------- @@ -166,10 +169,12 @@ // ----------------------------------------------------------------------------- TInt CEmailFolder::GetSubfoldersL( RFolderArray& aSubfolders ) const { + User::LeaveIfNull( iFolder ); + RPointerArray folders; CleanupResetAndDestroy >::PushL( folders ); - iFolder->GetSubFoldersL(folders); + iFolder->GetSubFoldersL( folders ); TInt res( folders.Count() ); @@ -178,34 +183,33 @@ const CFSMailFolder* fsfolder = folders[i]; const TEntryId id = fsfolder->GetFolderId().Id(); const TFolderId folderId( id, iFolderId.iMailboxId.iId ); - MEmailFolder* folder = CEmailFolder::NewLC( iPluginData, folderId, folders[i]); + MEmailFolder* folder = CEmailFolder::NewL( iPluginData, folderId, folders[i] ); aSubfolders.AppendL( folder ); - CleanupStack::Pop( folder ); // asubfolders took ownership - folders[i] = NULL; } - CleanupStack::Pop( &folders ); // folders - folders.Close(); // aSubfolders took ownership + CleanupStack::Pop( &folders ); + folders.Close(); return res; } // ----------------------------------------------------------------------------- // CEmailFolder::MessagesL // ----------------------------------------------------------------------------- -MMessageIterator* CEmailFolder::MessagesL( +MMessageIterator* CEmailFolder::MessagesL( const RSortCriteriaArray& aCriteria ) { RArray sortCriterias; + CleanupClosePushL( sortCriterias ); CEmailFolder::ToFsSortCriteriaL( aCriteria, sortCriterias ); - - MFSMailIterator* fsIter = iFolder->ListMessagesL(EFSMsgDataEnvelope, sortCriterias); + + MFSMailIterator* fsIter = iFolder->ListMessagesL( EFSMsgDataEnvelope, sortCriterias ); TUint count = iFolder->GetMessageCount(); - + + CleanupStack::PopAndDestroy( &sortCriterias ); CMessageIterator* iter = CMessageIterator::NewL( fsIter, iPluginData, count ); - - sortCriterias.Reset(); + return iter; - } + } // ----------------------------------------------------------------------------- // @@ -220,17 +224,16 @@ TMessageId msgId = aMessageIds[i]; if ( iFolderId != msgId.iFolderId ) { - // not all messages in the same folder, plugin API doesn't accept - // this! + // not all messages in the same folder, plugin API doesn't accept this. User::Leave( KErrArgument ); } fsArray.AppendL( FsMsgId( iPluginData, msgId ) ); - } + } iPlugin->DeleteMessagesByUidL( FsMsgId( iPluginData, iFolderId.iMailboxId ), FsMsgId( iPluginData, iFolderId ), fsArray ); - CleanupStack::PopAndDestroy(); // fsArray + CleanupStack::PopAndDestroy( &fsArray ); } // ----------------------------------------------------------------------------- @@ -252,7 +255,7 @@ EFSMailSortByUnread, EFSMailSortBySize, EFSMailSortByAttachment }; - + for ( TInt i=0; i < aSortCriteria.Count(); i++ ) { const TEmailSortCriteria& criteria = aSortCriteria[i]; @@ -271,5 +274,5 @@ aFsCriteria.AppendL( fsCriteria ); } } - -// End of file. + +// End of file