emailuis/emailui/inc/FreestyleEmailUiAppui.h
changeset 1 12c456ceeff2
parent 0 8466d47a6819
child 3 a4d6f1ea0416
equal deleted inserted replaced
0:8466d47a6819 1:12c456ceeff2
     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:  FreestyleEmailUiAppUi class definition
    14 * Description:  FreestyleEmailUiAppUi class definition
    15 *
    15 *
    16 */
    16 */
    17  
    17 
    18 
    18 
    19 #ifndef __FREESTYLEEMAILUI_APPUI_H__
    19 #ifndef __FREESTYLEEMAILUI_APPUI_H__
    20 #define __FREESTYLEEMAILUI_APPUI_H__
    20 #define __FREESTYLEEMAILUI_APPUI_H__
    21   
    21 
    22 // SYSTEM INCLUDES
    22 // SYSTEM INCLUDES
    23 #include <aknViewAppUi.h>
    23 #include <aknViewAppUi.h>
    24 //<cmail> SF
    24 //<cmail> SF
    25 #include <alf/alfenv.h>
    25 #include <alf/alfenv.h>
    26 #include <alf/alfdisplay.h>
    26 #include <alf/alfdisplay.h>
    46 
    46 
    47 // INTERNAL INCLUDES
    47 // INTERNAL INCLUDES
    48 #include "FreestyleEmailUiPropertySubscriber.h"
    48 #include "FreestyleEmailUiPropertySubscriber.h"
    49 #include "FreestyleEmailUiConstants.h"
    49 #include "FreestyleEmailUiConstants.h"
    50 
    50 
    51 enum TForcedStatus 
    51 enum TForcedStatus
    52 	{
    52 	{
    53     ENoForce = 0,
    53     ENoForce = 0,
    54     EForceToSync,
    54     EForceToSync,
    55     EForceToConnected,
    55     EForceToConnected,
    56     EForceToDisconnected
    56     EForceToDisconnected
   140     void HandleActionL(const TAlfActionCommand& aActionCommand);
   140     void HandleActionL(const TAlfActionCommand& aActionCommand);
   141 	// <cmail>
   141 	// <cmail>
   142     void ProcessCommandL( TInt aCommand );
   142     void ProcessCommandL( TInt aCommand );
   143 	// </cmail>
   143 	// </cmail>
   144 	void HandleCommandL( TInt aCommand );
   144 	void HandleCommandL( TInt aCommand );
   145 	
   145 
   146 	// View switching functions
   146 	// View switching functions
   147 	void EnterFsEmailViewL( TUid aViewId );
   147 	void EnterFsEmailViewL( TUid aViewId );
   148 	void EnterFsEmailViewL( TUid aViewId, TUid aCustomMessageId, const TDesC8& aCustomMessage );
   148 	void EnterFsEmailViewL( TUid aViewId, TUid aCustomMessageId, const TDesC8& aCustomMessage );
   149 	void EnterPluginSettingsViewL( TUid aViewId, TUid aCustomMessageId, const TDesC8& aCustomMessage );
   149 	void EnterPluginSettingsViewL( TUid aViewId, TUid aCustomMessageId, const TDesC8& aCustomMessage );
   150 	void ReturnFromPluginSettingsView();
   150 	void ReturnFromPluginSettingsView();
   155 
   155 
   156 	/**
   156 	/**
   157 	 * Tries to activate the local view where the current view was navigated from.
   157 	 * Tries to activate the local view where the current view was navigated from.
   158 	 * Activates the grid view if no other previous view available.
   158 	 * Activates the grid view if no other previous view available.
   159 	 * @return UID of the view to be activated
   159 	 * @return UID of the view to be activated
   160 	 */ 
   160 	 */
   161 	TUid ReturnToPreviousViewL( const TDesC8& aCustomMessage = KNullDesC8 );
   161 	TUid ReturnToPreviousViewL( const TDesC8& aCustomMessage = KNullDesC8 );
   162 
   162 
   163 	void ReturnFromHtmlViewerL( TBool aMessageWasDeleted = EFalse );
   163 	void ReturnFromHtmlViewerL( TBool aMessageWasDeleted = EFalse );
   164 
   164 
   165     // Clears the navigation history used with Back functionality. 
   165     // Clears the navigation history used with Back functionality.
   166     // Thus, next call to ReturnToPreviousViewL() will return to the main grid.
   166     // Thus, next call to ReturnToPreviousViewL() will return to the main grid.
   167     void EraseViewHistory();
   167     void EraseViewHistory();
   168 
   168 
   169 	// Create new mail with compose command
   169 	// Create new mail with compose command
   170 	void CreateNewMailL();
   170 	void CreateNewMailL();
   173 	CFsEmailUiViewBase* CurrentActiveView();
   173 	CFsEmailUiViewBase* CurrentActiveView();
   174     // Returns pointer to the previous active view. Ownership not transferred.
   174     // Returns pointer to the previous active view. Ownership not transferred.
   175     CFsEmailUiViewBase* PreviousActiveView();
   175     CFsEmailUiViewBase* PreviousActiveView();
   176     // Tells if plugin settings view is currently open
   176     // Tells if plugin settings view is currently open
   177     TBool IsPluginSettingsViewActive();
   177     TBool IsPluginSettingsViewActive();
   178 	
   178 
   179 	// getter to generic components
   179 	// getter to generic components
   180 	CFSEmailUiLayoutHandler* LayoutHandler();
   180 	CFSEmailUiLayoutHandler* LayoutHandler();
   181 	CFreestyleEmailUiTextureManager* FsTextureManager();
   181 	CFreestyleEmailUiTextureManager* FsTextureManager();
   182 //	CFSEmailUiStatusIndicator* StatusIndicator();
   182 //	CFSEmailUiStatusIndicator* StatusIndicator();
   183 
   183 
   184 	// Functions used by grid and viewer
   184 	// Functions used by grid and viewer
   185 	TInt NewEmailsInModelL();
   185 	TInt NewEmailsInModelL();
   186 	TInt EmailsInModelL();	  
   186 	TInt EmailsInModelL();
   187 	TInt EmailIndexInModel();
   187 	TInt EmailIndexInModel();
   188 		
   188 
   189     /**
   189     /**
   190     * LaunchEditorL
   190     * LaunchEditorL
   191     * Launch editor with the given address in TO-field and focus in MSG-field
   191     * Launch editor with the given address in TO-field and focus in MSG-field
   192     * @param aToAddress The email address to put in TO-field on startup. Ownership
   192     * @param aToAddress The email address to put in TO-field on startup. Ownership
   193     * is not transferred.
   193     * is not transferred.
   194     */
   194     */
   195 	void LaunchEditorL( CFSMailAddress* aToAddress );
   195 	void LaunchEditorL( CFSMailAddress* aToAddress );
   196 	
   196 
   197     /**
   197     /**
   198     * LaunchEditorL
   198     * LaunchEditorL
   199     * Launch editor
   199     * Launch editor
   200     * @param aMode The mode in which the editor is started
   200     * @param aMode The mode in which the editor is started
   201     * @param aParams Editor launch parameters
   201     * @param aParams Editor launch parameters
   202     */
   202     */
   203 	void LaunchEditorL( TEditorLaunchMode aMode, const TEditorLaunchParams& aParams );
   203 	void LaunchEditorL( TEditorLaunchMode aMode, const TEditorLaunchParams& aParams );
   204 	
   204 
   205 	CFSMailClient* GetMailClient();
   205 	CFSMailClient* GetMailClient();
   206 	CFSEmailCRHandler* GetCRHandler();
   206 	CFSEmailCRHandler* GetCRHandler();
   207 	
   207 
   208 	// Gets active mailbox pointer from the UI
   208 	// Gets active mailbox pointer from the UI
   209 	// Ownership IS NOT transferred to the callers
   209 	// Ownership IS NOT transferred to the callers
   210 	CFSMailBox* GetActiveMailbox();
   210 	CFSMailBox* GetActiveMailbox();
   211 
   211 
   212 	void SubscribeMailboxL( TFSMailMsgId aActiveMailboxId );
   212 	void SubscribeMailboxL( TFSMailMsgId aActiveMailboxId );
   213 	void SetActiveMailboxL( TFSMailMsgId aActiveMailboxId, TBool aAutoSync = ETrue );
   213 	void SetActiveMailboxL( TFSMailMsgId aActiveMailboxId, TBool aAutoSync = ETrue );
   214 	CMsvSession* GetMsvSession();
   214 	CMsvSession* GetMsvSession();
   215 
   215 
   216 	TFSMailMsgId GetActiveBoxInboxId();
   216 	TFSMailMsgId GetActiveBoxInboxId();
   217 	TFSMailMsgId GetActiveMailboxId();
   217 	TFSMailMsgId GetActiveMailboxId();
   218 	
   218 
   219     /**
   219     /**
   220     * Show folder list or sort list as control bar popup list.
   220     * Show folder list or sort list as control bar popup list.
   221     * 
   221     *
   222     * @param aCurrentSortOrder Current sort order in mail list
   222     * @param aCurrentSortCriteria Current sort criteria in mail list
   223     * @param aFolderId/Type Folder id/type of the currently active mail folder
   223     * @param aFolderId/Type Folder id/type of the currently active mail folder
   224     * @param aCallback Callback pointer to use when reporting user selection
   224     * @param aCallback Callback pointer to use when reporting user selection
   225     * @param aButton Selected control bar button, used when positioning the list
   225     * @param aButton Selected control bar button, used when positioning the list
   226     */
   226     */
   227 	void ShowFolderListInPopupL( const TFSMailMsgId aFolderType,
   227 	void ShowFolderListInPopupL( const TFSMailMsgId aFolderType,
   228                                  MFSEmailUiFolderListCallback* aCallback,
   228                                  MFSEmailUiFolderListCallback* aCallback,
   229 								 MFsControlButtonInterface* aButton );
   229 								 MFsControlButtonInterface* aButton );
   230 	void ShowSortListInPopupL( const TFSMailSortField aCurrentSortOrder,
   230 	void ShowSortListInPopupL( const TFSMailSortCriteria aCurrentSortCriteria,
   231 	                           const TFSFolderType aFolderType,
   231 	                           const TFSFolderType aFolderType,
   232 							   MFSEmailUiSortListCallback* aCallback,
   232 							   MFSEmailUiSortListCallback* aCallback,
   233 							   MFsControlButtonInterface* aButton );
   233 							   MFsControlButtonInterface* aButton );
   234 	void FolderPopupClosed();
   234 	void FolderPopupClosed();
   235 	
   235 
   236 	// Transition effects for Alf layouts, call these in doactivate and dodeactivate.
   236 	// Transition effects for Alf layouts, call these in doactivate and dodeactivate.
   237 	TBool ViewSwitchingOngoing();
   237 	TBool ViewSwitchingOngoing();
   238 	
   238 
   239 	// Force Sync on active mailbox.
   239 	// Force Sync on active mailbox.
   240 	void SyncActiveMailBoxL();
   240 	void SyncActiveMailBoxL();
   241 	
   241 
   242 	// Stop mailbox sync
   242 	// Stop mailbox sync
   243 	void StopActiveMailBoxSyncL();
   243 	void StopActiveMailBoxSyncL();
   244 	
   244 
   245 	// From sync observer
   245 	// From sync observer
   246 	void RequestResponseL( TFSProgress aEvent, TInt aRequestId );
   246 	void RequestResponseL( TFSProgress aEvent, TInt aRequestId );
   247 
   247 
   248     /**
   248     /**
   249      * Helper method to be called from Settings. Launches mailbox setup wizard.
   249      * Helper method to be called from Settings. Launches mailbox setup wizard.
   250      */
   250      */
   251      void LaunchWizardL();
   251      void LaunchWizardL();
   252     
   252 
   253     // Overriden exit
   253     // Overriden exit
   254     void Exit();
   254     void Exit();
   255 
   255 
   256     void ExitNow();
   256     void ExitNow();
   257 
   257 
   258     const CFSEmailUiShortcutBinding& ShortcutBinding() const;
   258     const CFSEmailUiShortcutBinding& ShortcutBinding() const;
   259    
   259 
   260     // Navigation functions, used mainly from viewer
   260     // Navigation functions, used mainly from viewer
   261     TBool IsNextMsgAvailable( TFSMailMsgId aCurrentMsgId, TFSMailMsgId& aFoundNextMsgId, TFSMailMsgId& aFoundNextMsgFolder );
   261     TBool IsNextMsgAvailable( TFSMailMsgId aCurrentMsgId, TFSMailMsgId& aFoundNextMsgId, TFSMailMsgId& aFoundNextMsgFolder );
   262     TBool IsPreviousMsgAvailable( TFSMailMsgId aCurrentMsgId, TFSMailMsgId& aFoundPreviousMsgId, TFSMailMsgId& aFoundPrevMsgFolder );
   262     TBool IsPreviousMsgAvailable( TFSMailMsgId aCurrentMsgId, TFSMailMsgId& aFoundPreviousMsgId, TFSMailMsgId& aFoundPrevMsgFolder );
   263     TInt MoveToNextMsgL( TFSMailMsgId aCurrentMsgId, TFSMailMsgId& aFoundNextMsgId );
   263     TInt MoveToNextMsgL( TFSMailMsgId aCurrentMsgId, TFSMailMsgId& aFoundNextMsgId );
   264     TInt MoveToPreviousMsgL( TFSMailMsgId aCurrentMsgId, TFSMailMsgId& aFoundPreviousMsgId );
   264     TInt MoveToPreviousMsgL( TFSMailMsgId aCurrentMsgId, TFSMailMsgId& aFoundPreviousMsgId );
       
   265     TInt MoveToPreviousMsgAfterDeleteL( TFSMailMsgId aFoundPreviousMsgId );
   265 
   266 
   266     /** Returns document handler. */
   267     /** Returns document handler. */
   267     CDocumentHandler& DocumentHandler();
   268     CDocumentHandler& DocumentHandler();
   268 
   269 
   269     /**
   270     /**
   298     CVPbkContactManager& GetVPbkManagerL();
   299     CVPbkContactManager& GetVPbkManagerL();
   299 
   300 
   300     // MessageReader implementation
   301     // MessageReader implementation
   301     void StartReadingEmailsL();
   302     void StartReadingEmailsL();
   302     TBool MessageReaderSupportsFreestyle();
   303     TBool MessageReaderSupportsFreestyle();
   303     
   304 
   304     static TBool AppUiExitOngoing();
   305     static TBool AppUiExitOngoing();
   305 
   306 
   306     // Meeting request viewer instance, owned by the appui	
   307     // Meeting request viewer instance, owned by the appui
   307     CESMRIcalViewer* MrViewerInstanceL();	
   308     CESMRIcalViewer* MrViewerInstanceL();
   308 
   309 
   309     // Get Mail viewer instance, owned by the AppUi
   310     // Get Mail viewer instance, owned by the AppUi
   310     CFsEmailUiHtmlViewerView& MailViewer(); 
   311     CFsEmailUiHtmlViewerView& MailViewer();
   311     
   312 
   312     // Get Folder list instance, owned by the AppUi
   313     // Get Folder list instance, owned by the AppUi
   313     CFSEmailUiFolderListVisualiser& FolderList();
   314     CFSEmailUiFolderListVisualiser& FolderList();
   314     
   315 
   315     // Get Launcher grid instance, owned by the AppUi
   316     // Get Launcher grid instance, owned by the AppUi
   316     CFSEmailUiLauncherGridVisualiser& LauncherGrid();
   317     CFSEmailUiLauncherGridVisualiser& LauncherGrid();
   317     
   318 
   318     // View loading in idle
   319     // View loading in idle
   319     TInt ViewLoadIdleCallbackFunctionL();
   320     TInt ViewLoadIdleCallbackFunctionL();
   320     
   321 
   321     /**
   322     /**
   322      * Sets the manual mailbox syncronisation/connection flag if the    
   323      * Sets the manual mailbox syncronisation/connection flag if the
   323      * user chose to synchorise/connect mail boxes from the menu
   324      * user chose to synchorise/connect mail boxes from the menu
   324      */
   325      */
   325     void ManualMailBoxSync( TBool aManualMailBoxSync );
   326     void ManualMailBoxSync( TBool aManualMailBoxSync );
   326     void ManualMailBoxSyncAll( TBool aManualMailBoxSyncAll );
   327     void ManualMailBoxSyncAll( TBool aManualMailBoxSyncAll );
   327     void ManualMailBoxConnectAll( TBool aManualMailBoxConnectAll );
   328     void ManualMailBoxConnectAll( TBool aManualMailBoxConnectAll );
   328     void ManualMailBoxDisconnectAll( TBool aManualMailBoxConnectAll );
   329     void ManualMailBoxDisconnectAll( TBool aManualMailBoxConnectAll );
   329 	
   330 
   330 	// For showing mailbox query    
   331 	// For showing mailbox query
   331 	void GridStarted( TBool aStartedFromOds );
   332 	void GridStarted( TBool aStartedFromOds );
   332     void ShowMailboxQueryL();
   333     void ShowMailboxQueryL();
   333     
   334 
   334     void DoAutoConnectL();
   335     void DoAutoConnectL();
   335     
   336 
   336     CFSEmailDownloadInfoMediator* DownloadInfoMediator();
   337     CFSEmailDownloadInfoMediator* DownloadInfoMediator();
   337     
   338 
   338     // <cmail>
   339     // <cmail>
   339     TDisplayMode DisplayMode() const;
   340     TDisplayMode DisplayMode() const;
   340     // </cmail>
   341     // </cmail>
   341 
   342 
   342     /**
   343     /**
   346     TBool IsFlipOpen() const;
   347     TBool IsFlipOpen() const;
   347 
   348 
   348 
   349 
   349 public: //from MFSMailEventObserver
   350 public: //from MFSMailEventObserver
   350     /**
   351     /**
   351      * Framework event message. 
   352      * Framework event message.
   352      * Used here to catch the events thrown from new mailbox creation process.
   353      * Used here to catch the events thrown from new mailbox creation process.
   353      *
   354      *
   354      * @param aEvent One of pre-defined events in TFSMailEvent
   355      * @param aEvent One of pre-defined events in TFSMailEvent
   355      * @param aMailbox maibox related for this event
   356      * @param aMailbox maibox related for this event
   356      * @param aParam1 intepretation is event specific (see TFSMailEvent descriptions)
   357      * @param aParam1 intepretation is event specific (see TFSMailEvent descriptions)
   357      * @param aParam2 intepretation is event specific (see TFSMailEvent descriptions)
   358      * @param aParam2 intepretation is event specific (see TFSMailEvent descriptions)
   358      * @param aParam3 intepretation is event specific (see TFSMailEvent descriptions)
   359      * @param aParam3 intepretation is event specific (see TFSMailEvent descriptions)
   359      */
   360      */
   360     void EventL( TFSMailEvent aEvent, TFSMailMsgId aMailbox, 
   361     void EventL( TFSMailEvent aEvent, TFSMailMsgId aMailbox,
   361                  TAny* aParam1, TAny* aParam2, TAny* aParam3);
   362                  TAny* aParam1, TAny* aParam2, TAny* aParam3);
   362                  
   363 
   363 public:              
   364 public:
   364 	void HandleSessionEventL( TMsvSessionEvent aEvent, TAny* aArg1, TAny* aArg2, TAny* aArg3 );
   365 	void HandleSessionEventL( TMsvSessionEvent aEvent, TAny* aArg1, TAny* aArg2, TAny* aArg3 );
   365 
   366 
   366 public: // MIAUpdateObserver
   367 public: // MIAUpdateObserver
   367     virtual void CheckUpdatesComplete( TInt aErrorCode, TInt aAvailableUpdates );
   368     virtual void CheckUpdatesComplete( TInt aErrorCode, TInt aAvailableUpdates );
   368     virtual void UpdateQueryComplete( TInt aErrorCode, TBool aUpdateNow );
   369     virtual void UpdateQueryComplete( TInt aErrorCode, TBool aUpdateNow );
   369     virtual void UpdateComplete( TInt aErrorCode, CIAUpdateResult* aResultDetails );
   370     virtual void UpdateComplete( TInt aErrorCode, CIAUpdateResult* aResultDetails );
   370 
   371 
   371 public:	
   372 public:
   372 
   373 
   373     /**
   374     /**
   374     * StartEndKeyCapture
   375     * StartEndKeyCapture
   375     * Start key capture for end-key
   376     * Start key capture for end-key
   376     */
   377     */
   387      * @param aViewId: Caller identify itself by giving the view Id (see FreestyleEmailUiConstants.h)
   388      * @param aViewId: Caller identify itself by giving the view Id (see FreestyleEmailUiConstants.h)
   388      * This is used for choosing correct decorator.
   389      * This is used for choosing correct decorator.
   389      * @return instance of correct navidecorator. NULL if aView doesn't match.
   390      * @return instance of correct navidecorator. NULL if aView doesn't match.
   390      */
   391      */
   391     CAknNavigationDecorator* NaviDecoratorL( const TUid aViewId );
   392     CAknNavigationDecorator* NaviDecoratorL( const TUid aViewId );
   392     
   393 
   393 public:
   394 public:
   394     
   395 
       
   396     /**
       
   397      * From MFSEmailUiGenericTimerCallback.
       
   398      * Generic timer event callback.
       
   399      */
   395     virtual void TimerEventL( CFSEmailUiGenericTimer* aTriggeredTimer );
   400     virtual void TimerEventL( CFSEmailUiGenericTimer* aTriggeredTimer );
   396     
   401 
   397     /**
   402     /**
   398     * CancelFocusRemovalTimer
   403     * Sets visibility for focus.
   399     * Cancels focus removal timer
   404     *
       
   405     * @param aVisible EFalse if focus should be hidden.
       
   406     * @return whether or not focus was already visible.
   400     */
   407     */
   401     void CancelFocusRemovalTimer();
   408     TBool SetFocusVisibility( TBool aVisible );
   402     
   409 
   403     /**
   410     /**
   404     * StartFocusRemovalTimer
   411     * IsFocusShown
   405     * Starts focus removal timer
   412     * Used for finding out if focus is visible.
   406     * @return whether or not timer was active already.
   413     * @return whether or not the focus is visible.
   407     */
   414     */
   408     TBool StartFocusRemovalTimer();
   415     TBool IsFocusShown() const;
   409     
       
   410     /**
       
   411     * IsTimerFocusShown
       
   412     * Used for finding out if the timer focus is already visible
       
   413     * @return whether or not the timer focus is visible.
       
   414     */
       
   415     TBool IsTimerFocusShown() const;
       
   416 
   416 
   417 
   417 
   418 public: // From MFreestyleEmailUiPropertyChangedObserver.
   418 public: // From MFreestyleEmailUiPropertyChangedObserver.
   419 
   419 
   420 	void PropertyChangedL( TInt aValue );
   420 	void PropertyChangedL( TInt aValue );
   421 
   421 
   422 
   422 
   423 protected: 
   423 protected:
   424 	TKeyResponse HandleKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
   424 	TKeyResponse HandleKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
   425     void HandleResourceChangeL(TInt aType);
   425     void HandleResourceChangeL(TInt aType);
   426 	void HandleWsEventL(const TWsEvent &aEvent, 
   426 	void HandleWsEventL(const TWsEvent &aEvent,
   427  	                    CCoeControl *aDestination);
   427  	                    CCoeControl *aDestination);
   428  	
   428 
   429  	void HandleForegroundEventL( TBool aForeground );
   429  	void HandleForegroundEventL( TBool aForeground );
   430     MCoeMessageObserver::TMessageResponse HandleMessageL( TUint32 aClientHandleOfTargetWindowGroup,
   430     MCoeMessageObserver::TMessageResponse HandleMessageL( TUint32 aClientHandleOfTargetWindowGroup,
   431                                                           TUid aMessageUid,
   431                                                           TUid aMessageUid,
   432                                                           const TDesC8& aMessageParameters );
   432                                                           const TDesC8& aMessageParameters );
   433  
   433 
   434 private:
   434 private:
   435     void DoHandleResourceChangeL(TInt aType);
   435     void DoHandleResourceChangeL(TInt aType);
   436 	void UpdateSettingsListModelL();
   436 	void UpdateSettingsListModelL();
   437 	CAlfTexture& LoadItemIconL( TInt aUid );
   437 	CAlfTexture& LoadItemIconL( TInt aUid );
   438     void ProvideBitmapL(TInt aId, CFbsBitmap*& aBitmap, 
   438     void ProvideBitmapL(TInt aId, CFbsBitmap*& aBitmap,
   439                                   CFbsBitmap*& aMaskBitmap);
   439                                   CFbsBitmap*& aMaskBitmap);
   440     
   440 
   441     /**
   441     /**
   442      * Helper method for launching a setup wizard, or handling data received from one.
   442      * Helper method for launching a setup wizard, or handling data received from one.
   443      */
   443      */
   444     void DoWizardStartupActionsL();
   444     void DoWizardStartupActionsL();
   445         
   445 
   446     TBool IsViewInHistoryStack( TUid aViewId ) const;
   446     TBool IsViewInHistoryStack( TUid aViewId ) const;
   447     
   447 
   448     void ReturnToViewL( TUid aViewId, TUid aCustomMessageId = TUid::Null(), const TDesC8& aCustomMessage = KNullDesC8 );
   448     void ReturnToViewL( TUid aViewId, TUid aCustomMessageId = TUid::Null(), const TDesC8& aCustomMessage = KNullDesC8 );
   449     
   449 
   450     // Checks updates from IAD client
   450     // Checks updates from IAD client
   451     void CheckUpdatesL();
   451     void CheckUpdatesL();
   452     void AllUpdateActivitiesCompleted();
   452     void AllUpdateActivitiesCompleted();
   453 
   453 
   454 	// This async callback functionality is needed because UI and app construction
   454 	// This async callback functionality is needed because UI and app construction
   455 	// cannot jam while the new mailbox query has been displayed     
   455 	// cannot jam while the new mailbox query has been displayed
   456    	static TInt DisplayCreateQueryL( TAny* aSelfPtr );
   456    	static TInt DisplayCreateQueryL( TAny* aSelfPtr );
   457    	void DisplayCreateMailboxQueryL();
   457    	void DisplayCreateMailboxQueryL();
   458    	
   458 
   459    	// Send self to background.
   459    	// Send self to background.
   460    	void SendToBackground();
   460    	void SendToBackground();
   461     
   461 
   462    	/*
   462    	/*
   463    	 * Called from ConstructL during start of application.
   463    	 * Called from ConstructL during start of application.
   464    	 * Constructs navipane(s) that are used by different views.
   464    	 * Constructs navipane(s) that are used by different views.
   465    	 */
   465    	 */
   466    	void ConstructNaviPaneL();
   466    	void ConstructNaviPaneL();
   467 
   467 
   468     // Create custom status pane indicators. (priority and followup)
   468     // Create custom status pane indicators. (priority and followup)
   469     void CreateStatusPaneIndicatorsL();
   469     void CreateStatusPaneIndicatorsL();
   470     // Delete custom status pane indicators
   470     // Delete custom status pane indicators
   471     void DeleteStatusPaneIndicators();
   471     void DeleteStatusPaneIndicators();
   472     
   472 
   473    	/*
   473     // Load specified resource file, file name may (and should) contain wild
   474    	 * FocusTimerCallBack
   474     // cards. aFilePath should contain drive letter if some specific drive
   475    	 * Called when focus removal timer expires
   475     // is wanted to be searched first. Returns the resource file offset of the
   476    	 */
   476     // found file. Leaves if resource file not found.
   477     static TInt FocusTimerCallBack(TAny* aAny);
   477     TInt LoadResourceFileL( const TDesC& aFileName,
   478     
   478                             const TDesC& aFilePath );
   479    	/*
   479 
   480    	 * DoFocusTimerCallBack
       
   481    	 * Called when focus removal timer expires
       
   482    	 */
       
   483     TInt DoFocusTimerCallBack();
       
   484     
       
   485    	
       
   486 private:
   480 private:
   487 	// ALF environment NOTE: Display removed from Alfred version
   481 	// ALF environment NOTE: Display removed from Alfred version
   488     CAlfEnv* iEnv;
   482     CAlfEnv* iEnv;
   489      
   483 
   490     // Pointers to current and previous active views
   484     // Pointers to current and previous active views
   491     CFsEmailUiViewBase* iCurrentActiveView; // not owned
   485     CFsEmailUiViewBase* iCurrentActiveView; // not owned
   492     CFsEmailUiViewBase* iPreviousActiveView; // not owned
   486     CFsEmailUiViewBase* iPreviousActiveView; // not owned
   493     CStack<CFsEmailUiViewBase, EFalse>* iNavigationHistory; // items not owned
   487     CStack<CFsEmailUiViewBase, EFalse>* iNavigationHistory; // items not owned
   494  
   488 
   495  	CFSEmailDownloadInfoMediator* iDwnldMediator;
   489  	CFSEmailDownloadInfoMediator* iDwnldMediator;
   496  
   490 
   497      // Pointers to actual display control groups containing UI elements      
   491      // Pointers to actual display control groups containing UI elements
   498     CAlfControlGroup* iGridControlGroup;
   492     CAlfControlGroup* iGridControlGroup;
   499   	CAlfControlGroup* iMailListControlGroup;
   493   	CAlfControlGroup* iMailListControlGroup;
   500     CAlfControlGroup* iEmailViewerControlGroup;
   494     CAlfControlGroup* iEmailViewerControlGroup;
   501   	CAlfControlGroup* iFolderListControlGroup;
   495   	CAlfControlGroup* iFolderListControlGroup;
   502   	CAlfControlGroup* iSettingsListControlGroup;
   496   	CAlfControlGroup* iSettingsListControlGroup;
   506   	CAlfControlGroup* iComposerControlGroup;
   500   	CAlfControlGroup* iComposerControlGroup;
   507   	CAlfControlGroup* iDownloadManagerControlGroup;
   501   	CAlfControlGroup* iDownloadManagerControlGroup;
   508   	CAlfControlGroup* iSearchResultControlGroup;
   502   	CAlfControlGroup* iSearchResultControlGroup;
   509   	CAlfControlGroup* iStatusIndicatorControlGroup;
   503   	CAlfControlGroup* iStatusIndicatorControlGroup;
   510   	CAlfControlGroup* iHtmlViewerControlGroup;
   504   	CAlfControlGroup* iHtmlViewerControlGroup;
   511   
   505 
   512  	// FS Email UI specific layout handler object
   506  	// FS Email UI specific layout handler object
   513     CFSEmailUiLayoutHandler* iLayoutHandler;
   507     CFSEmailUiLayoutHandler* iLayoutHandler;
   514 
   508 
   515 	// FS specific layout
   509 	// FS specific layout
   516         //<cmail> layout manager doesn't exists in cmail
   510         //<cmail> layout manager doesn't exists in cmail
   517 	//CFsLayoutManager* iLayoutManager;
   511 	//CFsLayoutManager* iLayoutManager;
   518         //</cmail>
   512         //</cmail>
   519 	
   513 
   520 	// FS Email UI specific texture mngr object
   514 	// FS Email UI specific texture mngr object
   521  	CFreestyleEmailUiTextureManager* iFsTextureManager;
   515  	CFreestyleEmailUiTextureManager* iFsTextureManager;
   522 
   516 
   523 	// Main UI grid control and view
   517 	// Main UI grid control and view
   524   	CFSEmailUiLauncherGrid* iMainUiGrid;
   518   	CFSEmailUiLauncherGrid* iMainUiGrid;
   525     CFSEmailUiLauncherGridVisualiser* iMainUiGridVisualiser;	
   519     CFSEmailUiLauncherGridVisualiser* iMainUiGridVisualiser;
   526 
   520 
   527 	// Mail view
   521 	// Mail view
   528 	CFSEmailUiMailListVisualiser* iMailListVisualiser;
   522 	CFSEmailUiMailListVisualiser* iMailListVisualiser;
   529 
   523 
   530   	// Plain text viewer view, control inside text view;
   524   	// Plain text viewer view, control inside text view;
   539 	// Message details view
   533 	// Message details view
   540 	CFSEmailUiMsgDetailsVisualiser* iMsgDetailsVisualiser;
   534 	CFSEmailUiMsgDetailsVisualiser* iMsgDetailsVisualiser;
   541 
   535 
   542 	// Folder list view
   536 	// Folder list view
   543 	CFSEmailUiFolderListVisualiser* iFolderListVisualiser;
   537 	CFSEmailUiFolderListVisualiser* iFolderListVisualiser;
   544 	
   538 
   545 	// Attachment list
   539 	// Attachment list
   546 	CFSEmailUiAttachmentsListVisualiser* iAttachmentListVisualiser;
   540 	CFSEmailUiAttachmentsListVisualiser* iAttachmentListVisualiser;
   547 	CFreestyleEmailUiAttachmentsListControl* iAttachmentHanlerControl;
   541 	CFreestyleEmailUiAttachmentsListControl* iAttachmentHanlerControl;
   548 	
   542 
   549     // Download manager removed.
   543     // Download manager removed.
   550 
   544 
   551 	// Search result list view
   545 	// Search result list view
   552 	CFSEmailUiSearchListVisualiser* iSearchListVisualiser;
   546 	CFSEmailUiSearchListVisualiser* iSearchListVisualiser;
   553 
   547 
   555 	CFSEmailUiStatusIndicator* iStatusIndicator;
   549 	CFSEmailUiStatusIndicator* iStatusIndicator;
   556 
   550 
   557     // Mailclient, list of mailboxes, active mailbox and
   551     // Mailclient, list of mailboxes, active mailbox and
   558     // latest opened folder
   552     // latest opened folder
   559     CFSMailClient* iMailClient;
   553     CFSMailClient* iMailClient;
   560  
   554 
   561  	// Active mailbox, pointer owned by the APP UI!
   555  	// Active mailbox, pointer owned by the APP UI!
   562  	CFSMailBox* iActiveMailbox;
   556  	CFSMailBox* iActiveMailbox;
   563 
   557 
   564 	TFSMailMsgId iActiveBoxInboxId;
   558 	TFSMailMsgId iActiveBoxInboxId;
   565 	TFSMailMsgId iActiveMailboxId;
   559 	TFSMailMsgId iActiveMailboxId;
   566  
   560 
   567 	// Mail sending progress dialog
   561 	// Mail sending progress dialog
   568 	CAknProgressDialog* iSendingProgressDialog;
   562 	CAknProgressDialog* iSendingProgressDialog;
   569 	CEikProgressInfo* iSendingProgressInfo;
   563 	CEikProgressInfo* iSendingProgressInfo;
   570 	
   564 
   571 	// Phonebook engine and resource handle
   565 	// Phonebook engine and resource handle
   572 	TInt iPhCltResHandle;
   566 	TInt iPhCltResHandle;
   573 	
   567 
   574 	// Central repository handler
   568 	// Central repository handler
   575 	CFSEmailCRHandler*	iCRHandler;
   569 	CFSEmailCRHandler*	iCRHandler;
   576 	
   570 
   577 	// End key capture handles
   571 	// End key capture handles
   578 	TInt32 iEndCaptureHandle;
   572 	TInt32 iEndCaptureHandle;
   579 	TInt32 iEndUpDownCaptureHandle;
   573 	TInt32 iEndUpDownCaptureHandle;
   580 	
   574 
   581     CMsvSession* iMsvSession;
   575     CMsvSession* iMsvSession;
   582 
   576 
   583     CFSEmailUiActionMenu* iActionMenuHandler;
   577     CFSEmailUiActionMenu* iActionMenuHandler;
   584     
   578 
   585 	RArray<TFSMailMsgId> iSubscribedMailBoxes;
   579 	RArray<TFSMailMsgId> iSubscribedMailBoxes;
   586 	RArray<TUint> iSubscribedMailBoxesIds;
   580 	RArray<TUint> iSubscribedMailBoxesIds;
   587 	
   581 
   588 
   582 
   589 	// Helper class for keyboard shortcut handling
   583 	// Helper class for keyboard shortcut handling
   590 	CFSEmailUiShortcutBinding* iShortcutBinder;
   584 	CFSEmailUiShortcutBinding* iShortcutBinder;
   591 	
   585 
   592 	CFSEmailUiWizardObserver* iWizardObserver;
   586 	CFSEmailUiWizardObserver* iWizardObserver;
   593 
   587 
   594     CDocumentHandler* iDocumentHandler;
   588     CDocumentHandler* iDocumentHandler;
   595     CFsEmailFileHandleShutter* iFileHandleShutter;
   589     CFsEmailFileHandleShutter* iFileHandleShutter;
   596 
   590 
   597 	TBool iConstructComplete;
   591 	TBool iConstructComplete;
   598 	
   592 
   599 	TInt iSyncStatusReqId;
   593 	TInt iSyncStatusReqId;
   600 	
   594 
   601 	TBool iIsForeground;
   595 	TBool iIsForeground;
   602 	
   596 
   603   	CIdle* iViewLoadIdle;
   597   	CIdle* iViewLoadIdle;
   604 	TCallBack* iViewLoadIdleCallback;
   598 	TCallBack* iViewLoadIdleCallback;
   605 	TBool iIsCaptured;
   599 	TBool iIsCaptured;
   606 	
   600 
   607     CVPbkContactManager* iVpkContactManager; 
   601     CVPbkContactManager* iVpkContactManager;
   608     
   602 
   609     //This is used to pass needed information to messagereader
   603     //This is used to pass needed information to messagereader
   610 	HBufC8* iCustomMessageToMessageReader;
   604 	HBufC8* iCustomMessageToMessageReader;
   611 	
   605 
   612 	// Meeting request viewer instance	
   606 	// Meeting request viewer instance
   613   	CESMRIcalViewer* iMRViewer;	
   607   	CESMRIcalViewer* iMRViewer;
   614   	
   608 
   615   	// Flag to be used to disable online/offline note in automated 
   609   	// Flag to be used to disable online/offline note in automated
   616   	// Mailbob online
   610   	// Mailbob online
   617   	TBool iAutomatedMailBoxOnline;
   611   	TBool iAutomatedMailBoxOnline;
   618   	
   612 
   619 	// Value indicating that msg reader is supported, KErrNone if supported.
   613 	// Value indicating that msg reader is supported, KErrNone if supported.
   620   	TInt iMsgReaderIsSupported;
   614   	TInt iMsgReaderIsSupported;
   621   	// For IAD
   615   	// For IAD
   622     CIAUpdate* iUpdateClient;
   616     CIAUpdate* iUpdateClient;
   623     CIAUpdateParameters* iUpdateParameters;
   617     CIAUpdateParameters* iUpdateParameters;
   624     
   618 
   625     // For feature manager
   619     // For feature manager
   626     TBool iFeatureManagerInitialized;
   620     TBool iFeatureManagerInitialized;
   627     
   621 
   628     //ETrue if user started the sync/connect all
   622     //ETrue if user started the sync/connect all
   629     TBool iManualMailBoxSync;
   623     TBool iManualMailBoxSync;
   630     TBool iManualMailBoxSyncAll;
   624     TBool iManualMailBoxSyncAll;
   631     TBool iManualMailBoxConnectAll;
   625     TBool iManualMailBoxConnectAll;
   632     TBool iManualMailBoxDisconnectAll;
   626     TBool iManualMailBoxDisconnectAll;
   633 
   627 
   634     // ETrue if the screen layout has chaged while the application was on background
   628     // ETrue if the screen layout has chaged while the application was on background
   635     TBool iPendingLayoutSwitch;
   629     TBool iPendingLayoutSwitch;
   636     
   630 
   637     // Startup mailbox creation query flag.
   631     // Startup mailbox creation query flag.
   638     TBool iStartupQueryShown;	
   632     TBool iStartupQueryShown;
   639     TBool iGridStarted;
   633     TBool iGridStarted;
   640     TBool iGridFirstStartFromOds; 
   634     TBool iGridFirstStartFromOds;
   641     TBool iSettingsViewActive;
   635     TBool iSettingsViewActive;
   642     TBool iIADUpdateCompleted;
   636     TBool iIADUpdateCompleted;
   643     
   637 
   644     CFSEmailUiAutosyncMonitor* iAutoSyncMonitor; 
   638     CFSEmailUiAutosyncMonitor* iAutoSyncMonitor;
   645  
   639 
   646     // Async callback for create mailbox query
   640     // Async callback for create mailbox query
   647     // This is needed because query can not stop execution of UI construction      	
   641     // This is needed because query can not stop execution of UI construction
   648     CAsyncCallBack* iNewBoxQueryAsyncCallback;
   642     CAsyncCallBack* iNewBoxQueryAsyncCallback;
   649 
   643 
   650     // Exit guardian. 
   644     // Exit guardian.
   651     CEUiExitGuardian* iExitGuardian;
   645     CEUiExitGuardian* iExitGuardian;
   652 
   646 
   653     // navipane decorator
   647     // navipane decorator
   654     // (used at least in mail viewer)
   648     // (used at least in mail viewer)
   655     CAknNavigationDecorator* iNaviDecorator2MailViewer;
   649     CAknNavigationDecorator* iNaviDecorator2MailViewer;
   656     
   650 
   657     // Resource file offset for message editor external resources
   651     // Resource file offset for message editor external resources
   658     TInt iMsgEditorResourceOffset;
   652     TInt iMsgEditorResourceOffset;
   659     
   653 
   660     // Resource file offset for FSMailServer external resources
   654     // Resource file offset for FSMailServer external resources
   661     TInt iFSMailServerResourceOffset;
   655     TInt iFSMailServerResourceOffset;
   662     
   656 
   663     // Custom status pane indicators
   657     // Custom status pane indicators
   664     CCustomStatuspaneIndicators* iStatusPaneIndicators;
   658     CCustomStatuspaneIndicators* iStatusPaneIndicators;
   665     TBool iConnectionStatusVisible;
   659     TBool iConnectionStatusVisible;
   666     CFSEmailUiGenericTimer* iConnectionStatusIconAnimTimer;
   660     CFSEmailUiGenericTimer* iConnectionStatusIconAnimTimer;
   667     CFbsBitmap* iConnectionIconBitmap;
   661     CFbsBitmap* iConnectionIconBitmap;
   674     TBool iSwitchingToBackground;
   668     TBool iSwitchingToBackground;
   675 
   669 
   676     // For handling the flip state.
   670     // For handling the flip state.
   677     CFreestyleEmailUiPropertySubscriber* iPropertySubscriber;
   671     CFreestyleEmailUiPropertySubscriber* iPropertySubscriber;
   678     TBool iFlipOpen;
   672     TBool iFlipOpen;
   679     
   673 
   680     // Timer for focus removal purposes. Owned
   674     /// Focus visibility state
   681     CPeriodic* iFocusTimer;
   675     TBool iFocusVisible;
   682 
       
   683     };
   676     };
   684 
   677 
   685 
   678 
   686 /**
   679 /**
   687 *  CFSEmailUiAutosyncMonitor.
   680 *  CFSEmailUiAutosyncMonitor.
   688 * Needed for auto sync feature, not wanted when roaming.
   681 * Needed for auto sync feature, not wanted when roaming.
   689 */
   682 */
   690 class CFSEmailUiAutosyncMonitor : public CActive
   683 class CFSEmailUiAutosyncMonitor : public CActive
   691     {
   684     {
   692     public:
   685     public:
   693         enum TNetworkStatus 
   686         enum TNetworkStatus
   694             {
   687             {
   695             EStatusUnknown = 0,
   688             EStatusUnknown = 0,
   696             EHomenetwork,
   689             EHomenetwork,
   697             ERoaming,
   690             ERoaming,
   698             ERequestCancelled
   691             ERequestCancelled
   702             {
   695             {
   703             EInactive = 0,
   696             EInactive = 0,
   704             ERequestingNetworkStatus,
   697             ERequestingNetworkStatus,
   705             EDone
   698             EDone
   706             };
   699             };
   707             
   700 
   708         static CFSEmailUiAutosyncMonitor* NewL( CFreestyleEmailUiAppUi& aAppUi );
   701         static CFSEmailUiAutosyncMonitor* NewL( CFreestyleEmailUiAppUi& aAppUi );
   709         ~CFSEmailUiAutosyncMonitor();
   702         ~CFSEmailUiAutosyncMonitor();
   710 
   703 
   711     public: 
   704     public:
   712         void StartMonitoring( );
   705         void StartMonitoring( );
   713         void StopMonitoring( );
   706         void StopMonitoring( );
   714 
   707 
   715     private: 
   708     private:
   716         void RunL();
   709         void RunL();
   717         void DoCancel();
   710         void DoCancel();
   718         TInt RunError( TInt aError );
   711         TInt RunError( TInt aError );
   719         
   712 
   720     private:
   713     private:
   721         CFSEmailUiAutosyncMonitor( CFreestyleEmailUiAppUi& aAppUi );
   714         CFSEmailUiAutosyncMonitor( CFreestyleEmailUiAppUi& aAppUi );
   722         void ConstructL();     
   715         void ConstructL();
   723 
   716 
   724     private:  
   717     private:
   725         TMonitoringStatus iMonitoringStatus;
   718         TMonitoringStatus iMonitoringStatus;
   726         CFreestyleEmailUiAppUi& iAppUi;
   719         CFreestyleEmailUiAppUi& iAppUi;
   727         RTelServer iServer;
   720         RTelServer iServer;
   728         RMobilePhone iPhone;
   721         RMobilePhone iPhone;
   729         RMobilePhone::TMobilePhoneRegistrationStatus iRegisterationStatus;
   722         RMobilePhone::TMobilePhoneRegistrationStatus iRegisterationStatus;