--- /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__