emailservices/emailclientapi/src/emailmailbox.cpp
branchRCL_3
changeset 64 3533d4323edc
parent 63 d189ee25cf9d
--- 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 <xqservicerequest.h>
-#include "email_services_api.h"
+#include "FreestyleEmailUiConstants.h"
 
 // Constants
 
-#include <QStringList>
-
-_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<TReplyForwardParams> 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<TMailListActivationData> 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<TEditorLaunchParams> 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<MMailboxContentObserver> relation( 
-        &CEmailMailbox::TObserverEventMapper::Equals );
+    TIdentityRelation<MMailboxContentObserver> 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<MMailboxContentObserver> relation( 
-        &CEmailMailbox::TObserverEventMapper::Equals );
+    TIdentityRelation<MMailboxContentObserver> 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<TFSMailMsgId>* newEntries( static_cast< RArray<TFSMailMsgId>* >( aParam1 ) );
     CleanupClosePushL( *newEntries );
     TFSMailMsgId* parentFolder = static_cast<TFSMailMsgId*>( 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.