email/imum/Mtms/Inc/Imap4MtmUi.h
changeset 0 72b543305e3a
child 16 fa7d37e3fdf4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/email/imum/Mtms/Inc/Imap4MtmUi.h	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,616 @@
+/*
+* Copyright (c) 2006 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"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*       CImap4MtmUi - IMAP4 MTM UI
+*
+*/
+
+#ifndef __IMAP4MTMUI_H__
+#define __IMAP4MTMUI_H__
+
+#include <imapset.h>
+#include <mtmuibas.h>
+#include <eikdialg.h>
+#include <MsvPrgReporter.h>
+#include "ImumMtmBaseMtmUi.h"   // CImumMtmBaseMtmUi
+
+// forward declarations
+class CErrorUI;
+class TEditorParameters;
+class CMsvProgressReporterOperation;
+class CImap4ClientMtm;
+class CMuiuFlags;
+
+/**
+* CImap4MtmUi - IMAP4 MTM UI
+*/
+class CImap4MtmUi : public CImumMtmBaseMtmUi
+    {
+    public:
+        /**
+        *
+        */
+        static CImap4MtmUi* NewL(
+            CBaseMtm& aBaseMtm,
+            CRegisteredMtmDll& aRegisteredMtmDll);
+
+        /**
+        * Destructor
+        */
+        virtual ~CImap4MtmUi();
+
+        /**
+        * From CBaseMtmUi
+        * Function NOT dependent on the current context
+        * Context set to new entry
+        */
+        virtual CMsvOperation* CreateL(
+            const TMsvEntry& aEntry,
+            CMsvEntry& aParent,
+            TRequestStatus& aStatus);
+
+        /**
+        * From CBaseMtmUi
+        * Context-specific
+        */
+        virtual CMsvOperation* OpenL(TRequestStatus& aStatus);
+
+        /**
+        * From CBaseMtmUi
+        * Context-specific
+        */
+        virtual CMsvOperation* CloseL(TRequestStatus& aStatus);
+
+        /**
+        * From CBaseMtmUi
+        * Context-specific
+        */
+        virtual CMsvOperation* EditL(TRequestStatus& aStatus);
+
+        /**
+        * From CBaseMtmUi
+        * Context-specific
+        */
+        virtual CMsvOperation* ViewL(TRequestStatus& aStatus);
+
+        /**
+        * From CBaseMtmUi
+        * Context-specific
+        */
+        virtual CMsvOperation* CancelL(
+            TRequestStatus& aStatus,
+            const CMsvEntrySelection& aSelection);
+
+        /**
+        * From CBaseMtmUi
+        * Deletes entries from the current context, which must be a folder or service of the relevant MTM
+        */
+        virtual CMsvOperation* DeleteFromL(
+            const CMsvEntrySelection& aSelection,
+            TRequestStatus& aStatus);
+
+        /**
+        * From CBaseMtmUi
+        * Un-deletes entries from the current context, which must be a folder or service of the relevant MTM
+        */
+        virtual CMsvOperation* UnDeleteFromL(
+            const CMsvEntrySelection& aSelection,
+            TRequestStatus& aStatus);
+
+        /**
+        * From CBaseMtmUi
+        * Selections must be in same folder and all of the correct MTM type
+        * Context may change after calling these functions
+        */
+        virtual CMsvOperation* OpenL(
+            TRequestStatus& aStatus,
+            const CMsvEntrySelection& aSelection);
+
+        /**
+        * From CBaseMtmUi
+        * Selections must be in same folder and all of the correct MTM type
+        * Context may change after calling these functions
+        */
+        virtual CMsvOperation* CloseL(
+            TRequestStatus& aStatus,
+            const CMsvEntrySelection& aSelection);
+
+        /**
+        * From CBaseMtmUi
+        * Selections must be in same folder and all of the correct MTM type
+        * Context may change after calling these functions
+        */
+        virtual CMsvOperation* EditL(
+            TRequestStatus& aStatus,
+            const CMsvEntrySelection& aSelection);
+
+        /**
+        * From CBaseMtmUi
+        * Selections must be in same folder and all of the correct MTM type
+        * Context may change after calling these functions
+        */
+        virtual CMsvOperation* ViewL(
+            TRequestStatus& aStatus,
+            const CMsvEntrySelection& aSelection);
+
+        /**
+        * From CBaseMtmUi
+        */
+        virtual TInt QueryCapability(TUid aCapability, TInt& aResponse);
+
+        /**
+        * From CBaseMtmUi
+        */
+        virtual CMsvOperation* InvokeAsyncFunctionL(
+            TInt aFunctionId,
+            const CMsvEntrySelection& aSelection,
+            TRequestStatus& aCompletionStatus,
+            TDes8& aParameter);
+
+        /**
+        * From CBaseMtmUi
+        */
+        virtual void InvokeSyncFunctionL(
+            TInt aFunctionId,
+            const CMsvEntrySelection& aSelection,
+            TDes8& aParameter);
+
+        /**
+        * From CBaseMtmUi
+        * Context should be MTM folder/service to copy to
+        */
+        virtual CMsvOperation* CopyToL(
+            const CMsvEntrySelection& aSelection,
+            TRequestStatus& aStatus);
+
+        /**
+        * From CBaseMtmUi
+        * Context should be MTM folder/service to move to
+        */
+        virtual CMsvOperation* MoveToL(
+            const CMsvEntrySelection& aSelection,
+            TRequestStatus& aStatus);
+
+        /**
+        * From CBaseMtmUi
+        * Context should be MTM folder/service to copy from
+        */
+        virtual CMsvOperation* CopyFromL(
+            const CMsvEntrySelection& aSelection,
+            TMsvId aTargetId,
+            TRequestStatus& aStatus);
+
+        /**
+        * From CBaseMtmUi
+        * Context should be MTM folder/service to move from
+        */
+        virtual CMsvOperation* MoveFromL(
+            const CMsvEntrySelection& aSelection,
+            TMsvId aTargetId,
+            TRequestStatus& aStatus);
+
+        /**
+        * From CBaseMtmUi
+        * Context-specific
+        * Takes ownership of the passed entry (which the context is switched to )
+        */
+        virtual CMsvOperation* ReplyL(
+            TMsvId aDestination,
+            TMsvPartList aPartlist,
+            TRequestStatus& aCompletionStatus);
+
+        /**
+        * From CBaseMtmUi
+        * Context-specific
+        * Takes ownership of the passed entry (which the context is switched to )
+        */
+        virtual CMsvOperation* ForwardL(
+            TMsvId aDestination,
+            TMsvPartList aPartList,
+            TRequestStatus& aCompletionStatus);
+
+        /**
+        * From CBaseMtmUi
+        * Interpret transfer progress
+        */
+        virtual TInt GetProgress(
+            const TDesC8& aProgress,
+            TBuf<EProgressStringMaxLen>& aReturnString,
+            TInt& aTotalEntryCount,
+            TInt& aEntriesDone,
+            TInt& aCurrentEntrySize,
+            TInt& aCurrentBytesTrans) const;
+
+        /**
+        * From CBaseMtmUi
+        * Interpret transfer progress
+        */
+        virtual TInt DisplayProgressSummary(
+            const TDesC8& aProgress) const;
+
+        /**
+        *
+        */
+        CMsvOperation* LaunchMultipleEditorApplicationsL(
+            const CMsvEntrySelection& aSelection,
+            TRequestStatus& aStatus);
+
+        /**
+        *
+        */
+        CMsvOperation* LaunchEditorApplicationL(TRequestStatus& aStatus);
+
+        /**
+        *
+        */
+        CMsvOperation* LaunchEditorApplicationL(
+            TRequestStatus& aStatus,
+            const TEditorParameters& aParams);
+
+    public:
+        /**
+        *
+        */
+        inline CImap4ClientMtm* Imap4BaseMtm() const;
+
+        /**
+        *
+        */
+        TMsvId TrueServiceIdOfEntryL(TMsvId aEntryId);
+
+    protected:
+        /**
+        *
+        */
+        TBool IsConnected(const TMsvId aService) const;
+
+        /**
+        *
+        */
+        CMsvEntrySelection* SingleEntrySelectionLC(TMsvId aId) const;
+
+        /**
+        *
+        */
+        TMsvId SelectionContainsInboxL(
+            const CMsvEntry& aParentEntry,
+            const CMsvEntrySelection& aSelection) const;
+
+        /**
+        *
+        */
+        TBool SelectionContainsGhostEntryL(
+            const CMsvEntry& aParentEntry,
+            const CMsvEntrySelection& aSelection);
+
+        /**
+        *
+        */
+        TBool SelectionContainsOnlyMessagesL(
+            const CMsvEntry& aParentEntry,
+            const CMsvEntrySelection& aSelection) const;
+
+        /**
+        *
+        */
+        CMsvOperation* EditImap4ServiceL(
+            TRequestStatus& aStatus,
+            TMsvId aServiceEntry);
+
+        /**
+        *
+        */
+        HBufC* GetEditorFileNameL();
+
+        /**
+        *
+        */
+        HBufC* GetViewerFileNameL();
+
+        /**
+        *
+        */
+        TBool WithinIMAPInboxL(TMsvId aEntry);
+
+        /**
+        *
+        */
+        CMsvOperation* CopyMoveToL(
+            const CMsvEntrySelection& aSelection,
+            TRequestStatus& aStatus,
+            TBool aCopy);
+
+        /**
+        *
+        */
+        CMsvOperation* ForwardOrReplyL(
+            TMsvPartList aPartlist,
+            TMsvId aDestination,
+            TRequestStatus& aCompletionStatus,
+            TBool aForward);
+
+        /**
+        *
+        */
+        CMsvEntrySelection* StripInvalidEntriesLC(
+            const CMsvEntrySelection& aSelection) const;
+
+        /**
+        *
+        */
+        CMsvEntrySelection* StripBodyTextCompleteEntriesLC(
+            const CMsvEntrySelection& aSelection) const;
+
+        /**
+        *
+        */
+        CMsvEntrySelection* StripCompleteEntriesLC(
+            const CMsvEntrySelection& aSelection) const;
+
+        /**
+        *
+        */
+        void ValidateFolderNameL(
+            const TDesC& aName,
+            TDes8& aRetProgress);
+
+        /**
+        *
+        */
+        CMsvOperation* DeleteFoldersFromL(
+            const CMsvEntrySelection& aSelection,
+            TRequestStatus& aStatus,
+            TMsvId aService,
+            TBool aOnline);
+
+        /**
+        *
+        */
+        void CheckSelectionL(const CMsvEntrySelection& aSelection) const;
+
+        /**
+        *
+        */
+        void CheckEntryL(const TMsvEntry& aEntry) const;
+
+        /**
+        *
+        */
+        CMsvOperation* CompletedImap4OperationL(
+            TMsvId aServiceId,
+            TRequestStatus& aStatus);
+
+
+        /**
+        *
+        */
+        CMsvOperation* FetchMessagesL(
+            TRequestStatus& aStatus,
+            const CMsvEntrySelection& aSelection,
+            TInt aFunctionId,
+            TImImap4GetMailInfo& aGetMailInfo);
+
+        /**
+        * Initialises the parameters for Fetch New, Fetch All or Fetch Selected.
+        * @param aSelection: array of messages to be selected
+        * @param aGetMailInfo: get mail info to be filled
+        * @param aInsertParentFolder: ETrue if parent needs to be inserted at the beginning of the array, Fetch New and Fetch All need that
+        */
+        void InitParametersForFetchCmdL(
+            CMsvEntrySelection* aSelection,
+            TImImap4GetMailInfo& aGetMailInfo,
+            TBool aInsertParentFolder = ETrue ) const;
+
+
+        /**
+        *
+        */
+        void InitParametersForGetMailCmdL(
+            CMsvEntrySelection& aSelection,
+            TImImap4GetMailInfo& aGetMailInfo);
+
+        /**
+        *
+        */
+        TInt PopulateMessagesSyncL(const CMsvEntrySelection& aSelection);
+
+        /**
+        *
+        */
+        CMsvOperation* OpenMessageL(
+            TRequestStatus& aCompletionStatus,
+            const TEditorParameters& aEditorParams);
+
+        /**
+        *
+        */
+        CMsvOperation* PopulateMessagesL(
+            TRequestStatus& aCompletionStatus,
+            const CMsvEntrySelection& aSel);
+
+        /**
+        *
+        */
+        CMsvOperation* DoPopulateIncompleteMessageL(
+            TRequestStatus& aStatus,
+            const CMsvEntrySelection& aSel,
+            const TEditorParameters& aEditorParams);
+
+        /**
+        *
+        */
+        CMsvOperation* InvokeRemoteFetchOpL(
+            CMsvProgressReporterOperation& aReporter,
+            TRequestStatus& aCompletionStatus,
+            const CMsvEntrySelection& aSel,
+            TInt aFunctionId,
+            const TImImap4GetMailInfo& aGetMailInfo);
+
+        /**
+        *
+        */
+        CMsvOperation* InvokeCopyMoveOpL(
+            CMsvProgressReporterOperation& aReporter,
+            TRequestStatus& aCompletionStatus,
+            const CMsvEntrySelection& aSel,
+            TMsvId aTargetId,
+            TBool aCopy);
+
+    protected:
+
+        /**
+        * from CBaseMtmUi
+        */
+        virtual void GetResourceFileName(TFileName& aFileName) const;
+
+    private:
+
+        /**
+        *
+        */
+        TBool RemoteLinkAbort();
+
+        // --- Service state checking utilities
+        enum TImapServiceInformationFlags
+            {
+            EIsIdle=0x0001,
+            EIsDisconnected=0x0002,
+            EIsConnecting=0x0004,
+            EIsDisconnecting=0x0008,
+            EIsLoaded=0x0010
+            };
+
+        /**
+        *
+        */
+        inline TBool ServiceIsIdle(TInt aFlags) const;
+
+        /**
+        *
+        */
+        inline TBool ServiceIsDisconnected(TInt aFlags) const;
+
+        /**
+        *
+        */
+        inline TBool ServiceIsConnecting(TInt aFlags) const;
+
+        /**
+        *
+        */
+        inline TBool ServiceIsDisconnecting(TInt aFlags) const;
+
+        /**
+        *
+        */
+        inline TBool ServiceIsLoaded(TInt aFlags) const;
+
+        /**
+        *
+        */
+        TInt ServiceState(TMsvId aServiceId) const;
+
+        /**
+        *
+        */
+        CImap4MtmUi(CBaseMtm& aBaseMtm, CRegisteredMtmDll& aRegisteredMtmDll);
+
+        /**
+        *
+        */
+        virtual void ConstructL();
+
+        /**
+        *
+        */
+        TInt ShowErrorDialog(TInt aErrorCode, TInt aErrorMessageRID=0) const;
+
+        /**
+        *
+        */
+        TInt GetUiProgress(
+            const TDesC8& aProgress,
+            TBuf<EProgressStringMaxLen>& aReturnString,
+            TInt& aTotalEntryCount,
+            TInt& aEntriesDone,
+            TInt& aCurrentEntrySize,
+            TInt& aCurrentBytesTrans) const;
+
+        /**
+        *
+        */
+        TInt GetSyncProgress(
+            const TDesC8& aProgress,
+            TBuf<EProgressStringMaxLen>& aReturnString,
+            TInt& aTotalEntryCount,
+            TInt& aEntriesDone,
+            TInt& aCurrentEntrySize,
+            TInt& aCurrentBytesTrans) const;
+
+        /**
+        *
+        */
+        TInt DisplayUiProgressSummary(const TDesC8& aProgress) const;
+
+        /**
+        *
+        */
+        TInt DisplayConnectionProgressSummary(const TDesC8& aProgress) const;
+
+        /**
+        *
+        */
+        TInt DisplaySyncProgressSummary(const TDesC8& aProgress) const;
+
+        /**
+        *
+        */
+        CMsvOperation* OfferSynchroniseL(
+            TMsvId aService,
+            TRequestStatus& aStatus);
+
+        /**
+        *
+        */
+        CMsvOperation* ShowMessageInfoL(
+            TRequestStatus& aCompletionStatus,
+            TDes8& aParameter);
+
+        /**
+        * InitParametersForFilteredPopulateL
+        **/
+        void InitParametersForFilteredPopulateL( CMsvEntrySelection& aSelection,
+            TImImap4GetPartialMailInfo& aPartialGetMailInfo);
+
+        /**
+        * DoFilteredPopulateL
+        */
+        CMsvOperation* CImap4MtmUi::DoFilteredPopulateL(
+            TRequestStatus& aStatus,
+            const CMsvEntrySelection& aSelection,
+            TInt aFunctionId,
+            TImImap4GetPartialMailInfo& aPartialGetMailInfo);
+
+    private:
+        // --- Data ---
+        HBufC*      iEditorFilename;
+        HBufC*      iViewerFilename;
+        CMsvEntry*  iEntry;
+        TBuf<128>   iInboxName;
+    };
+
+
+#include "Imap4MtmUi.inl"
+
+#endif // __IMAP4MTMUI_H__