diff -r d189ee25cf9d -r 3533d4323edc emailservices/emailclientapi/src/emailmailbox.cpp --- a/emailservices/emailclientapi/src/emailmailbox.cpp Tue Aug 31 15:04:17 2010 +0300 +++ b/emailservices/emailclientapi/src/emailmailbox.cpp Wed Sep 01 12:28:57 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2010 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" @@ -31,22 +31,16 @@ #include "emailfolder.h" #include "emailmessage.h" #include "emailmessagesearch.h" -#include "CFSMailClient.h" +#include "cfsmailclient.h" #include "emailclientapiimpl.h" -#include "CFSMailPlugin.h" -#include "CFSMailBox.h" -#include "CFSMailFolder.h" +#include "cfsmailplugin.h" +#include "cfsmailbox.h" +#include "cfsmailfolder.h" #include "emailclientapi.hrh" - -#include -#include "email_services_api.h" +#include "FreestyleEmailUiConstants.h" // Constants -#include - -_LIT( KNewLine, "\n" ); - // ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- @@ -57,7 +51,7 @@ CEmailMailbox* self = new ( ELeave ) CEmailMailbox( aPluginData, aMailboxId ); CleanupStack::PushL( self ); self->ConstructL(); - CleanupStack::Pop( self ); + CleanupStack::Pop(); return self; } @@ -81,7 +75,7 @@ iEventMapper = new ( ELeave ) TObserverEventMapper( iPlugin, iPluginData.Uid(), iMailboxId ); iFsMailbox = iPlugin->GetMailBoxByUidL( FsMailboxId() ); - iSyncObserver = new ( ELeave ) CEmailMailbox::CEmailRequestObserver(); + iSyncObserver = new (ELeave) CEmailMailbox::CEmailRequestObserver(); } // ----------------------------------------------------------------------------- @@ -168,9 +162,9 @@ const TFolderId folderId( id, iMailboxId ); CEmailFolder* folder = CEmailFolder::NewLC( iPluginData, folderId, folders[i] ); aFolders.AppendL( folder ); - CleanupStack::Pop( folder ); + CleanupStack::Pop(); // folder } - CleanupStack::Pop( &folders ); + CleanupStack::Pop(); // folders folders.Close(); // close but don't delete folders because they are // owned by CEmailFolder return res; @@ -187,8 +181,8 @@ CleanupStack::PushL( fsFolder ); CEmailFolder* folder = CEmailFolder::NewL( iPluginData, - aFolderId, fsFolder ); - CleanupStack::Pop( fsFolder ); + aFolderId, fsFolder); + CleanupStack::Pop(); // folder return folder; } @@ -219,6 +213,7 @@ fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSSentFolder ); break; case EOther: + break; default: User::Leave( KErrNotFound ); break; @@ -235,7 +230,7 @@ folderId, fsFolder ); - CleanupStack::Pop( fsFolder ); + CleanupStack::Pop(); return folder; } @@ -249,11 +244,15 @@ FsMsgId( iPluginData, aMessageId.iFolderId.iMailboxId ), FsMsgId( iPluginData, aMessageId.iFolderId ), FsMsgId( iPluginData, aMessageId ), - EFSMsgDataEnvelope ); + EFSMsgDataEnvelope); CleanupStack::PushL( fsMessage ); - CEmailMessage* message = CEmailMessage::NewL( iPluginData, fsMessage, EClientOwns ); - CleanupStack::Pop( fsMessage ); + + CEmailMessage* message = NULL; + + if ( fsMessage ) + message = CEmailMessage::NewL( iPluginData, fsMessage, EClientOwns ); + CleanupStack::Pop(); // fsMessage return message; } @@ -267,7 +266,7 @@ User::LeaveIfNull( fsMessage ); CleanupStack::PushL( fsMessage ); MEmailMessage* message = CEmailMessage::NewL( iPluginData, fsMessage, EClientOwns ); - CleanupStack::Pop( fsMessage ); + CleanupStack::Pop(); // fsMessage return message; } @@ -275,15 +274,13 @@ // ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- -MEmailMessage* CEmailMailbox::CreateReplyMessageL( - const TMessageId& aMessageId, const TBool aReplyToAll ) const +MEmailMessage* CEmailMailbox::CreateReplyMessageL( const TMessageId& aMessageId, const TBool aReplyToAll ) const { - CFSMailMessage* fsMessage = iFsMailbox->CreateReplyMessage( - FsMsgId( iPluginData, aMessageId ), aReplyToAll ); + CFSMailMessage* fsMessage = iFsMailbox->CreateReplyMessage( FsMsgId( iPluginData, aMessageId ), aReplyToAll ); User::LeaveIfNull( fsMessage ); CleanupStack::PushL( fsMessage ); MEmailMessage* message = CEmailMessage::NewL( iPluginData, fsMessage, EClientOwns ); - CleanupStack::Pop( fsMessage ); + CleanupStack::Pop(); // fsMessage return message; } @@ -293,13 +290,27 @@ // ----------------------------------------------------------------------------- MEmailMessage* CEmailMailbox::CreateForwardMessageL( const TMessageId& aMessageId ) const { + // create temp header descriptor + TReplyForwardParams params; + params.iHeader = HBufC::NewLC(1); + params.iHeader->Des().Copy(KNullDesC()); + params.iSmartTag = HBufC::NewLC(1); + params.iSmartTag->Des().Copy(KNullDesC()); + TPckgBuf buf( params ); + HBufC* temp = HBufC::NewLC( buf.Length() ); + temp->Des().Copy( buf ); + CFSMailMessage* fsMessage = iFsMailbox->CreateForwardMessage( - FsMsgId( iPluginData, aMessageId ), KNewLine() ); + FsMsgId( iPluginData, aMessageId ), *temp ); User::LeaveIfNull( fsMessage ); CleanupStack::PushL( fsMessage ); MEmailMessage* message = CEmailMessage::NewL( iPluginData, fsMessage, EClientOwns ); - CleanupStack::Pop( fsMessage ); - + CleanupStack::Pop(); // fsMessage + + CleanupStack::PopAndDestroy( temp ); + CleanupStack::PopAndDestroy( params.iSmartTag ); + CleanupStack::PopAndDestroy( params.iHeader ); + return message; } @@ -341,35 +352,43 @@ // ----------------------------------------------------------------------------- MEmailMessageSearchAsync* CEmailMailbox::MessageSearchL() { - MEmailMessageSearchAsync* searchAPI = - CEmailMessageSearchAsync::NewL( iPluginData, iMailboxId ); + MEmailMessageSearchAsync* searchAPI = CEmailMessageSearchAsync::NewL( iPluginData, iMailboxId ); return searchAPI; } -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- void CEmailMailbox::ShowInboxL() { - User::Leave( KErrNotSupported ); + TMailListActivationData mailListData; + + mailListData.iMailBoxId = FsMsgId(iPluginData, iMailboxId); + + TPckgBuf pkgOut( mailListData ); + CVwsSessionWrapper* viewSrvSession = CVwsSessionWrapper::NewLC(); + viewSrvSession->ActivateView(TVwsViewId(KFSEmailUiUid, MailListId), KStartListWithFolderId, pkgOut); + CleanupStack::PopAndDestroy(); } -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- void CEmailMailbox::EditNewMessageL() { - bool syncronous; - - XQServiceRequest request( emailInterfaceNameSend, - emailOperationSendMail, - syncronous ); + TEditorLaunchParams editorLaunchData; + editorLaunchData.iExtra = NULL; + editorLaunchData.iMailboxId = FsMsgId(iPluginData, iMailboxId); + editorLaunchData.iActivatedExternally = ETrue; - QVariant returnValue; - if ( !request.send( returnValue ) ) - User::Leave( KErrGeneral ); + TPckgBuf pckgData( editorLaunchData ); + CVwsSessionWrapper* viewSrvSession = CVwsSessionWrapper::NewLC(); + TUid command = TUid::Uid(KEditorCmdCreateNew); + viewSrvSession->ActivateView(TVwsViewId(KFSEmailUiUid, MailEditorId), command, pckgData); + CleanupStack::PopAndDestroy( viewSrvSession ); } +/* +void CEmailMailbox::GetLatestMail() + { + CFSMailFolder* fsFolder = NULL; + TFSMailMsgId fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSInbox ); + } +*/ // ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- @@ -393,11 +412,9 @@ // Adds mailbox observer and subscribes to plugin mailbox events if there // were no previous observers. // ----------------------------------------------------------------------------- -void CEmailMailbox::TObserverEventMapper::AddObserverL( - MMailboxContentObserver& aObserver ) +void CEmailMailbox::TObserverEventMapper::AddObserverL( MMailboxContentObserver& aObserver ) { - TIdentityRelation relation( - &CEmailMailbox::TObserverEventMapper::Equals ); + TIdentityRelation relation( &CEmailMailbox::TObserverEventMapper::Equals ); if ( iClientObservers.Find( &aObserver, relation ) == KErrNotFound ) { const TInt count( iClientObservers.Count() ); @@ -413,11 +430,9 @@ // Removes an observer and removes event subscription if the observer was // last in observer array. // ----------------------------------------------------------------------------- -void CEmailMailbox::TObserverEventMapper::RemoveObserver( - MMailboxContentObserver& aObserver ) +void CEmailMailbox::TObserverEventMapper::RemoveObserver( MMailboxContentObserver& aObserver ) { - TIdentityRelation relation( - &CEmailMailbox::TObserverEventMapper::Equals ); + TIdentityRelation relation( &CEmailMailbox::TObserverEventMapper::Equals ); const TInt index( iClientObservers.Find( &aObserver, relation ) ); if ( index != KErrNotFound ) { @@ -475,188 +490,132 @@ } } -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -void CEmailMailbox::TObserverEventMapper::ConvertParamsL( - TMailboxId aMailbox, TAny* aParam1, TAny* aParam2, - REmailMessageIdArray& aMessageIds, TFolderId& aFolderId ) - { +void CEmailMailbox::TObserverEventMapper::ConvertParamsL( TMailboxId aMailbox, TAny* aParam1, + TAny* aParam2, REmailMessageIdArray& aMessageIds, TFolderId& aFolderId ) + { RArray* newEntries( static_cast< RArray* >( aParam1 ) ); CleanupClosePushL( *newEntries ); TFSMailMsgId* parentFolder = static_cast( aParam2 ); aFolderId = TFolderId( parentFolder->Id(), aMailbox ); - - for ( TInt j = 0; j < newEntries->Count(); j++ ) + + for (TInt j = 0; j < newEntries->Count(); j++ ) { - TFSMailMsgId fsId(( *newEntries )[j] ); - TMessageId messageId( fsId.Id(), aFolderId.iId, aMailbox ); - aMessageIds.Append( messageId ); + TFSMailMsgId fsId(( *newEntries )[j]); + TMessageId messageId( fsId.Id(), aFolderId.iId, aMailbox); + aMessageIds.Append(messageId); } - + CleanupStack::PopAndDestroy( newEntries ); } -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- void CEmailMailbox::TObserverEventMapper::IgnoreEventL( TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ ) { } -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- void CEmailMailbox::TObserverEventMapper::NewMessageL( TMailboxId aMailbox, TAny* aParam1, TAny* aParam2, TAny* /*aParam3*/ ) - { - REmailMessageIdArray messageIds; + { + REmailMessageIdArray messageIds; TFolderId folderId; ConvertParamsL( aMailbox, aParam1, aParam2, messageIds, folderId ); - CleanupClosePushL( messageIds ); - - for ( TInt i = 0; i < iClientObservers.Count(); i++ ) + for ( TInt i = 0; i < iClientObservers.Count(); i++ ) { MMailboxContentObserver* observer = iClientObservers[i]; - if (observer) - observer->NewMessageEventL( aMailbox, messageIds, folderId ); + observer->NewMessageEventL( aMailbox, messageIds, folderId ); } - - CleanupStack::PopAndDestroy( &messageIds ); } -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- void CEmailMailbox::TObserverEventMapper::MessageChangedL( TMailboxId aMailbox, TAny* aParam1, TAny* aParam2, TAny* /*aParam3*/ ) { - REmailMessageIdArray messageIds; + REmailMessageIdArray messageIds; TFolderId folderId; ConvertParamsL( aMailbox, aParam1, aParam2, messageIds, folderId ); - CleanupClosePushL( messageIds ); - - for ( TInt i = 0; i < iClientObservers.Count(); i++ ) + + for ( TInt i = 0; i < iClientObservers.Count(); i++ ) { MMailboxContentObserver* observer = iClientObservers[i]; - if (observer) - observer->MessageChangedEventL( aMailbox, messageIds, folderId ); + observer->MessageChangedEventL( aMailbox, messageIds, folderId ); } - CleanupStack::PopAndDestroy( &messageIds ); } -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- void CEmailMailbox::TObserverEventMapper::MessageDeletedL( TMailboxId aMailbox, TAny* aParam1, TAny* aParam2, TAny* /*aParam3*/ ) { REmailMessageIdArray messageIds; TFolderId folderId; ConvertParamsL( aMailbox, aParam1, aParam2, messageIds, folderId ); - CleanupClosePushL( messageIds ); - - for ( TInt i = 0; i < iClientObservers.Count(); i++ ) + + for ( TInt i = 0; i < iClientObservers.Count(); i++ ) { MMailboxContentObserver* observer = iClientObservers[i]; - if (observer) - observer->MessageDeletedEventL( aMailbox, messageIds, folderId ); + observer->MessageDeletedEventL( aMailbox, messageIds, folderId ); } - - CleanupStack::PopAndDestroy( &messageIds ); } -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- void CEmailMailbox::TObserverEventMapper::MessageMoved( TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ ) { } -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- void CEmailMailbox::TObserverEventMapper::MessageCopiedL( TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ ) { } -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- void CEmailMailbox::TObserverEventMapper::NewFolderL( TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ ) { } -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- void CEmailMailbox::TObserverEventMapper::FolderChangeL( TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ ) { } -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- void CEmailMailbox::TObserverEventMapper::FoldersDeletedL( TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ ) { } -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- void CEmailMailbox::TObserverEventMapper::FoldersMovedL( TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ ) { } -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- void CEmailMailbox::TObserverEventMapper::ExceptionL( TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ ) { } -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -TBool CEmailMailbox::TObserverEventMapper::Equals( - const MMailboxContentObserver& a1, const MMailboxContentObserver& a2 ) - { - return ( &a1 == &a2 ); - } -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -CEmailMailbox::CEmailRequestObserver::CEmailRequestObserver() : iObserver( NULL ) - { - } // ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- -void CEmailMailbox::CEmailRequestObserver::RequestResponseL( - TFSProgress aEvent, TInt /* aRequestId */ ) +TBool CEmailMailbox::TObserverEventMapper::Equals( const MMailboxContentObserver& a1, const MMailboxContentObserver& a2 ) { - if ( iObserver && aEvent.iProgressStatus == TFSProgress::EFSStatus_RequestComplete ) + return ( &a1 == &a2 ); + } + + +CEmailMailbox::CEmailRequestObserver::CEmailRequestObserver() : iObserver( NULL ) + { + } + + +void CEmailMailbox::CEmailRequestObserver::RequestResponseL( TFSProgress aEvent, TInt /* aRequestId */ ) +{ + if (aEvent.iProgressStatus == TFSProgress::EFSStatus_RequestComplete) { iObserver->MailboxSynchronisedL(aEvent.iError); } - } +} -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- void CEmailMailbox::CEmailRequestObserver::SetObserverL( MMailboxSyncObserver* aObserver ) - { +{ iObserver = aObserver; - } +} -// End of file +// End of file.