emailuis/emailui/inc/FreestyleEmailUiSearchListVisualiser.h
changeset 0 8466d47a6819
child 1 12c456ceeff2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/emailuis/emailui/inc/FreestyleEmailUiSearchListVisualiser.h	Thu Dec 17 08:39:21 2009 +0200
@@ -0,0 +1,319 @@
+/*
+* 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 search result list visualisation
+*
+*/
+    
+#ifndef __FREESTYLEEMAILUI_SEARCHLISTVISUALISER_H__
+#define __FREESTYLEEMAILUI_SEARCHLISTVISUALISER_H__
+
+// SYSTEM INCLUDES
+#include <e32base.h>
+
+//<cmail>
+#include "CFSMailCommon.h"
+#include "MFSMailBoxSearchObserver.h"
+#include "fstreevisualizerobserver.h"
+#include "fstreelistobserver.h"
+#include "fsccontactactionmenudefines.h"
+//</cmail>
+
+// INTERNAL INCLUDES
+#include "FreestyleEmailUiViewBase.h"
+#include "FreestyleEmailUiUtilities.h"
+#include "FreestyleEmailUiContactHandlerObserver.h"
+
+
+// FORWARD DECLARATIONS
+class CAlfTextVisual;
+class CAlfImageVisual;
+class CAlfDeckLayout;
+class CAlfAnchorLayout;
+class CFSEmailUiMailListModelItem;
+class CFSEmailUiMailListModel;
+class CFreestyleEmailUiTextureManager;
+class CFSMailFolder;
+class CFSMailClient;
+class CFSMailMessage;
+class CFsTreeList;
+class CFsTreeVisualizerBase;
+class MFsTreeItemData;
+class MFsTreeItemVisualizer;
+class CFreestyleEmailUiTextureManager;
+class CFreestyleEmailUiAppUi;
+class CFsTreePlainOneLineNodeData;
+class CFsTreePlainOneLineNodeVisualizer;
+class CPbkxContactActionMenu;
+class CFreestyleEmailUiSearchListControl;
+class CFSMailFolder;
+class CFSMailBox;
+class CAsyncCallBack;
+class CESMRIcalViewer;
+class CFsTreePlainTwoLineItemData;
+
+
+struct SSearchListItem
+	{
+	TInt iSearchListItemId;
+	MFsTreeItemData* iTreeItemData;
+	MFsTreeItemVisualizer* iTreeItemVisualiser;
+	};
+
+class CFSEmailUiSearchListVisualiser : public CFsEmailUiViewBase, 
+									   public MFSMailBoxSearchObserver, 
+									   //<cmail> touch
+									   public MFsTreeListObserver,
+									   public MFsActionMenuPositionGiver,
+									   //<cmail>
+									   public MFSEmailUiGenericTimerCallback,
+									   public MFSEmailUiContactHandlerObserver
+	{
+public:
+	static CFSEmailUiSearchListVisualiser* NewL(CAlfEnv& aEnv, CFreestyleEmailUiAppUi* aAppUi, CAlfControlGroup& aSeacrhListControlGroup);
+	static CFSEmailUiSearchListVisualiser* NewLC(CAlfEnv& aEnv, CFreestyleEmailUiAppUi* aAppUi, CAlfControlGroup& aSearchListControlGroup);
+    virtual ~CFSEmailUiSearchListVisualiser();
+    void PrepareForExit();  
+
+public: // from CFsEmailUiViewBase
+	void DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane);
+
+    // From view 
+	TUid Id() const;			   
+	// <cmail> Toolbar
+	/*void DoActivateL(const TVwsViewId& aPrevViewId,
+	                 TUid aCustomMessageId,
+	                 const TDesC8& aCustomMessage);*/
+    // </cmail> Toolbar
+    void ChildDoDeactivate();                
+    void HandleCommandL( TInt aCommand );
+
+    /**
+	 * @see CFsEmailUiViewBase::SetStatusBarLayout
+	 */ 
+    void SetStatusBarLayout();
+
+    // Dynamic variant switch, called by appui
+    void HandleDynamicVariantSwitchL( CFsEmailUiViewBase::TDynamicSwitchType aType );
+    void GetParentLayoutsL( RPointerArray<CAlfVisual>& aLayoutArray ) const;
+
+    // Navigation functions, used mainly from viewer
+    TBool IsNextMsgAvailable( TFSMailMsgId aCurrentMsgId, TFSMailMsgId& aFoundNextMsgId, TFSMailMsgId& aFoundNextMsgFolder ) const;
+    TBool IsPreviousMsgAvailable( TFSMailMsgId aCurrentMsgId, TFSMailMsgId& aFoundPreviousMsgId, TFSMailMsgId& aFoundPrevMsgFolder ) const;
+    TInt MoveToNextMsgL( TFSMailMsgId aCurrentMsgId, TFSMailMsgId& aFoundNextMsgId );
+    TInt MoveToPreviousMsgL( TFSMailMsgId aCurrentMsgId, TFSMailMsgId& aFoundPreviousMsgId );
+
+public: // from MFSMailBoxSearchObserver
+    void MatchFoundL( CFSMailMessage* aMatchMessage );
+    void SearchCompletedL();
+
+
+public: // new methods
+    // Refresh the whole list
+	void RefreshL();
+
+	// Mail list current model data
+	CFSEmailUiMailListModel* Model();
+	
+	// Event handling forwarded from control
+	TBool OfferEventL( const TAlfEvent& aEvent ); 
+
+	// Used from callback
+	TInt LaunchSearchDialogL();	
+
+	// Used from appui to get the current index in search list
+	TInt HighlightedIndex() const;
+
+	// Start timer callback
+	void TimerEventL( CFSEmailUiGenericTimer* aTriggeredTimer );
+
+	// Helper functions to get highlighted message id and folder id
+	TFSMailMsgId HighlightedMessageFolderId();
+  	TFSMailMsgId HighlightedMessageId();
+
+    void HandleMailBoxEventL( TFSMailEvent aEvent, TFSMailMsgId aMailbox,
+        TAny* aParam1, TAny* aParam2, TAny* aParam3 );
+	void RemoveMsgItemsFromListIfFoundL( const RArray<TFSMailMsgId>& aEntryIds );
+
+public: // From MFsTreeListObserver
+    //<cmail> touch
+    void TreeListEventL( const TFsTreeListEvent aEvent, const TFsTreeItemId aId );
+    
+    // From MFsActionMenuPositionGiver
+    TPoint ActionMenuPosition();
+	//</cmail>	
+		
+public: // From MFSEMailUiContactHandlerObserver
+
+    void OperationCompleteL( TContactHandlerCmd aCmd,
+        const RPointerArray<CFSEmailUiClsItem>& aContacts );
+    void OperationErrorL( TContactHandlerCmd, TInt aError );
+
+// <cmail> Toolbar    
+private: // from
+    
+    /**
+     * @see CFsEmailUiViewBase::ChildDoActivateL
+     */
+    void ChildDoActivateL( const TVwsViewId& aPrevViewId,
+            TUid aCustomMessageId,
+            const TDesC8& aCustomMessage );
+   
+// </cmail> Toolbar    
+
+    // Called when flip state is changed
+    void FlipStateChangedL( TBool aFlipOpen );
+
+    /**
+     * Handles the focus state changes
+     * @param aShow Indicates if focus should become visible or removed
+     */
+    void HandleTimerFocusStateChange( TBool aShow );
+    
+private:
+	CFSEmailUiSearchListVisualiser( CFreestyleEmailUiAppUi* aAppUi, CAlfEnv& aEnv, CAlfControlGroup& aSearchListControlGroup );
+	void ConstructL();
+
+  	void ReScaleUiL();
+	void SetSearchListLayoutAnchors();
+	void SetSearchListTopBarLayoutAnchors();
+	
+	void CreatePlainNodeL( const TDesC& aItemDataBuff,
+                           CFsTreePlainOneLineNodeData* &aItemData,
+                           CFsTreePlainOneLineNodeVisualizer* &aNodeVisualizer ) const;
+	void ExpandAllNodesL();
+	void CollapseAllNodesL();
+
+	// Helper functions to access model data
+	TFSMailMsgId MsgIdFromIndex( TInt aItemIdx ) const;
+	TFSMailMsgId MsgIdFromListId( TFsTreeItemId aListId ) const;
+	CFSMailMessage& MsgPtrFromListId( TFsTreeItemId aListId );
+	
+	// Item data and visualiser helper functions 
+	MFsTreeItemData* ItemDataFromItemId( TFsTreeItemId aItemId );										
+	MFsTreeItemVisualizer* ItemVisualiserFromItemId( TFsTreeItemId aItemId );
+	
+	// Helpers to get the ordinal of a message in the iModel
+	TInt ItemIndexFromMessageId( const TFSMailMsgId& aMessageId ) const;
+	TInt NextMessageIndex( TInt aCurMsgIdx ) const;
+	TInt PreviousMessageIndex( TInt aCurMsgIdx ) const;
+		
+	//<cmail> touch
+	// Helper class for resolving touch events and actions	
+	void DoHandleActionL();	
+    //</cmail>
+	
+	// Open highlighted mail
+	void OpenHighlightedMailL();
+
+	// Compose, reply, reply all and forward
+	void ReplyL( CFSMailMessage* aMsgPtr );
+	void ReplyAllL( CFSMailMessage* aMsgPtr );
+	void ForwardL( CFSMailMessage* aMsgPtr );
+	void DoReplyForwardL( TEditorLaunchMode aMode, CFSMailMessage* aMsgPtr = NULL );
+
+	void StartSearchL();
+	void StopSearchL();
+
+	// <cmail> fixed CS high cat. finding
+    void ResetResultListL();
+    
+	void ChangeReadStatusOfHighlightedL( TInt aRead );
+
+	void CheckAndUpdateFocusedMessageL();
+	
+	void RemoveFocusedFromListL();
+
+	void UpdateMsgIconAndBoldingL( CFSMailMessage* aMsgPtr );
+	void UpdateMsgIconAndBoldingL( TInt aListIndex );
+
+	// Delete messages 
+	void DeleteFocusedMessageL();
+	
+	void CallToSenderL();
+	
+	void UpdateMailListSettingsL();	
+
+	void UpdatePreviewPaneTextForItemL( CFsTreePlainTwoLineItemData* aItemData, CFSMailMessage* aMsgPtr );
+	void FilterPreviewPaneTextL( TDes& aText ) const;
+	
+	void SetMskL();
+	
+    void DoFirstStartL();
+	
+    void LaunchActionMenuL();
+    
+    void HandleActionMenuCommandL( TActionMenuCustomItemId itemId );
+    
+    void SetHeaderAttributesL();
+    
+private:
+    // Pointer to Alf environment
+	CAlfEnv* iEnv;
+
+	// Data to be filled from custom message
+	CFSMailBox* iMailBox;
+
+	// Layouts
+ 	CAlfAnchorLayout* iScreenAnchorLayout;
+ 	CAlfAnchorLayout* iSearchTopBarComponentLayout;
+
+  	// Top bar visuals and layout
+ 	CAlfDeckLayout* iSearchTopBarLayout;
+	CAlfImageVisual* iBarBgVisual;
+	//CAlfImageVisual* iBarFindImage; <cmail> not in cmail
+	CAlfTextVisual* iBarTextVisual;
+
+    	// Mail List control and layout
+  	CFreestyleEmailUiSearchListControl* iSearchListControl;
+ 	CAlfDeckLayout* iSearchListLayout;
+    CFSEmailUiMailListModel* iModel; 
+  	CFsTreeList* iSearchList;
+    CFsTreeVisualizerBase* iSearchTreeListVisualizer;
+  	TInt iNumSlots;		
+
+	RArray<SSearchListItem> iSearchListItemArray;   
+   
+	HBufC* iLatestSearchText;
+	
+	TBool iThisViewActive;
+
+	TBool iSearchOngoing;
+
+	CFSEmailUiGenericTimer* iStartupCallbackTimer;
+	
+	RPointerArray<TDesC> iSearchStrings;
+
+	
+	TBool iMsgDataCouldBeChanged;
+	
+	// Previous view uid 	
+	TUid iPreviousViewUid;
+  	
+    TInt iListMode;    
+    TInt iNodesInUse;
+    
+    TFSMailMsgId iLatestOpenedMrId;
+    
+    TInt iSearchCount;
+    
+	TAknUiZoom iCurrentZoomLevel;
+  	
+	TBool iFirstStartCompleted;
+	
+	TBool iListAddedToControlGroup;  //<cmail>
+	TBool iPreparedForExit; //<cmail>
+
+  	};
+
+#endif