emailuis/emailui/inc/FreestyleEmailUiMailViewerVisualiser.h
branchRCL_3
changeset 12 4ce476e64c59
parent 11 0396474f30f5
child 13 8592a65ad3fb
--- 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__
-
-