--- a/emailuis/emailui/inc/FreestyleEmailUiMailViewerVisualiser.h Mon Mar 15 12:39:10 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,496 +0,0 @@
-/*
-* Copyright (c) 2007 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: FreestyleEmailUi mail viewer visualiser definition
-*
-*/
-
-
-#ifndef __FREESTYLEEMAILUI_MAILVIEWERVISUALISER_H__
-#define __FREESTYLEEMAILUI_MAILVIEWERVISUALISER_H__
-
-// SYSTEM INCLUDE FILES
-#include <e32base.h>
-#include <finditemengine.h>
-#include <AknNaviDecoratorObserver.h>
-//<cmail>
-#include "fstextviewerobserver.h"
-//#include <aknwaitnotewrapper.h>
-#include <cstack.h>
-#include <AknProgressDialog.h>
-//</cmail>
-//<cmail>
-#include "mfsmailrequestobserver.h"
-#include "mesmricalviewercallback.h"
-#include "mesmricalviewerobserver.h"
-//</cmail>
-
-// INTERNAL INCLUDE FILES
-#include "FreestyleEmailUiViewBase.h"
-#include "FreestyleEmailUiListVisualiser.h"
-#include "FreestyleEmailDownloadInformationMediator.h"
-#include "FreestyleEmailUiConstants.h"
-#include "FreestyleEmailUiControlBarCallback.h"
-#include "FreestyleEmailUiUtilities.h"
-#include "FreestyleEmailUiContactHandlerObserver.h"
-#include "FreestyleEmailUiMailViewerRichText.h"
-
-// FORWARD DECLARATIONS
-class CFSMailMessage;
-class CFreestyleEmailUiAppUi;
-class CFsTextViewer;
-class CFsTextViewerWatermark;
-class CFsSmileyDictionary;
-class CFreestyleEmailUiMailViewerControl;
-class CAiwServiceHandler;
-class CBrowserLauncher;
-class CFSEmailUiStatusIndicator;
-class CFlagSelectionGlobalNoteHandler;
-class CAknGlobalListQuery;
-class CAknGlobalNote;
-class CAknWaitDialog; //<cmail>
-class CAknNavigationDecorator;
-
-// list of different types of action menus to be shown.
-enum TActionMenuType
- {
- ENoActionMenuFocused = 0,
- EFocusOnNumberWithinMessage,
- EFocusOnHyperLinkWithinMessage,
- EFocusOnNameInAddressField,
- EFocusOnEMailInBodyText,
- EFocusOnAttachmentName,
- EFocusOnAttachmentsText
- };
-
-
-/**
-* CFSEmailUiMailViewerVisualiser implements message viewer view.
-* It uses FS Generic TV component, which displays rich text with hotspots.
-* View contains hotspot related action menu handling and many options menu
-*/
-class CFSEmailUiMailViewerVisualiser : public CFsEmailUiViewBase,
- public MFsTextViewerObserver,
- public MFSEmailDownloadInformationObserver,
- public MFSMailRequestObserver,
- public MFSEmailUiFolderListCallback,
- public MProgressDialogCallback, //cmail
- public MFSEmailUiGenericTimerCallback,
- public MFSEmailUiContactHandlerObserver,
- public MESMRIcalViewerCallback,
- public MESMRIcalViewerObserver,
- public MAknNaviDecoratorObserver
- {
-public: // construction and destruction
- static CFSEmailUiMailViewerVisualiser* NewL( CAlfEnv& aEnv, CFreestyleEmailUiAppUi& aAppUi, CAlfControlGroup& aMailViewerControlGroup );
- static CFSEmailUiMailViewerVisualiser* NewLC( CAlfEnv& aEnv, CFreestyleEmailUiAppUi& aAppUi, CAlfControlGroup& aMailViewerControlGroup );
- ~CFSEmailUiMailViewerVisualiser();
- void PrepareForExit();
-
-public: // methods
- CAlfControl* ViewerControl();
- void SetMskL();
- // Event handling forwarded from control
- TBool OfferEventL( const TAlfEvent& aEvent );
-
- // Handle accept/decline/tentative/remove commands given for meeting request message directly from list UI.
- void HandleMrCommandL( TInt aCommandId, TFSMailMsgId aMailboxId, TFSMailMsgId aFolderId, TFSMailMsgId aMessageId );
-
- void CompletePendingMrCommand();
- void CancelPendingMrCommandL();
-
- // Helper funcitons to get viewed message ID and Folder id
- TFSMailMsgId ViewedMessageFolderId();
- TFSMailMsgId ViewedMessageId();
-
- // Called from global flag selection dialog
- void FlagselectionCompleteL( TInt aSelection );
-
- void HandleMailBoxEventL( TFSMailEvent aEvent, TFSMailMsgId aMailbox,
- TAny* aParam1, TAny* aParam2, TAny* aParam3 );
-
-public: // from CFsEmailUiViewBase
- void DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane);
- void HandleCommandL( TInt aCommand );
-
- TUid Id() const;
-
- void HandleDynamicVariantSwitchL( CFsEmailUiViewBase::TDynamicSwitchType aType );
- void HandleDynamicVariantSwitchOnBackgroundL( CFsEmailUiViewBase::TDynamicSwitchType aType );
- void HandleForegroundEventL();
-
-protected: // from CFsEmailUiViewBase
- /*void DoDoActivateL( const TVwsViewId& aPrevViewId,
- TUid aCustomMessageId,
- const TDesC8& aCustomMessage );*/
- void ChildDoDeactivate();
- void ActivateControlGroup( TInt aDelay = 0 );
- void GetParentLayoutsL( RPointerArray<CAlfVisual>& aLayoutArray ) const;
- void NavigateBackL();
-
-public: // from MFsTextViewerObserver
- void HandleTextViewerEventL( TFsTextViewerEvent aEvent );
-
-public : // from MFSEmailDownloadInformationObserver
- void RequestResponseL( const TFSProgress& aEvent, const TPartData& aPart );
-
-public : // for MFSMailRequestObserver
- void RequestResponseL( TFSProgress aEvent, TInt aRequestId );
-
-public: // from MFSEmailUiFolderListCallback
- void FolderSelectedL( TFSMailMsgId aSelectedFolderId,
- TFSEmailUiCtrlBarResponse aResponse );
-
-public: // from MAknBackgroundProcess
- //<cmail> we are using different wait note
- //void StepL();
- //TBool IsProcessDone() const;
- //void ProcessFinished();
- //void DialogDismissedL( TInt /*aButtonId*/ );
- //TInt CycleError( TInt aError );
-
- // from MProgressDialogCallback
- void DialogDismissedL( TInt aButtonId);
- //</cmail>
-
-public: // from MFSEmailUiGenericTimerCallback
- void TimerEventL( CFSEmailUiGenericTimer* aTriggeredTimer );
-
-public: // from MFSEmailUiContactHandlerObserver
- void OperationCompleteL( TContactHandlerCmd aCmd,
- const RPointerArray<CFSEmailUiClsItem>& aContacts );
- void OperationErrorL( TContactHandlerCmd, TInt aError );
-
-public: // from MESMRIcalViewerCallback
- void ProcessAsyncCommandL( TESMRIcalViewerOperationType aCommandId, const CFSMailMessage& aMessage, MESMRIcalViewerObserver* aObserver = NULL );
- void ProcessSyncCommandL( TESMRIcalViewerOperationType aCommandId, const CFSMailMessage& aMessage );
- TBool CanProcessCommand( TESMRIcalViewerOperationType aCommandId ) const;
-
-public: // from MESMRIcalViewerObserver
- void OperationCompleted( TIcalViewerOperationResult aResult );
- void OperationError( TIcalViewerOperationResult aResult );
-
-public: // from MAknNaviDecoratorObserver
-
- /**
- * Called by navigationDecorator if navi arrows (left/right) have been pressed
- * @aParam aEventID specifies a tapping of either left or right arrow
- */
- void HandleNaviDecoratorEventL( TInt aEventID );
-
-// <cmail> Toolbar
-private: // from
-
- /**
- * @see CFsEmailUiViewBase::ChildDoActivateL
- */
- void ChildDoActivateL( const TVwsViewId& aPrevViewId,
- TUid aCustomMessageId,
- const TDesC8& aCustomMessage );
-
- /**
- * @see CFsEmailUiViewBase::OfferToolbarEventL
- */
- void OfferToolbarEventL( TInt aCommand );
-
- /**
- * @see CFsEmailUiViewBase::ToolbarResourceId
- */
- TInt ToolbarResourceId() const;
-// </cmail> Toolbar
-
-private: // methods
-
- // Class constructing
- CFSEmailUiMailViewerVisualiser( CAlfEnv& aEnv, CFreestyleEmailUiAppUi& aAppUi,
- CAlfControlGroup& aMailViewerControlGroup );
- void ConstructL();
-
- // Constructing & refreshing the view
- void AddBackgroundPicturesL();
- void ClearMailViewer();
- void UpdateMailViewerL();
- void RefreshL( TBool aFirstStart = EFalse );
- // Callback function to encapsulate actions which are deferred form RefreshL() to
- // make it complete faster
- static TInt DoPostRefresh( TAny* aSelfPtr );
- void PostRefreshL();
- void SetActionButtonIconAndHighLight();
- void CheckMessageStructureL();
- void UpdateDownloadIndicatorL( TFSProgress::TFSProgressStatus aStatus = TFSProgress::EFSStatus_Waiting );
-
- // Update our message pointer and change observed message
- void UpdateMessagePtrL( TFSMailMsgId aNewMailbox, TFSMailMsgId aNewFolder, TFSMailMsgId aNewMessage );
- void UpdateMessagePtr( CFSMailMessage* aNewMessagePtr );
-
- // Message stack handling. Ownership of message is transferred when succesful.
- void PushMessageL( CFSMailMessage* aMessage, TBool aIsEmbedded );
- CFSMailMessage* PopMessage();
- void EraseMessageStack();
- // Html viewer opening
- void LaunchHtmlViewerL();
-
- // Changing message states
- void SetMessageFollowupFlagL();
- void ChangeMsgReadStatusL( TBool aRead, TBool aCmdFromMrui );
-
- // For deleting current mail
- // Return value indicating whether message was deleted
- TBool DeleteMailL( CFSMailMessage& aMessagePtr, TBool aReturnPreviousView, TBool aDisableNote = EFalse );
-
- // Options menu dimm checking
- TBool ShowActionsMenuInOptionsL() const;
- TBool ShowDownloadManagerMenuInOptions() const;
- TBool ShowNextMessageMenuInOptions() const;
- TBool ShowPreviousMessageMenuInOptions() const;
- void ShowNextMessageL();
- void ShowPreviousMessageL();
-
- // Action menu lauching and selection handling
- void LaunchActionMenuL();
- void CreateActionMenuItemsL( TActionMenuType aActionMenuType );
- void HandleActionMenuCommandL( TActionMenuCustomItemId aSelectedActionMenuItem, TActionMenuType aActionMenuType );
-
-
- // Action menu command handling
- void OpenLinkInIntranetL( TBool aMenuSelection = ETrue );
- void OpenHotSpotUrlInBrowserL( CFindItemEngine::SFoundItem& aHotSpot );
- void CallToBodyHotSpotNumberL( CFindItemEngine::SFoundItem& aHotSpot );
- void ComposeMailL();
- void WriteEmailToHotSpotAddressL( CFindItemEngine::SFoundItem& aHotSpot );
-
- void OpenContactDetailsL();
-
- void LaunchRemoteLookupL( const TDesC& aHotspotText ) const;
- void AddToBookmarksL( const CFindItemEngine::SFoundItem& aBodyHotspotData ) const;
-
- void CallHotSpotAddressL();
- void CreateMessageL() const;
-
- TBool IsCopyToClipBoardAvailableL() const;
- void CopyCurrentHotspotToClipBoardL() const;
-
- // Attachment handling
- TBool ShowOpenAttachmentOptionL();
- TBool ShowSaveAttachmentOptionL();
- TBool ShowDownloadOptionL();
- TBool ShowMskDownloadOptionL();
- TBool ShowCancelDownloadOption();
- void OpenAttachmentL();
- void OpenAttachmentsViewL();
- void StartDowloadingAttachmentsL();
- void CancelDowloadingAttachmentsL();
- void SaveAllAttachmentsL();
- void RemoveFetchedAttachmentL();
-
- // Helper method for creating Part data needed when calling to download mediator
- TPartData MailData();
-
- // Content fecthing
-
- // list of different types of content
- enum TFetchedContentType
- {
- EMessagePlainTextBodyPart = 0,
- EMessageHtmlBodyPart,
- EMessageStructure
- };
- TBool StartFetchingBodyAfterOpeningL() const;
- TBool MessageStructureKnown( CFSMailMessage& aMsg ) const;
- TBool MessagePartFullyFetchedL( TFetchedContentType aFetchedContentType ) const;
- void StartFetchingMessagePartL( CFSMailMessage& aMessagePtr,
- TFetchedContentType aFetchedContentType );
- void StartFetchingMessageStructureL( CFSMailMessage& aMsg );
- void StartWaitedFetchingL( TFetchedContentType aFetchedContentType );
- void StartFetchingRemaininBodyLinesIfAtBottomL();
- void CancelFetchings();
-
- void SaveEmailAsContactL( const TDesC& aEmailAddress );
- void SavePhoneNumberAsContactL( const TDesC& aPhoneNumber );
-
- void SetMailboxNameToStatusPaneL();
-
- TInt ResolveBodyTextSchemaUrlTypeL( CFindItemEngine::SFoundItem aHotSpot );
-
- void SetActionMenuIconVisbilityL();
-
- void SendEventToAppUiL( TFSMailEvent aEventType );
-
- void DoFirstStartL();
-
- /**
- * Initiates the hotspot action, if currently focused header hotspot has
- * some direct hotspot action defined (not opening action menu). Returns
- * ETrue if direct action specified (and initiated) for the focused
- * hotspot, otherwise EFalse.
- */
- TBool HandleHeaderHotspotActionL( TViewerHeadingHotspotType aHotspotType );
-
- /**
- * Handles updating of navigation pane content
- * (navi arrows + priority and followup icons)
- *
- * @param aForESMR Whether the navi pane update is for meeting
- * request or not.
- */
- void UpdateNaviPaneL( TBool aForESMR = EFalse );
-
- /**
- * Sets mailviewer's navipane to background
- */
- void HideNaviPane();
-
-private: // Methods for moving message
-
- // Start moving current visible message to different folder
- // Return EFalse if moving is not a supported function
- TBool OpenFolderListForMessageMovingL();
-
- // Message is moved and viewer is closed asynchronously after selecting a folder
- // from the move to folder dialog. This is necessary because view swithching is asynchronous.
- static TInt MoveToFolderAndExitL( TAny* aMailViewerVisualiser );
-
-private: // data for moving message to different folder action
-
- TBool iMoveToFolderOngoing;
- TBool iMovingMeetingRequest;
- CAsyncCallBack* iAsyncCallback;
- TFSMailMsgId iMoveDestinationFolder;
-
-private: // data related to fetching
-
- TBool iFetchingMessageStructure;
- TInt iCurrentStructureFetchRequestId;
-
- TBool iFetchingPlainTextMessageBody;
- TInt iCurrentPlainTextBodyFetchRequestId;
-
- TBool iFetchingHtmlMessageBody;
- TInt iCurrentHtmlBodyFetchRequestId;
-
- TFetchedContentType iStartAsyncFetchType;
-
- // Wait note stuff
- //<cmail>
- //CAknWaitNoteWrapper* iAsyncWaitNote;
- CAknWaitDialog* iWaitDialog;
- CAknWaitDialog* iWaitDialogOpening;
- TBool iDialogNotDismissed;
- //</cmail>
- TBool iFetchingAlready;
- TBool iAsyncProcessComplete;
-
-private: // data for fetching timer
-
- CFSEmailUiGenericTimer* iFetchingAnimationTimer;
-
-private: // other class data
-
- // Handle to ALF environment
- CAlfEnv& iEnv;
-
- // Stack of open messages. Messages are owned by this stack.
- CStack<CFSMailMessage, ETrue>* iOpenMessages;
- // Stack of embedded messages. Message are NOT owned by this stack. Similar to iOpenMessages
- // but has NULL pointer in slots which correspond non-embedded messages.
- CStack<CFSMailMessage, EFalse>* iEmbeddedMessages;
- // Mail message pointer, changes always in do activate
- CFSMailMessage* iMessage;
-
- // Mail box where the iMessage object is.
- CFSMailBox* iMailBox;
-
- // AlfControl for capturing right and left navigation key events
- CFreestyleEmailUiMailViewerControl* iControl;
-
- // Text viewer and control object
- CFsTextViewer* iTextViewer;
-
- // Pointer to TV component control
- CAlfControl* iTextViewerControl; // not owned
-
- // Rich text for the view.
- CFSEmailUiMailViewerRichText* iViewerRichText;
-
- // Basic smileys for the
- CFsSmileyDictionary* iSmDictionary;
-
- // For opening the intranet app
- CAiwServiceHandler* iIBServiceHandler;
-
- // Boolean to indicate that layout has changed while some other view was active
- TBool iLayoutChangedWhileNotActive;
-
- // Temporary mail address for opening editor
- CFSMailAddress* iNewMailTempAddress;
-
- // Meeting request observer stuff.
- // Pointer to observer to inform, not owned.
- MESMRIcalViewerObserver* iMrObserverToInform;
- MESMRIcalViewerObserver::TIcalViewerOperationResult iOpResult;
- TBool iMrUiActive;
-
- // Flag to indicate that we are moving into next or previous message
- TBool iNextOrPevMessageSelected;
-
- CAlfControlGroup* iDownloadProgressControlGroup; // owned by AlfEnv
- CFSEmailUiStatusIndicator* iDownloadProgressIndicator;
-
- // Flag selection handler active object for global note
- CFlagSelectionGlobalNoteHandler* iFlagSelectionHanler;
-
- TBool iFirstStartCompleted;
- TBool iShowMskDownloadOption;
-
- // Flag to indicate we are viewing an embedded message. Many UI options need to be hidden in that case.
- TBool iEmbeddedMessageMode;
-
- //<cmail>
- // Message pointer to a deleted mail from Mrui
- TFSMailMsgId iDeletedMessageFromMrui;
- //</cmail>
- };
-
-
-////////////////////////////////////////
-// FLAG selection dialog global note handler
-/////////////////////////////////////////
-class CFlagSelectionGlobalNoteHandler : public CActive
- {
- public: // Constructors and destructor
- static CFlagSelectionGlobalNoteHandler* NewL( CFSEmailUiMailViewerVisualiser& aViewerVisualiser );
- virtual ~CFlagSelectionGlobalNoteHandler();
- void Cancel();
- void LaunchFlagListQueryDialogL();
-
- private:
-
- void RunL();
- void DoCancel();
- TInt RunError( TInt aError );
-
- private:
- CFlagSelectionGlobalNoteHandler( CFSEmailUiMailViewerVisualiser& aVoIPDialogObserver );
-
-
- private:
- CFSEmailUiMailViewerVisualiser& iViewerVisualiser;
- CAknGlobalListQuery* iGlobalFlagQuery;
- HBufC* iPrompt;
- TInt iSelection;
- };
-
-
-#endif //__FREESTYLEEMAILUI_MAILVIEWERVISUALISER_H__
-
-