emailservices/emailclientapi/src/emailmailbox.cpp
branchRCL_3
changeset 10 f5907b1a1053
parent 8 e1b6206813b4
child 11 0396474f30f5
--- a/emailservices/emailclientapi/src/emailmailbox.cpp	Fri Feb 19 22:37:30 2010 +0200
+++ b/emailservices/emailclientapi/src/emailmailbox.cpp	Fri Mar 12 15:41:14 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+* Copyright (c) 2009 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"
@@ -15,7 +15,7 @@
 *
 */
 
-#include <e32cmn.h> 
+#include <e32cmn.h>
 #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
 #include <viewclipartner.h>
 #include <vwsdefpartner.h>
@@ -39,10 +39,14 @@
 #include "emailclientapi.hrh"
 #include "FreestyleEmailUiConstants.h"
 
+// Constants
+
+_LIT( KNewLine, "\n" );
+
 // -----------------------------------------------------------------------------
-// 
+//
 // -----------------------------------------------------------------------------
-CEmailMailbox* CEmailMailbox::NewL( 
+CEmailMailbox* CEmailMailbox::NewL(
     CPluginData& aPluginData,
     const TMailboxId& aMailboxId )
     {
@@ -54,30 +58,30 @@
     }
 
 // -----------------------------------------------------------------------------
-// 
+//
 // -----------------------------------------------------------------------------
-CEmailMailbox::CEmailMailbox( 
+CEmailMailbox::CEmailMailbox(
     CPluginData& aPluginData,
     const TMailboxId& aMailboxId )
     : iPluginData( aPluginData ),
     iMailboxId( aMailboxId.iId )
-    {        
+    {
     }
 
 // -----------------------------------------------------------------------------
-// 
+//
 // -----------------------------------------------------------------------------
 void CEmailMailbox::ConstructL()
     {
     iPlugin = iPluginData.ClaimInstanceL();
-    iEventMapper = new ( ELeave ) TObserverEventMapper( 
+    iEventMapper = new ( ELeave ) TObserverEventMapper(
         iPlugin, iPluginData.Uid(), iMailboxId );
     iFsMailbox = iPlugin->GetMailBoxByUidL( FsMailboxId() );
-    iSyncObserver = new (ELeave) CEmailMailbox::CEmailRequestObserver();    
+    iSyncObserver = new (ELeave) CEmailMailbox::CEmailRequestObserver();
     }
 
 // -----------------------------------------------------------------------------
-// 
+//
 // -----------------------------------------------------------------------------
 CEmailMailbox::~CEmailMailbox()
     {
@@ -89,7 +93,7 @@
     }
 
 // -----------------------------------------------------------------------------
-// 
+//
 // -----------------------------------------------------------------------------
 TEmailTypeId CEmailMailbox::InterfaceId() const
     {
@@ -97,7 +101,7 @@
     }
 
 // -----------------------------------------------------------------------------
-// 
+//
 // -----------------------------------------------------------------------------
 void CEmailMailbox::Release()
     {
@@ -105,20 +109,20 @@
     }
 
 // -----------------------------------------------------------------------------
-// 
+//
 // -----------------------------------------------------------------------------
 TMailboxId CEmailMailbox::MailboxId() const
     {
     return iMailboxId;
     }
-   
+
 // -----------------------------------------------------------------------------
-// 
+//
 // -----------------------------------------------------------------------------
 MEmailAddress* CEmailMailbox::AddressL() const
     {
     if ( !iAddress )
-        {        
+        {
         iAddress = CEmailAddress::NewL(
             MEmailAddress::ESender, EAPIOwns );
         iAddress->SetDisplayNameL( iFsMailbox->GetName() );
@@ -128,7 +132,7 @@
     }
 
 // -----------------------------------------------------------------------------
-// 
+//
 // -----------------------------------------------------------------------------
 TPtrC CEmailMailbox::MailboxName() const
     {
@@ -141,24 +145,24 @@
 TFSMailMsgId CEmailMailbox::FsMailboxId() const
     {
     return FsMsgId( iPluginData, iMailboxId );
-    }    
+    }
 
 // -----------------------------------------------------------------------------
-// 
+//
 // -----------------------------------------------------------------------------
 TInt CEmailMailbox::GetFoldersL( RFolderArray& aFolders ) const
     {
     TFSMailMsgId rootId = TFSMailMsgId();
     RPointerArray<CFSMailFolder> folders;
-    CleanupResetAndDestroyPushL( folders );    
-    iPlugin->ListFoldersL( FsMailboxId(), rootId, folders );    
+    CleanupResetAndDestroyPushL( folders );
+    iPlugin->ListFoldersL( FsMailboxId(), rootId, folders );
     TInt res( folders.Count() );
     for ( TInt i = 0; i < res; i++ )
         {
-        const CFSMailFolder* fsfolder = folders[i]; 
+        const CFSMailFolder* fsfolder = folders[i];
         const TEntryId id = fsfolder->GetFolderId().Id();
         const TFolderId folderId( id, iMailboxId );
-        CEmailFolder* folder = CEmailFolder::NewLC( iPluginData, folderId, folders[i] );        
+        CEmailFolder* folder = CEmailFolder::NewLC( iPluginData, folderId, folders[i] );
         aFolders.AppendL( folder );
         CleanupStack::Pop();    // folder
         }
@@ -169,7 +173,7 @@
     }
 
 // -----------------------------------------------------------------------------
-// 
+//
 // -----------------------------------------------------------------------------
 MEmailFolder* CEmailMailbox::FolderL( const TFolderId& aFolderId ) const
     {
@@ -177,94 +181,82 @@
             FsMsgId( iPluginData, iMailboxId ),
             FsMsgId( iPluginData, aFolderId ) );
     CleanupStack::PushL( fsFolder );
-    
-    CEmailFolder* folder = CEmailFolder::NewL( iPluginData, 
-                aFolderId, fsFolder);   
+
+    CEmailFolder* folder = CEmailFolder::NewL( iPluginData,
+                aFolderId, fsFolder);
     CleanupStack::Pop();    // folder
-    
-    return folder;             
+
+    return folder;
     }
- 
+
 // -----------------------------------------------------------------------------
-// 
+//
 // -----------------------------------------------------------------------------
-MEmailFolder* CEmailMailbox::FolderByTypeL( 
+MEmailFolder* CEmailMailbox::FolderByTypeL(
     const TFolderType aFolderType ) const
-    {   
+    {
     TFSMailMsgId fsFolderId;
-    
+
     switch ( aFolderType )
-        {                   
+        {
         case EInbox:
-            fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSInbox ); 
+            fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSInbox );
         case EOutbox:
-            fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSOutbox ); 
+            fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSOutbox );
         case EDrafts:
-            fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSDraftsFolder ); 
+            fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSDraftsFolder );
         case EDeleted:
-            fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSDeleted ); 
+            fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSDeleted );
         case ESent:
-            fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSSentFolder ); 
+            fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSSentFolder );
         case EOther:
         default:
             User::Leave( KErrNotFound );
             break;
         }
-    
+
     const TFolderId folderId( fsFolderId.Id(), iMailboxId );
-    
+
     CFSMailFolder* fsFolder = iPlugin->GetFolderByUidL(
             FsMsgId( iPluginData, iMailboxId ),
             fsFolderId );
     CleanupStack::PushL( fsFolder );
-    
+
     CEmailFolder* folder = CEmailFolder::NewL( iPluginData,
-            folderId, 
+            folderId,
             fsFolder );
-    
+
     CleanupStack::Pop();
-    
-    return folder;    
+
+    return folder;
     }
 
 // -----------------------------------------------------------------------------
-// 
+//
 // -----------------------------------------------------------------------------
 MEmailMessage* CEmailMailbox::MessageL( const TMessageId& aMessageId )
-    {    
-    CFSMailMessage *fsMessage = iPlugin->GetMessageByUidL( 
-            FsMsgId( iPluginData, aMessageId.iFolderId.iMailboxId ), 
-            FsMsgId( iPluginData, aMessageId.iFolderId ), 
-            FsMsgId( iPluginData, aMessageId ), 
+    {
+    CFSMailMessage *fsMessage = iPlugin->GetMessageByUidL(
+            FsMsgId( iPluginData, aMessageId.iFolderId.iMailboxId ),
+            FsMsgId( iPluginData, aMessageId.iFolderId ),
+            FsMsgId( iPluginData, aMessageId ),
             EFSMsgDataEnvelope);
 
-    CleanupStack::PushL( fsMessage );    
+    CleanupStack::PushL( fsMessage );
     CEmailMessage* message = CEmailMessage::NewL( iPluginData, fsMessage, EClientOwns );
     CleanupStack::Pop();  // fsMessage
-    
+
     return message;
     }
 
 // -----------------------------------------------------------------------------
-// 
+//
 // -----------------------------------------------------------------------------
 MEmailMessage* CEmailMailbox::CreateDraftMessageL() const
     {
     CFSMailMessage* fsMessage = iFsMailbox->CreateMessageToSend();
-    CleanupStack::PushL( fsMessage );    
-    MEmailMessage* message = CEmailMessage::NewL( iPluginData, fsMessage, EClientOwns );
-    CleanupStack::Pop();  // fsMessage
-    
-    return message;
-    }
-    
-// -----------------------------------------------------------------------------
-// 
-// -----------------------------------------------------------------------------
-MEmailMessage* CEmailMailbox::CreateReplyMessageL( const TMessageId& aMessageId, const TBool aReplyToAll ) const
-    {
-    CFSMailMessage* fsMessage = iFsMailbox->CreateReplyMessage( FsMsgId( iPluginData, aMessageId ), aReplyToAll );   
-    CleanupStack::PushL( fsMessage );    
+    User::LeaveIfNull( fsMessage );
+    CleanupStack::PushL( fsMessage );
     MEmailMessage* message = CEmailMessage::NewL( iPluginData, fsMessage, EClientOwns );
     CleanupStack::Pop();  // fsMessage
 
@@ -272,12 +264,13 @@
     }
 
 // -----------------------------------------------------------------------------
-// 
+//
 // -----------------------------------------------------------------------------
-MEmailMessage* CEmailMailbox::CreateForwardMessageL( const TMessageId& aMessageId ) const
-    {            
-    CFSMailMessage* fsMessage = iFsMailbox->CreateForwardMessage( FsMsgId( iPluginData, aMessageId ) );
-    CleanupStack::PushL( fsMessage );    
+MEmailMessage* CEmailMailbox::CreateReplyMessageL( const TMessageId& aMessageId, const TBool aReplyToAll ) const
+    {
+    CFSMailMessage* fsMessage = iFsMailbox->CreateReplyMessage( FsMsgId( iPluginData, aMessageId ), aReplyToAll );
+    User::LeaveIfNull( fsMessage );
+    CleanupStack::PushL( fsMessage );
     MEmailMessage* message = CEmailMessage::NewL( iPluginData, fsMessage, EClientOwns );
     CleanupStack::Pop();  // fsMessage
 
@@ -285,16 +278,31 @@
     }
 
 // -----------------------------------------------------------------------------
-// 
+//
+// -----------------------------------------------------------------------------
+MEmailMessage* CEmailMailbox::CreateForwardMessageL( const TMessageId& aMessageId ) const
+    {
+    CFSMailMessage* fsMessage = iFsMailbox->CreateForwardMessage(
+        FsMsgId( iPluginData, aMessageId ), KNewLine() );
+    User::LeaveIfNull( fsMessage );
+    CleanupStack::PushL( fsMessage );
+    MEmailMessage* message = CEmailMessage::NewL( iPluginData, fsMessage, EClientOwns );
+    CleanupStack::Pop();  // fsMessage
+
+    return message;
+    }
+
+// -----------------------------------------------------------------------------
+//
 // -----------------------------------------------------------------------------
 void CEmailMailbox::SynchroniseL( MMailboxSyncObserver& aObserver )
     {
     iSyncObserver->SetObserverL( &aObserver );
-    iRequestId = iFsMailbox->RefreshNowL( *iSyncObserver );    
+    iRequestId = iFsMailbox->RefreshNowL( *iSyncObserver );
     }
-    
+
 // -----------------------------------------------------------------------------
-// 
+//
 // -----------------------------------------------------------------------------
 void CEmailMailbox::CancelSynchronise()
     {
@@ -302,15 +310,15 @@
     }
 
 // -----------------------------------------------------------------------------
-// 
+//
 // -----------------------------------------------------------------------------
 void CEmailMailbox::RegisterObserverL( MMailboxContentObserver& aObserver )
     {
     iEventMapper->AddObserverL( aObserver );
     }
-        
+
 // -----------------------------------------------------------------------------
-// 
+//
 // -----------------------------------------------------------------------------
 void CEmailMailbox::UnregisterObserver( MMailboxContentObserver& aObserver )
     {
@@ -318,32 +326,32 @@
     }
 
 // -----------------------------------------------------------------------------
-// 
+//
 // -----------------------------------------------------------------------------
 MEmailMessageSearchAsync* CEmailMailbox::MessageSearchL()
     {
     MEmailMessageSearchAsync* searchAPI = CEmailMessageSearchAsync::NewL( iPluginData, iMailboxId );
     return searchAPI;
     }
-    
+
 void CEmailMailbox::ShowInboxL()
     {
     TMailListActivationData mailListData;
-             
+
     mailListData.iMailBoxId = FsMsgId(iPluginData, iMailboxId);
-             
+
     TPckgBuf<TMailListActivationData> pkgOut( mailListData );
     CVwsSessionWrapper* viewSrvSession = CVwsSessionWrapper::NewLC();
     viewSrvSession->ActivateView(TVwsViewId(KFSEmailUiUid, MailListId), KStartListWithFolderId, pkgOut);
-    CleanupStack::PopAndDestroy();    
+    CleanupStack::PopAndDestroy();
     }
 
 void CEmailMailbox::EditNewMessageL()
     {
     TEditorLaunchParams editorLaunchData;
     editorLaunchData.iMailboxId = FsMsgId(iPluginData, iMailboxId);
-    editorLaunchData.iActivatedExternally = ETrue; 
-    
+    editorLaunchData.iActivatedExternally = ETrue;
+
     TPckgBuf<TEditorLaunchParams> pckgData( editorLaunchData );
     CVwsSessionWrapper* viewSrvSession = CVwsSessionWrapper::NewLC();
     TUid command = TUid::Uid(KEditorCmdCreateNew);
@@ -355,22 +363,22 @@
     {
     CFSMailFolder* fsFolder = NULL;
     TFSMailMsgId fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSInbox );
-    
+
     }
 */
 // -----------------------------------------------------------------------------
-// 
+//
 // -----------------------------------------------------------------------------
-CEmailMailbox::TObserverEventMapper::TObserverEventMapper( 
-    CFSMailPlugin* aPlugin, 
+CEmailMailbox::TObserverEventMapper::TObserverEventMapper(
+    CFSMailPlugin* aPlugin,
     TUid aPluginUid, const TMailboxId& aMailboxId )
-     : iPlugin( aPlugin ), 
+     : iPlugin( aPlugin ),
        iFsMailboxId( aPluginUid.iUid, aMailboxId.iId )
     {
     }
 
 // -----------------------------------------------------------------------------
-// 
+//
 // -----------------------------------------------------------------------------
 CEmailMailbox::TObserverEventMapper::~TObserverEventMapper()
     {
@@ -418,29 +426,29 @@
 // Maps protocol a plugin event to client event
 // -----------------------------------------------------------------------------
 void CEmailMailbox::TObserverEventMapper::EventL(
-    TFSMailEvent aEvent, 
-    TFSMailMsgId aMailbox, 
-    TAny* aParam1, 
-    TAny* aParam2, 
+    TFSMailEvent aEvent,
+    TFSMailMsgId aMailbox,
+    TAny* aParam1,
+    TAny* aParam2,
     TAny* aParam3 )
     {
     const TEventMapFunc KMailboxEventHandlers[] = {
     CEmailMailbox::TObserverEventMapper::IgnoreEventL,
-    CEmailMailbox::TObserverEventMapper::IgnoreEventL, 
-    CEmailMailbox::TObserverEventMapper::IgnoreEventL, 
-    CEmailMailbox::TObserverEventMapper::IgnoreEventL,
     CEmailMailbox::TObserverEventMapper::IgnoreEventL,
     CEmailMailbox::TObserverEventMapper::IgnoreEventL,
     CEmailMailbox::TObserverEventMapper::IgnoreEventL,
     CEmailMailbox::TObserverEventMapper::IgnoreEventL,
     CEmailMailbox::TObserverEventMapper::IgnoreEventL,
     CEmailMailbox::TObserverEventMapper::IgnoreEventL,
-    CEmailMailbox::TObserverEventMapper::NewMessageL, 
+    CEmailMailbox::TObserverEventMapper::IgnoreEventL,
+    CEmailMailbox::TObserverEventMapper::IgnoreEventL,
+    CEmailMailbox::TObserverEventMapper::IgnoreEventL,
+    CEmailMailbox::TObserverEventMapper::NewMessageL,
     CEmailMailbox::TObserverEventMapper::MessageChangedL,
     CEmailMailbox::TObserverEventMapper::MessageDeletedL,
     CEmailMailbox::TObserverEventMapper::MessageMoved,
     CEmailMailbox::TObserverEventMapper::MessageCopiedL,
-    CEmailMailbox::TObserverEventMapper::NewFolderL, 
+    CEmailMailbox::TObserverEventMapper::NewFolderL,
     CEmailMailbox::TObserverEventMapper::FolderChangeL,
     CEmailMailbox::TObserverEventMapper::FoldersDeletedL,
     CEmailMailbox::TObserverEventMapper::FoldersMovedL,
@@ -453,69 +461,69 @@
     if ( index < sizeof( KMailboxEventHandlers ) / sizeof( KMailboxEventHandlers[ index ] ) )
         {
         // call event handler function
-        TEventMapFunc method = KMailboxEventHandlers[ index ];        
+        TEventMapFunc method = KMailboxEventHandlers[ index ];
         (this->*method)(id, aParam1,aParam2,aParam3 );
         }
     }
 
-void CEmailMailbox::TObserverEventMapper::IgnoreEventL( 
+void CEmailMailbox::TObserverEventMapper::IgnoreEventL(
     TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
     {
     }
-    
-void CEmailMailbox::TObserverEventMapper::NewMessageL( 
+
+void CEmailMailbox::TObserverEventMapper::NewMessageL(
     TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
     {
     }
-    
-void CEmailMailbox::TObserverEventMapper::MessageChangedL( 
+
+void CEmailMailbox::TObserverEventMapper::MessageChangedL(
     TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
     {
     }
-    
-void CEmailMailbox::TObserverEventMapper::MessageDeletedL( 
+
+void CEmailMailbox::TObserverEventMapper::MessageDeletedL(
     TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
     {
     }
-    
-void CEmailMailbox::TObserverEventMapper::MessageMoved( 
+
+void CEmailMailbox::TObserverEventMapper::MessageMoved(
     TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
     {
     }
-    
-void CEmailMailbox::TObserverEventMapper::MessageCopiedL( 
+
+void CEmailMailbox::TObserverEventMapper::MessageCopiedL(
     TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
     {
     }
-    
-void CEmailMailbox::TObserverEventMapper::NewFolderL( 
+
+void CEmailMailbox::TObserverEventMapper::NewFolderL(
     TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
     {
     }
-    
-void CEmailMailbox::TObserverEventMapper::FolderChangeL( 
+
+void CEmailMailbox::TObserverEventMapper::FolderChangeL(
     TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
     {
     }
-    
-void CEmailMailbox::TObserverEventMapper::FoldersDeletedL( 
+
+void CEmailMailbox::TObserverEventMapper::FoldersDeletedL(
     TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
     {
     }
-    
-void CEmailMailbox::TObserverEventMapper::FoldersMovedL( 
+
+void CEmailMailbox::TObserverEventMapper::FoldersMovedL(
     TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
     {
     }
-    
-void CEmailMailbox::TObserverEventMapper::ExceptionL( 
+
+void CEmailMailbox::TObserverEventMapper::ExceptionL(
     TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
     {
     }
-    
+
 
 // -----------------------------------------------------------------------------
-// 
+//
 // -----------------------------------------------------------------------------
 TBool CEmailMailbox::TObserverEventMapper::Equals( const MMailboxContentObserver& a1, const MMailboxContentObserver& a2 )
     {
@@ -524,7 +532,7 @@
 
 
 CEmailMailbox::CEmailRequestObserver::CEmailRequestObserver() : iObserver( NULL )
-    {    
+    {
     }
 
 
@@ -532,7 +540,7 @@
 {
     if (aEvent.iProgressStatus == TFSProgress::EFSStatus_RequestComplete)
         {
-        iObserver->MailboxSynchronisedL(aEvent.iError);       
+        iObserver->MailboxSynchronisedL(aEvent.iError);
         }
 }