diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailclientapi/src/emailmailbox.cpp --- 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 +#include #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS #include #include @@ -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 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 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 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); } }