emailuis/emailui/inc/FreestyleEmailUiSearchListVisualiser.h
changeset 2 5253a20d2a1e
parent 1 12c456ceeff2
child 8 e1b6206813b4
equal deleted inserted replaced
1:12c456ceeff2 2:5253a20d2a1e
     1 /*
     1 /*
     2 * Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). 
     2 * Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
     3 * All rights reserved.
     3 * All rights reserved.
     4 * This component and the accompanying materials are made available
     4 * This component and the accompanying materials are made available
     5 * under the terms of "Eclipse Public License v1.0"
     5 * under the terms of "Eclipse Public License v1.0"
     6 * which accompanies this distribution, and is available
     6 * which accompanies this distribution, and is available
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
    12 * Contributors:
    12 * Contributors:
    13 *
    13 *
    14 * Description:  FreestyleEmailUi search result list visualisation
    14 * Description:  FreestyleEmailUi search result list visualisation
    15 *
    15 *
    16 */
    16 */
    17     
    17 
    18 #ifndef __FREESTYLEEMAILUI_SEARCHLISTVISUALISER_H__
    18 #ifndef __FREESTYLEEMAILUI_SEARCHLISTVISUALISER_H__
    19 #define __FREESTYLEEMAILUI_SEARCHLISTVISUALISER_H__
    19 #define __FREESTYLEEMAILUI_SEARCHLISTVISUALISER_H__
    20 
    20 
    21 // SYSTEM INCLUDES
    21 // SYSTEM INCLUDES
    22 #include <e32base.h>
    22 #include <e32base.h>
    59 class CFSMailFolder;
    59 class CFSMailFolder;
    60 class CFSMailBox;
    60 class CFSMailBox;
    61 class CAsyncCallBack;
    61 class CAsyncCallBack;
    62 class CESMRIcalViewer;
    62 class CESMRIcalViewer;
    63 class CFsTreePlainTwoLineItemData;
    63 class CFsTreePlainTwoLineItemData;
    64 
    64 class CAknStylusPopUpMenu;
    65 
    65 
    66 struct SSearchListItem
    66 struct SSearchListItem
    67 	{
    67 	{
    68 	TInt iSearchListItemId;
    68 	TInt iSearchListItemId;
    69 	MFsTreeItemData* iTreeItemData;
    69 	MFsTreeItemData* iTreeItemData;
    70 	MFsTreeItemVisualizer* iTreeItemVisualiser;
    70 	MFsTreeItemVisualizer* iTreeItemVisualiser;
    71 	};
    71 	};
    72 
    72 
    73 class CFSEmailUiSearchListVisualiser : public CFsEmailUiViewBase, 
    73 class CFSEmailUiSearchListVisualiser : public CFsEmailUiViewBase,
    74 									   public MFSMailBoxSearchObserver, 
    74 									   public MFSMailBoxSearchObserver,
    75 									   //<cmail> touch
    75 									   //<cmail> touch
    76 									   public MFsTreeListObserver,
    76 									   public MFsTreeListObserver,
    77 									   public MFsActionMenuPositionGiver,
       
    78 									   //<cmail>
    77 									   //<cmail>
    79 									   public MFSEmailUiGenericTimerCallback,
    78 									   public MFSEmailUiGenericTimerCallback,
    80 									   public MFSEmailUiContactHandlerObserver
    79 									   public MFSEmailUiContactHandlerObserver
    81 	{
    80 	{
    82 public:
    81 public:
    83 	static CFSEmailUiSearchListVisualiser* NewL(CAlfEnv& aEnv, CFreestyleEmailUiAppUi* aAppUi, CAlfControlGroup& aSeacrhListControlGroup);
    82 	static CFSEmailUiSearchListVisualiser* NewL(CAlfEnv& aEnv, CFreestyleEmailUiAppUi* aAppUi, CAlfControlGroup& aSeacrhListControlGroup);
    84 	static CFSEmailUiSearchListVisualiser* NewLC(CAlfEnv& aEnv, CFreestyleEmailUiAppUi* aAppUi, CAlfControlGroup& aSearchListControlGroup);
    83 	static CFSEmailUiSearchListVisualiser* NewLC(CAlfEnv& aEnv, CFreestyleEmailUiAppUi* aAppUi, CAlfControlGroup& aSearchListControlGroup);
    85     virtual ~CFSEmailUiSearchListVisualiser();
    84     virtual ~CFSEmailUiSearchListVisualiser();
    86     void PrepareForExit();  
    85     void PrepareForExit();
    87 
    86 
    88 public: // from CFsEmailUiViewBase
    87 public: // from CFsEmailUiViewBase
    89 	void DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane);
    88 	void DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane);
    90 
    89 
    91     // From view 
    90     // From view
    92 	TUid Id() const;			   
    91 	TUid Id() const;
    93 	// <cmail> Toolbar
    92 	// <cmail> Toolbar
    94 	/*void DoActivateL(const TVwsViewId& aPrevViewId,
    93 	/*void DoActivateL(const TVwsViewId& aPrevViewId,
    95 	                 TUid aCustomMessageId,
    94 	                 TUid aCustomMessageId,
    96 	                 const TDesC8& aCustomMessage);*/
    95 	                 const TDesC8& aCustomMessage);*/
    97     // </cmail> Toolbar
    96     // </cmail> Toolbar
    98     void ChildDoDeactivate();                
    97     void ChildDoDeactivate();
    99     void HandleCommandL( TInt aCommand );
    98     void HandleCommandL( TInt aCommand );
   100 
    99 
   101     /**
   100     /**
   102 	 * @see CFsEmailUiViewBase::SetStatusBarLayout
   101 	 * @see CFsEmailUiViewBase::SetStatusBarLayout
   103 	 */ 
   102 	 */
   104     void SetStatusBarLayout();
   103     void SetStatusBarLayout();
   105 
   104 
   106     // Dynamic variant switch, called by appui
   105     // Dynamic variant switch, called by appui
   107     void HandleDynamicVariantSwitchL( CFsEmailUiViewBase::TDynamicSwitchType aType );
   106     void HandleDynamicVariantSwitchL( CFsEmailUiViewBase::TDynamicSwitchType aType );
   108     void GetParentLayoutsL( RPointerArray<CAlfVisual>& aLayoutArray ) const;
   107     void GetParentLayoutsL( RPointerArray<CAlfVisual>& aLayoutArray ) const;
   111     TBool IsNextMsgAvailable( TFSMailMsgId aCurrentMsgId, TFSMailMsgId& aFoundNextMsgId, TFSMailMsgId& aFoundNextMsgFolder ) const;
   110     TBool IsNextMsgAvailable( TFSMailMsgId aCurrentMsgId, TFSMailMsgId& aFoundNextMsgId, TFSMailMsgId& aFoundNextMsgFolder ) const;
   112     TBool IsPreviousMsgAvailable( TFSMailMsgId aCurrentMsgId, TFSMailMsgId& aFoundPreviousMsgId, TFSMailMsgId& aFoundPrevMsgFolder ) const;
   111     TBool IsPreviousMsgAvailable( TFSMailMsgId aCurrentMsgId, TFSMailMsgId& aFoundPreviousMsgId, TFSMailMsgId& aFoundPrevMsgFolder ) const;
   113     TInt MoveToNextMsgL( TFSMailMsgId aCurrentMsgId, TFSMailMsgId& aFoundNextMsgId );
   112     TInt MoveToNextMsgL( TFSMailMsgId aCurrentMsgId, TFSMailMsgId& aFoundNextMsgId );
   114     TInt MoveToPreviousMsgL( TFSMailMsgId aCurrentMsgId, TFSMailMsgId& aFoundPreviousMsgId );
   113     TInt MoveToPreviousMsgL( TFSMailMsgId aCurrentMsgId, TFSMailMsgId& aFoundPreviousMsgId );
   115     TInt MoveToPreviousMsgAfterDeleteL( TFSMailMsgId aFoundPreviousMsgId );
   114     TInt MoveToPreviousMsgAfterDeleteL( TFSMailMsgId aFoundPreviousMsgId );
   116     
   115 
   117 public: // from MFSMailBoxSearchObserver
   116 public: // from MFSMailBoxSearchObserver
   118     void MatchFoundL( CFSMailMessage* aMatchMessage );
   117     void MatchFoundL( CFSMailMessage* aMatchMessage );
   119     void SearchCompletedL();
   118     void SearchCompletedL();
       
   119     /**
       
   120      * server asks client if to change the search priority (when calling)
       
   121      */
       
   122     void ClientRequiredSearchPriority( TInt *apRequiredSearchPriority ); // <cmail>
   120 
   123 
   121 
   124 
   122 public: // new methods
   125 public: // new methods
   123     // Refresh the whole list
   126     // Refresh the whole list
   124 	void RefreshL();
   127 	void RefreshL();
   125 
   128 
   126 	// Mail list current model data
   129 	// Mail list current model data
   127 	CFSEmailUiMailListModel* Model();
   130 	CFSEmailUiMailListModel* Model();
   128 	
   131 
   129 	// Event handling forwarded from control
   132 	// Event handling forwarded from control
   130 	TBool OfferEventL( const TAlfEvent& aEvent ); 
   133 	TBool OfferEventL( const TAlfEvent& aEvent );
   131 
   134 
   132 	// Used from callback
   135 	// Used from callback
   133 	TInt LaunchSearchDialogL();	
   136 	TInt LaunchSearchDialogL();
   134 
   137 
   135 	// Used from appui to get the current index in search list
   138 	// Used from appui to get the current index in search list
   136 	TInt HighlightedIndex() const;
   139 	TInt HighlightedIndex() const;
   137 
   140 
   138 	// Start timer callback
   141 	// Start timer callback
   146         TAny* aParam1, TAny* aParam2, TAny* aParam3 );
   149         TAny* aParam1, TAny* aParam2, TAny* aParam3 );
   147 	void RemoveMsgItemsFromListIfFoundL( const RArray<TFSMailMsgId>& aEntryIds );
   150 	void RemoveMsgItemsFromListIfFoundL( const RArray<TFSMailMsgId>& aEntryIds );
   148 
   151 
   149 public: // From MFsTreeListObserver
   152 public: // From MFsTreeListObserver
   150     //<cmail> touch
   153     //<cmail> touch
   151     void TreeListEventL( const TFsTreeListEvent aEvent, const TFsTreeItemId aId );
   154     void TreeListEventL( const TFsTreeListEvent aEvent,
   152     
   155                          const TFsTreeItemId aId,
   153     // From MFsActionMenuPositionGiver
   156                          const TPoint& aPoint );
   154     TPoint ActionMenuPosition();
   157 
   155 	//</cmail>	
   158 	//</cmail>
   156 		
   159 
   157 public: // From MFSEMailUiContactHandlerObserver
   160 public: // From MFSEMailUiContactHandlerObserver
   158 
   161 
   159     void OperationCompleteL( TContactHandlerCmd aCmd,
   162     void OperationCompleteL( TContactHandlerCmd aCmd,
   160         const RPointerArray<CFSEmailUiClsItem>& aContacts );
   163         const RPointerArray<CFSEmailUiClsItem>& aContacts );
   161     void OperationErrorL( TContactHandlerCmd, TInt aError );
   164     void OperationErrorL( TContactHandlerCmd, TInt aError );
   162 
   165 
   163 // <cmail> Toolbar    
   166 // <cmail> Toolbar
   164 private: // from
   167 private: // from
   165     
   168 
   166     /**
   169     /**
   167      * @see CFsEmailUiViewBase::ChildDoActivateL
   170      * @see CFsEmailUiViewBase::ChildDoActivateL
   168      */
   171      */
   169     void ChildDoActivateL( const TVwsViewId& aPrevViewId,
   172     void ChildDoActivateL( const TVwsViewId& aPrevViewId,
   170             TUid aCustomMessageId,
   173             TUid aCustomMessageId,
   171             const TDesC8& aCustomMessage );
   174             const TDesC8& aCustomMessage );
   172    
   175 
   173 // </cmail> Toolbar    
   176 // </cmail> Toolbar
   174 
   177 
   175     // Called when flip state is changed
   178     // Called when flip state is changed
   176     void FlipStateChangedL( TBool aFlipOpen );
   179     void FlipStateChangedL( TBool aFlipOpen );
   177 
   180 
   178     /**
   181     /**
   179      * Handles the focus state changes
   182      * Handles the focus state changes
   180      * @param aVisible Indicates if focus should become visible or removed
   183      * @param aVisible Indicates if focus should become visible or removed
   181      */
   184      */
   182     void FocusVisibilityChange( TBool aVisible );
   185     void FocusVisibilityChange( TBool aVisible );
   183     
   186 
   184 private:
   187 private:
   185 	CFSEmailUiSearchListVisualiser( CFreestyleEmailUiAppUi* aAppUi, CAlfEnv& aEnv, CAlfControlGroup& aSearchListControlGroup );
   188 	CFSEmailUiSearchListVisualiser( CFreestyleEmailUiAppUi* aAppUi, CAlfEnv& aEnv, CAlfControlGroup& aSearchListControlGroup );
   186 	void ConstructL();
   189 	void ConstructL();
   187 
   190 
   188   	void ReScaleUiL();
   191   	void ReScaleUiL();
   189 	void SetSearchListLayoutAnchors();
   192 	void SetSearchListLayoutAnchors();
   190 	void SetSearchListTopBarLayoutAnchors();
   193 	void SetSearchListTopBarLayoutAnchors();
   191 	
   194 
   192 	void CreatePlainNodeL( const TDesC& aItemDataBuff,
   195 	void CreatePlainNodeL( const TDesC& aItemDataBuff,
   193                            CFsTreePlainOneLineNodeData* &aItemData,
   196                            CFsTreePlainOneLineNodeData* &aItemData,
   194                            CFsTreePlainOneLineNodeVisualizer* &aNodeVisualizer ) const;
   197                            CFsTreePlainOneLineNodeVisualizer* &aNodeVisualizer ) const;
   195 	void ExpandAllNodesL();
   198 	void ExpandAllNodesL();
   196 	void CollapseAllNodesL();
   199 	void CollapseAllNodesL();
   197 
   200 
   198 	// Helper functions to access model data
   201 	// Helper functions to access model data
   199 	TFSMailMsgId MsgIdFromIndex( TInt aItemIdx ) const;
   202 	TFSMailMsgId MsgIdFromIndex( TInt aItemIdx ) const;
   200 	TFSMailMsgId MsgIdFromListId( TFsTreeItemId aListId ) const;
   203 	TFSMailMsgId MsgIdFromListId( TFsTreeItemId aListId ) const;
   201 	CFSMailMessage& MsgPtrFromListId( TFsTreeItemId aListId );
   204 	CFSMailMessage& MsgPtrFromListId( TFsTreeItemId aListId );
   202 	
   205 
   203 	// Item data and visualiser helper functions 
   206 	// Item data and visualiser helper functions
   204 	MFsTreeItemData* ItemDataFromItemId( TFsTreeItemId aItemId );										
   207 	MFsTreeItemData* ItemDataFromItemId( TFsTreeItemId aItemId );
   205 	MFsTreeItemVisualizer* ItemVisualiserFromItemId( TFsTreeItemId aItemId );
   208 	MFsTreeItemVisualizer* ItemVisualiserFromItemId( TFsTreeItemId aItemId );
   206 	
   209 
   207 	// Helpers to get the ordinal of a message in the iModel
   210 	// Helpers to get the ordinal of a message in the iModel
   208 	TInt ItemIndexFromMessageId( const TFSMailMsgId& aMessageId ) const;
   211 	TInt ItemIndexFromMessageId( const TFSMailMsgId& aMessageId ) const;
   209 	TInt NextMessageIndex( TInt aCurMsgIdx ) const;
   212 	TInt NextMessageIndex( TInt aCurMsgIdx ) const;
   210 	TInt PreviousMessageIndex( TInt aCurMsgIdx ) const;
   213 	TInt PreviousMessageIndex( TInt aCurMsgIdx ) const;
   211 		
   214 
   212 	//<cmail> touch
   215 	//<cmail> touch
   213 	// Helper class for resolving touch events and actions	
   216 	// Helper class for resolving touch events and actions
   214 	void DoHandleActionL();	
   217 	void DoHandleActionL();
   215     //</cmail>
   218     //</cmail>
   216 	
   219 
   217 	// Open highlighted mail
   220 	// Open highlighted mail
   218 	void OpenHighlightedMailL();
   221 	void OpenHighlightedMailL();
   219 
   222 
   220 	// Compose, reply, reply all and forward
   223 	// Compose, reply, reply all and forward
   221 	void ReplyL( CFSMailMessage* aMsgPtr );
   224 	void ReplyL( CFSMailMessage* aMsgPtr );
   226 	void StartSearchL();
   229 	void StartSearchL();
   227 	void StopSearchL();
   230 	void StopSearchL();
   228 
   231 
   229 	// <cmail> fixed CS high cat. finding
   232 	// <cmail> fixed CS high cat. finding
   230     void ResetResultListL();
   233     void ResetResultListL();
   231     
   234 
   232 	void ChangeReadStatusOfHighlightedL( TInt aRead );
   235 	void ChangeReadStatusOfHighlightedL( TInt aRead );
   233 
   236 
   234 	void CheckAndUpdateFocusedMessageL();
   237 	void CheckAndUpdateFocusedMessageL();
   235 	
   238 
   236 	void RemoveFocusedFromListL();
   239 	void RemoveFocusedFromListL();
   237 
   240 
   238 	void UpdateMsgIconAndBoldingL( CFSMailMessage* aMsgPtr );
   241 	void UpdateMsgIconAndBoldingL( CFSMailMessage* aMsgPtr );
   239 	void UpdateMsgIconAndBoldingL( TInt aListIndex );
   242 	void UpdateMsgIconAndBoldingL( TInt aListIndex );
   240 
   243 
   241 	// Delete messages 
   244 	// Delete messages
   242 	void DeleteFocusedMessageL();
   245 	void DeleteFocusedMessageL();
   243 	
   246 
   244 	void CallToSenderL();
   247 	TBool CallToSenderL();
   245 	
   248 
   246 	void UpdateMailListSettingsL();	
   249 	void UpdateMailListSettingsL();
   247 
   250 
   248 	void UpdatePreviewPaneTextForItemL( CFsTreePlainTwoLineItemData* aItemData, CFSMailMessage* aMsgPtr );
   251 	void UpdatePreviewPaneTextForItemL( CFsTreePlainTwoLineItemData* aItemData, CFSMailMessage* aMsgPtr );
   249 	void FilterPreviewPaneTextL( TDes& aText ) const;
   252 	void FilterPreviewPaneTextL( TDes& aText ) const;
   250 	
   253 
   251 	void SetMskL();
   254 	void SetMskL();
   252 	
   255 
   253     void DoFirstStartL();
   256     void DoFirstStartL();
   254 	
   257 
   255     void LaunchActionMenuL();
       
   256     
       
   257     void HandleActionMenuCommandL( TActionMenuCustomItemId itemId );
       
   258     
       
   259     void SetHeaderAttributesL();
   258     void SetHeaderAttributesL();
   260     
   259 
       
   260     void LaunchStylusPopupMenuL( const TPoint& aPoint );
       
   261 
   261 private:
   262 private:
   262     // Pointer to Alf environment
   263     // Pointer to Alf environment
   263 	CAlfEnv* iEnv;
   264 	CAlfEnv* iEnv;
   264 
   265 
   265 	// Data to be filled from custom message
   266 	// Data to be filled from custom message
   276 	CAlfTextVisual* iBarTextVisual;
   277 	CAlfTextVisual* iBarTextVisual;
   277 
   278 
   278     	// Mail List control and layout
   279     	// Mail List control and layout
   279   	CFreestyleEmailUiSearchListControl* iSearchListControl;
   280   	CFreestyleEmailUiSearchListControl* iSearchListControl;
   280  	CAlfDeckLayout* iSearchListLayout;
   281  	CAlfDeckLayout* iSearchListLayout;
   281     CFSEmailUiMailListModel* iModel; 
   282     CFSEmailUiMailListModel* iModel;
   282   	CFsTreeList* iSearchList;
   283   	CFsTreeList* iSearchList;
   283     CFsTreeVisualizerBase* iSearchTreeListVisualizer;
   284     CFsTreeVisualizerBase* iSearchTreeListVisualizer;
   284   	TInt iNumSlots;		
   285   	TInt iNumSlots;
   285 
   286 
   286 	RArray<SSearchListItem> iSearchListItemArray;   
   287 	RArray<SSearchListItem> iSearchListItemArray;
   287    
   288 
   288 	HBufC* iLatestSearchText;
   289 	HBufC* iLatestSearchText;
   289 	
   290 
   290 	TBool iThisViewActive;
   291 	TBool iThisViewActive;
   291 
   292 
   292 	TBool iSearchOngoing;
   293 	TBool iSearchOngoing;
   293 
   294 
   294 	CFSEmailUiGenericTimer* iStartupCallbackTimer;
   295 	CFSEmailUiGenericTimer* iStartupCallbackTimer;
   295 	
   296 
   296 	RPointerArray<TDesC> iSearchStrings;
   297 	RPointerArray<TDesC> iSearchStrings;
   297 
   298 
   298 	
   299 
   299 	TBool iMsgDataCouldBeChanged;
   300 	TBool iMsgDataCouldBeChanged;
   300 	
   301 
   301 	// Previous view uid 	
   302 	// Previous view uid
   302 	TUid iPreviousViewUid;
   303 	TUid iPreviousViewUid;
   303   	
   304 
   304     TInt iListMode;    
   305     TInt iListMode;
   305     TInt iNodesInUse;
   306     TInt iNodesInUse;
   306     
   307 
   307     TFSMailMsgId iLatestOpenedMrId;
   308     TFSMailMsgId iLatestOpenedMrId;
   308     
   309 
   309     TInt iSearchCount;
   310     TInt iSearchCount;
   310     
   311 
   311 	TAknUiZoom iCurrentZoomLevel;
   312 	TAknUiZoom iCurrentZoomLevel;
   312   	
   313 
   313 	TBool iFirstStartCompleted;
   314 	TBool iFirstStartCompleted;
   314 	
   315 
   315 	TBool iListAddedToControlGroup;  //<cmail>
   316 	TBool iListAddedToControlGroup;  //<cmail>
   316 	TBool iPreparedForExit; //<cmail>
   317 	TBool iPreparedForExit; //<cmail>
   317 
   318 
       
   319     CAknStylusPopUpMenu* iStylusPopUpMenu;
       
   320     TBool iStylusPopUpMenuVisible;
       
   321 
       
   322 	//prevents improper executing of Call application - when call to contact
       
   323 	TBool iConsumeStdKeyYes_KeyUp; 
       
   324 	// decreases search priority to enable search for contact when call to contact
       
   325 	TInt iRequiredSearchPriority; 
   318   	};
   326   	};
   319 
   327 
   320 #endif 
   328 #endif