emailservices/emailclientapi/src/emailfolder.cpp
branchRCL_3
changeset 24 d189ee25cf9d
parent 18 6b8f3b30d0ec
child 25 3533d4323edc
--- 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<CFSMailFolder> folders;
     CleanupResetAndDestroy<RPointerArray<CFSMailFolder> >::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<TFSMailSortCriteria> 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