diff -r 000000000000 -r 72b543305e3a email/imum/Mtms/Inc/Imap4MtmUi.h --- /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 +#include +#include +#include +#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& 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& aReturnString, + TInt& aTotalEntryCount, + TInt& aEntriesDone, + TInt& aCurrentEntrySize, + TInt& aCurrentBytesTrans) const; + + /** + * + */ + TInt GetSyncProgress( + const TDesC8& aProgress, + TBuf& 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__