--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/emailuis/emailui/inc/FreestyleEmailUiAppui.h Thu Dec 17 08:39:21 2009 +0200
@@ -0,0 +1,736 @@
+/*
+* 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: FreestyleEmailUiAppUi class definition
+*
+*/
+
+
+#ifndef __FREESTYLEEMAILUI_APPUI_H__
+#define __FREESTYLEEMAILUI_APPUI_H__
+
+// SYSTEM INCLUDES
+#include <aknViewAppUi.h>
+//<cmail> SF
+#include <alf/alfenv.h>
+#include <alf/alfdisplay.h>
+//</cmail>
+#include <cntdef.h>
+#include <cntviewbase.h>
+// <cmail> CPhCltDialer.h API removed
+//#include <CPhCltDialer.h>
+#include <etelmm.h>
+// </cmail>
+#include <TPbkContactItemField.h>
+#include <hwrmdomainpskeys.h> // For flip change status.
+//<cmail>
+#include "MFSMailRequestObserver.h"
+#include "MFSMailEventObserver.h"
+#include "FreestyleEmailUiUtilities.h"
+//</cmail>
+#include <msvapi.h>
+#include <cstack.h>
+#include <iaupdateobserver.h>
+#include "CFSMailCommon.h"
+#include "cmailcustomstatuspaneindicators.h"
+
+// INTERNAL INCLUDES
+#include "FreestyleEmailUiPropertySubscriber.h"
+#include "FreestyleEmailUiConstants.h"
+
+enum TForcedStatus
+ {
+ ENoForce = 0,
+ EForceToSync,
+ EForceToConnected,
+ EForceToDisconnected
+ };
+
+// FORWARD DECLARATIONS
+class CFreestyleEmailUiView;
+class CFSEmailUiViewerControl;
+class CFSEmailUiLauncherGrid;
+class CFSEmailUiLauncherGridVisualiser;
+class CFSEmailUiGridMenuModel;
+class CFSEmailUiLayoutHandler;
+class CFSEmailUiViewSwitchTimer;
+class CFSEmailUiList;
+class CFSEmailUiMailViewerVisualiser;
+class CFSEmailUiMailListVisualiser;
+class CFSMailClient;
+class CFSMailMessage;
+class CFSMailFolder;
+class CFSMailBox;
+class CMailListUpdater;
+class CFSEmailUiEditor;
+class CAknInfoPopupNoteController;
+class CFSEmailUiSingleListModel;
+class CFSEmailUiSingleListVisualiser;
+class CFreestyleEmailUiTextureManager;
+class CFSEmailUiEditorVisualiser;
+class CFSEmailUiMsgDetailsVisualiser;
+class CFSEmailUiFolderListVisualiser;
+class CNcsComposeView;
+class CAknsLayeredBackgroundControlContext;
+class CAlfAnchorLayout;
+class CFsTreeList;
+class CFSEmailCRHandler;
+class CFSEmailUiAttachmentsListVisualiser;
+class CFreestyleEmailUiAttachmentsListControl;
+class MFSEmailUiFolderListCallback;
+class MFSEmailUiSortListCallback;
+class MFsControlButtonInterface;
+class CFSEmailUiSendAttachmentsListVisualiser;
+class TFSProgress;
+class CFSEmailUiDownloadManagerVisualiser;
+class CFreestyleEmailUiDownloadManagerControl;
+class CAlfLayout;
+class CFSEmailUiSearchListVisualiser;
+class CFSEmailUiStatusIndicator;
+class CFsEmailUiHtmlViewerView;
+class CAknWaitNoteWrapper;
+class CFSEmailUiActionMenu;
+class CFSEmailUiShortcutBinding;
+class CFSEmailUiWizardObserver;
+class CDocumentHandler;
+class CAknProgressDialog;
+class CEikProgressInfo;
+class CFsEmailUiViewBase;
+class CVPbkContactManager;
+class CESMRIcalViewer;
+class CFsEmailFileHandleShutter;
+class CFsLayoutManager;
+class CIAUpdate;
+class CIAUpdateParameters;
+class CFSEmailUiAutosyncMonitor;
+class CEUiExitGuardian;
+class CAknNavigationDecorator;
+class CFSEmailDownloadInfoMediator;
+class MAknNaviDecoratorObserver;
+class CCustomStatuspaneIndicators;
+
+class CFreestyleEmailUiAppUi : public CAknViewAppUi,
+ public MAlfActionObserver,
+ public MFSMailRequestObserver,
+ public MFSMailEventObserver,
+ public MMsvSessionObserver,
+ public MIAUpdateObserver,
+ public MFSEmailUiGenericTimerCallback,
+ public MFreestyleEmailUiPropertyChangedObserver
+ {
+friend class CMailListUpdater;
+public:
+
+ CFreestyleEmailUiAppUi( CAlfEnv& aEnv );
+ void ConstructL();
+ ~CFreestyleEmailUiAppUi();
+ CAlfDisplay& Display();
+ CAlfEnv& AlfEnv();
+ // void HandleCommandL(TInt aCommand);
+ void HandleActionL(const TAlfActionCommand& aActionCommand);
+ // <cmail>
+ void ProcessCommandL( TInt aCommand );
+ // </cmail>
+ void HandleCommandL( TInt aCommand );
+
+ // View switching functions
+ void EnterFsEmailViewL( TUid aViewId );
+ void EnterFsEmailViewL( TUid aViewId, TUid aCustomMessageId, const TDesC8& aCustomMessage );
+ void EnterPluginSettingsViewL( TUid aViewId, TUid aCustomMessageId, const TDesC8& aCustomMessage );
+ void ReturnFromPluginSettingsView();
+ void ViewActivatedExternallyL( TUid aViewId );
+
+ void SetSwitchingToBackground( TBool aValue );
+ TBool SwitchingToBackground() const;
+
+ /**
+ * Tries to activate the local view where the current view was navigated from.
+ * Activates the grid view if no other previous view available.
+ * @return UID of the view to be activated
+ */
+ TUid ReturnToPreviousViewL( const TDesC8& aCustomMessage = KNullDesC8 );
+
+ void ReturnFromHtmlViewerL( TBool aMessageWasDeleted = EFalse );
+
+ // Clears the navigation history used with Back functionality.
+ // Thus, next call to ReturnToPreviousViewL() will return to the main grid.
+ void EraseViewHistory();
+
+ // Create new mail with compose command
+ void CreateNewMailL();
+
+ // Returns pointer to the current active view. Ownership not transferred.
+ CFsEmailUiViewBase* CurrentActiveView();
+ // Returns pointer to the previous active view. Ownership not transferred.
+ CFsEmailUiViewBase* PreviousActiveView();
+ // Tells if plugin settings view is currently open
+ TBool IsPluginSettingsViewActive();
+
+ // getter to generic components
+ CFSEmailUiLayoutHandler* LayoutHandler();
+ CFreestyleEmailUiTextureManager* FsTextureManager();
+// CFSEmailUiStatusIndicator* StatusIndicator();
+
+ // Functions used by grid and viewer
+ TInt NewEmailsInModelL();
+ TInt EmailsInModelL();
+ TInt EmailIndexInModel();
+
+ /**
+ * LaunchEditorL
+ * Launch editor with the given address in TO-field and focus in MSG-field
+ * @param aToAddress The email address to put in TO-field on startup. Ownership
+ * is not transferred.
+ */
+ void LaunchEditorL( CFSMailAddress* aToAddress );
+
+ /**
+ * LaunchEditorL
+ * Launch editor
+ * @param aMode The mode in which the editor is started
+ * @param aParams Editor launch parameters
+ */
+ void LaunchEditorL( TEditorLaunchMode aMode, const TEditorLaunchParams& aParams );
+
+ CFSMailClient* GetMailClient();
+ CFSEmailCRHandler* GetCRHandler();
+
+ // Gets active mailbox pointer from the UI
+ // Ownership IS NOT transferred to the callers
+ CFSMailBox* GetActiveMailbox();
+
+ void SubscribeMailboxL( TFSMailMsgId aActiveMailboxId );
+ void SetActiveMailboxL( TFSMailMsgId aActiveMailboxId, TBool aAutoSync = ETrue );
+ CMsvSession* GetMsvSession();
+
+ TFSMailMsgId GetActiveBoxInboxId();
+ TFSMailMsgId GetActiveMailboxId();
+
+ /**
+ * Show folder list or sort list as control bar popup list.
+ *
+ * @param aCurrentSortOrder Current sort order in mail list
+ * @param aFolderId/Type Folder id/type of the currently active mail folder
+ * @param aCallback Callback pointer to use when reporting user selection
+ * @param aButton Selected control bar button, used when positioning the list
+ */
+ void ShowFolderListInPopupL( const TFSMailMsgId aFolderType,
+ MFSEmailUiFolderListCallback* aCallback,
+ MFsControlButtonInterface* aButton );
+ void ShowSortListInPopupL( const TFSMailSortField aCurrentSortOrder,
+ const TFSFolderType aFolderType,
+ MFSEmailUiSortListCallback* aCallback,
+ MFsControlButtonInterface* aButton );
+ void FolderPopupClosed();
+
+ // Transition effects for Alf layouts, call these in doactivate and dodeactivate.
+ TBool ViewSwitchingOngoing();
+
+ // Force Sync on active mailbox.
+ void SyncActiveMailBoxL();
+
+ // Stop mailbox sync
+ void StopActiveMailBoxSyncL();
+
+ // From sync observer
+ void RequestResponseL( TFSProgress aEvent, TInt aRequestId );
+
+ /**
+ * Helper method to be called from Settings. Launches mailbox setup wizard.
+ */
+ void LaunchWizardL();
+
+ // Overriden exit
+ void Exit();
+
+ void ExitNow();
+
+ const CFSEmailUiShortcutBinding& ShortcutBinding() const;
+
+ // Navigation functions, used mainly from viewer
+ TBool IsNextMsgAvailable( TFSMailMsgId aCurrentMsgId, TFSMailMsgId& aFoundNextMsgId, TFSMailMsgId& aFoundNextMsgFolder );
+ TBool IsPreviousMsgAvailable( TFSMailMsgId aCurrentMsgId, TFSMailMsgId& aFoundPreviousMsgId, TFSMailMsgId& aFoundPrevMsgFolder );
+ TInt MoveToNextMsgL( TFSMailMsgId aCurrentMsgId, TFSMailMsgId& aFoundNextMsgId );
+ TInt MoveToPreviousMsgL( TFSMailMsgId aCurrentMsgId, TFSMailMsgId& aFoundPreviousMsgId );
+
+ /** Returns document handler. */
+ CDocumentHandler& DocumentHandler();
+
+ /**
+ * Returns reference file handle shutter. The shutter is set to observe
+ * embedded application exit events delegated by the appui's document
+ * handler and it closes the set file handle on exit event. */
+ CFsEmailFileHandleShutter& FileHandleShutter();
+
+ // Returns unmodifiable reference to the current title pane text
+ const TDesC& TitlePaneTextL();
+ // Sets given text to title pane
+ void SetTitlePaneTextL( const TDesC& aText );
+ // Resets title pane text to its default value
+ void ResetTitlePaneTextL();
+ // Sets active mailbox name to title pane
+ void SetActiveMailboxNameToStatusPaneL();
+
+ // Set connection status icon of title pane to visible
+ void ShowTitlePaneConnectionStatus();
+ // Set connection status icon of title pane to hided
+ void HideTitlePaneConnectionStatus();
+ // Draw connection status icon into title pane if set as visible.
+ // It is also possible to force connection indicator to wanted value
+ // to achieve better user experience.
+ void UpdateTitlePaneConnectionStatus( TForcedStatus aForcedStatus = ENoForce );
+ // Return pointer to custom status pane indicators object
+ // Which can be used to show priority and followup flags
+ // on navi pane area. (Real navipane is not used)
+ CCustomStatuspaneIndicators* GetStatusPaneIndicatorContainer();
+
+ // Getter for appui owned virtual phonebook manager
+ CVPbkContactManager& GetVPbkManagerL();
+
+ // MessageReader implementation
+ void StartReadingEmailsL();
+ TBool MessageReaderSupportsFreestyle();
+
+ static TBool AppUiExitOngoing();
+
+ // Meeting request viewer instance, owned by the appui
+ CESMRIcalViewer* MrViewerInstanceL();
+
+ // Get Mail viewer instance, owned by the AppUi
+ CFsEmailUiHtmlViewerView& MailViewer();
+
+ // Get Folder list instance, owned by the AppUi
+ CFSEmailUiFolderListVisualiser& FolderList();
+
+ // Get Launcher grid instance, owned by the AppUi
+ CFSEmailUiLauncherGridVisualiser& LauncherGrid();
+
+ // View loading in idle
+ TInt ViewLoadIdleCallbackFunctionL();
+
+ /**
+ * Sets the manual mailbox syncronisation/connection flag if the
+ * user chose to synchorise/connect mail boxes from the menu
+ */
+ void ManualMailBoxSync( TBool aManualMailBoxSync );
+ void ManualMailBoxSyncAll( TBool aManualMailBoxSyncAll );
+ void ManualMailBoxConnectAll( TBool aManualMailBoxConnectAll );
+ void ManualMailBoxDisconnectAll( TBool aManualMailBoxConnectAll );
+
+ // For showing mailbox query
+ void GridStarted( TBool aStartedFromOds );
+ void ShowMailboxQueryL();
+
+ void DoAutoConnectL();
+
+ CFSEmailDownloadInfoMediator* DownloadInfoMediator();
+
+ // <cmail>
+ TDisplayMode DisplayMode() const;
+ // </cmail>
+
+ /**
+ * Returns the current flip status.
+ * @return True if the flip is open, false otherwise.
+ */
+ TBool IsFlipOpen() const;
+
+
+public: //from MFSMailEventObserver
+ /**
+ * Framework event message.
+ * Used here to catch the events thrown from new mailbox creation process.
+ *
+ * @param aEvent One of pre-defined events in TFSMailEvent
+ * @param aMailbox maibox related for this event
+ * @param aParam1 intepretation is event specific (see TFSMailEvent descriptions)
+ * @param aParam2 intepretation is event specific (see TFSMailEvent descriptions)
+ * @param aParam3 intepretation is event specific (see TFSMailEvent descriptions)
+ */
+ void EventL( TFSMailEvent aEvent, TFSMailMsgId aMailbox,
+ TAny* aParam1, TAny* aParam2, TAny* aParam3);
+
+public:
+ void HandleSessionEventL( TMsvSessionEvent aEvent, TAny* aArg1, TAny* aArg2, TAny* aArg3 );
+
+public: // MIAUpdateObserver
+ virtual void CheckUpdatesComplete( TInt aErrorCode, TInt aAvailableUpdates );
+ virtual void UpdateQueryComplete( TInt aErrorCode, TBool aUpdateNow );
+ virtual void UpdateComplete( TInt aErrorCode, CIAUpdateResult* aResultDetails );
+
+public:
+
+ /**
+ * StartEndKeyCapture
+ * Start key capture for end-key
+ */
+ void StartEndKeyCapture();
+
+ /**
+ * StopEndKeyCapture
+ * Stop key capture for end-key
+ */
+ void StopEndKeyCapture();
+
+ /**
+ * Accessor for navipane decorator object.
+ * @param aViewId: Caller identify itself by giving the view Id (see FreestyleEmailUiConstants.h)
+ * This is used for choosing correct decorator.
+ * @return instance of correct navidecorator. NULL if aView doesn't match.
+ */
+ CAknNavigationDecorator* NaviDecoratorL( const TUid aViewId );
+
+public:
+
+ virtual void TimerEventL( CFSEmailUiGenericTimer* aTriggeredTimer );
+
+ /**
+ * CancelFocusRemovalTimer
+ * Cancels focus removal timer
+ */
+ void CancelFocusRemovalTimer();
+
+ /**
+ * StartFocusRemovalTimer
+ * Starts focus removal timer
+ * @return whether or not timer was active already.
+ */
+ TBool StartFocusRemovalTimer();
+
+ /**
+ * IsTimerFocusShown
+ * Used for finding out if the timer focus is already visible
+ * @return whether or not the timer focus is visible.
+ */
+ TBool IsTimerFocusShown() const;
+
+
+public: // From MFreestyleEmailUiPropertyChangedObserver.
+
+ void PropertyChangedL( TInt aValue );
+
+
+protected:
+ TKeyResponse HandleKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
+ void HandleResourceChangeL(TInt aType);
+ void HandleWsEventL(const TWsEvent &aEvent,
+ CCoeControl *aDestination);
+
+ void HandleForegroundEventL( TBool aForeground );
+ MCoeMessageObserver::TMessageResponse HandleMessageL( TUint32 aClientHandleOfTargetWindowGroup,
+ TUid aMessageUid,
+ const TDesC8& aMessageParameters );
+
+private:
+ void DoHandleResourceChangeL(TInt aType);
+ void UpdateSettingsListModelL();
+ CAlfTexture& LoadItemIconL( TInt aUid );
+ void ProvideBitmapL(TInt aId, CFbsBitmap*& aBitmap,
+ CFbsBitmap*& aMaskBitmap);
+
+ /**
+ * Helper method for launching a setup wizard, or handling data received from one.
+ */
+ void DoWizardStartupActionsL();
+
+ TBool IsViewInHistoryStack( TUid aViewId ) const;
+
+ void ReturnToViewL( TUid aViewId, TUid aCustomMessageId = TUid::Null(), const TDesC8& aCustomMessage = KNullDesC8 );
+
+ // Checks updates from IAD client
+ void CheckUpdatesL();
+ void AllUpdateActivitiesCompleted();
+
+ // This async callback functionality is needed because UI and app construction
+ // cannot jam while the new mailbox query has been displayed
+ static TInt DisplayCreateQueryL( TAny* aSelfPtr );
+ void DisplayCreateMailboxQueryL();
+
+ // Send self to background.
+ void SendToBackground();
+
+ /*
+ * Called from ConstructL during start of application.
+ * Constructs navipane(s) that are used by different views.
+ */
+ void ConstructNaviPaneL();
+
+ // Create custom status pane indicators. (priority and followup)
+ void CreateStatusPaneIndicatorsL();
+ // Delete custom status pane indicators
+ void DeleteStatusPaneIndicators();
+
+ /*
+ * FocusTimerCallBack
+ * Called when focus removal timer expires
+ */
+ static TInt FocusTimerCallBack(TAny* aAny);
+
+ /*
+ * DoFocusTimerCallBack
+ * Called when focus removal timer expires
+ */
+ TInt DoFocusTimerCallBack();
+
+
+private:
+ // ALF environment NOTE: Display removed from Alfred version
+ CAlfEnv* iEnv;
+
+ // Pointers to current and previous active views
+ CFsEmailUiViewBase* iCurrentActiveView; // not owned
+ CFsEmailUiViewBase* iPreviousActiveView; // not owned
+ CStack<CFsEmailUiViewBase, EFalse>* iNavigationHistory; // items not owned
+
+ CFSEmailDownloadInfoMediator* iDwnldMediator;
+
+ // Pointers to actual display control groups containing UI elements
+ CAlfControlGroup* iGridControlGroup;
+ CAlfControlGroup* iMailListControlGroup;
+ CAlfControlGroup* iEmailViewerControlGroup;
+ CAlfControlGroup* iFolderListControlGroup;
+ CAlfControlGroup* iSettingsListControlGroup;
+ CAlfControlGroup* iSendingAnimationControlGroup;
+ CAlfControlGroup* iMsgDetailsControlGroup;
+ CAlfControlGroup* iAttachmentControlGroup;
+ CAlfControlGroup* iComposerControlGroup;
+ CAlfControlGroup* iDownloadManagerControlGroup;
+ CAlfControlGroup* iSearchResultControlGroup;
+ CAlfControlGroup* iStatusIndicatorControlGroup;
+ CAlfControlGroup* iHtmlViewerControlGroup;
+
+ // FS Email UI specific layout handler object
+ CFSEmailUiLayoutHandler* iLayoutHandler;
+
+ // FS specific layout
+ //<cmail> layout manager doesn't exists in cmail
+ //CFsLayoutManager* iLayoutManager;
+ //</cmail>
+
+ // FS Email UI specific texture mngr object
+ CFreestyleEmailUiTextureManager* iFsTextureManager;
+
+ // Main UI grid control and view
+ CFSEmailUiLauncherGrid* iMainUiGrid;
+ CFSEmailUiLauncherGridVisualiser* iMainUiGridVisualiser;
+
+ // Mail view
+ CFSEmailUiMailListVisualiser* iMailListVisualiser;
+
+ // Plain text viewer view, control inside text view;
+ CFSEmailUiMailViewerVisualiser* iViewerVisualiser;
+
+ // Message editor view
+ CNcsComposeView* iComposeView;
+
+ // Html viewer view
+ CFsEmailUiHtmlViewerView* iHtmlViewerView;
+
+ // Message details view
+ CFSEmailUiMsgDetailsVisualiser* iMsgDetailsVisualiser;
+
+ // Folder list view
+ CFSEmailUiFolderListVisualiser* iFolderListVisualiser;
+
+ // Attachment list
+ CFSEmailUiAttachmentsListVisualiser* iAttachmentListVisualiser;
+ CFreestyleEmailUiAttachmentsListControl* iAttachmentHanlerControl;
+
+ // Download manager removed.
+
+ // Search result list view
+ CFSEmailUiSearchListVisualiser* iSearchListVisualiser;
+
+ // Status indicator
+ CFSEmailUiStatusIndicator* iStatusIndicator;
+
+ // Mailclient, list of mailboxes, active mailbox and
+ // latest opened folder
+ CFSMailClient* iMailClient;
+
+ // Active mailbox, pointer owned by the APP UI!
+ CFSMailBox* iActiveMailbox;
+
+ TFSMailMsgId iActiveBoxInboxId;
+ TFSMailMsgId iActiveMailboxId;
+
+ // Mail sending progress dialog
+ CAknProgressDialog* iSendingProgressDialog;
+ CEikProgressInfo* iSendingProgressInfo;
+
+ // Phonebook engine and resource handle
+ TInt iPhCltResHandle;
+
+ // Central repository handler
+ CFSEmailCRHandler* iCRHandler;
+
+ // End key capture handles
+ TInt32 iEndCaptureHandle;
+ TInt32 iEndUpDownCaptureHandle;
+
+ CMsvSession* iMsvSession;
+
+ CFSEmailUiActionMenu* iActionMenuHandler;
+
+ RArray<TFSMailMsgId> iSubscribedMailBoxes;
+ RArray<TUint> iSubscribedMailBoxesIds;
+
+
+ // Helper class for keyboard shortcut handling
+ CFSEmailUiShortcutBinding* iShortcutBinder;
+
+ CFSEmailUiWizardObserver* iWizardObserver;
+
+ CDocumentHandler* iDocumentHandler;
+ CFsEmailFileHandleShutter* iFileHandleShutter;
+
+ TBool iConstructComplete;
+
+ TInt iSyncStatusReqId;
+
+ TBool iIsForeground;
+
+ CIdle* iViewLoadIdle;
+ TCallBack* iViewLoadIdleCallback;
+ TBool iIsCaptured;
+
+ CVPbkContactManager* iVpkContactManager;
+
+ //This is used to pass needed information to messagereader
+ HBufC8* iCustomMessageToMessageReader;
+
+ // Meeting request viewer instance
+ CESMRIcalViewer* iMRViewer;
+
+ // Flag to be used to disable online/offline note in automated
+ // Mailbob online
+ TBool iAutomatedMailBoxOnline;
+
+ // Value indicating that msg reader is supported, KErrNone if supported.
+ TInt iMsgReaderIsSupported;
+ // For IAD
+ CIAUpdate* iUpdateClient;
+ CIAUpdateParameters* iUpdateParameters;
+
+ // For feature manager
+ TBool iFeatureManagerInitialized;
+
+ //ETrue if user started the sync/connect all
+ TBool iManualMailBoxSync;
+ TBool iManualMailBoxSyncAll;
+ TBool iManualMailBoxConnectAll;
+ TBool iManualMailBoxDisconnectAll;
+
+ // ETrue if the screen layout has chaged while the application was on background
+ TBool iPendingLayoutSwitch;
+
+ // Startup mailbox creation query flag.
+ TBool iStartupQueryShown;
+ TBool iGridStarted;
+ TBool iGridFirstStartFromOds;
+ TBool iSettingsViewActive;
+ TBool iIADUpdateCompleted;
+
+ CFSEmailUiAutosyncMonitor* iAutoSyncMonitor;
+
+ // Async callback for create mailbox query
+ // This is needed because query can not stop execution of UI construction
+ CAsyncCallBack* iNewBoxQueryAsyncCallback;
+
+ // Exit guardian.
+ CEUiExitGuardian* iExitGuardian;
+
+ // navipane decorator
+ // (used at least in mail viewer)
+ CAknNavigationDecorator* iNaviDecorator2MailViewer;
+
+ // Resource file offset for message editor external resources
+ TInt iMsgEditorResourceOffset;
+
+ // Resource file offset for FSMailServer external resources
+ TInt iFSMailServerResourceOffset;
+
+ // Custom status pane indicators
+ CCustomStatuspaneIndicators* iStatusPaneIndicators;
+ TBool iConnectionStatusVisible;
+ CFSEmailUiGenericTimer* iConnectionStatusIconAnimTimer;
+ CFbsBitmap* iConnectionIconBitmap;
+ CFbsBitmap* iConnectionIconMask;
+ TInt iConnectionStatusIconAngle;
+ TForcedStatus iForcedConnectionStatus;
+
+ // Set true, when application is going to be switched to backgound
+ // after the view deactivation.
+ TBool iSwitchingToBackground;
+
+ // For handling the flip state.
+ CFreestyleEmailUiPropertySubscriber* iPropertySubscriber;
+ TBool iFlipOpen;
+
+ // Timer for focus removal purposes. Owned
+ CPeriodic* iFocusTimer;
+
+ };
+
+
+/**
+* CFSEmailUiAutosyncMonitor.
+* Needed for auto sync feature, not wanted when roaming.
+*/
+class CFSEmailUiAutosyncMonitor : public CActive
+ {
+ public:
+ enum TNetworkStatus
+ {
+ EStatusUnknown = 0,
+ EHomenetwork,
+ ERoaming,
+ ERequestCancelled
+ };
+
+ enum TMonitoringStatus
+ {
+ EInactive = 0,
+ ERequestingNetworkStatus,
+ EDone
+ };
+
+ static CFSEmailUiAutosyncMonitor* NewL( CFreestyleEmailUiAppUi& aAppUi );
+ ~CFSEmailUiAutosyncMonitor();
+
+ public:
+ void StartMonitoring( );
+ void StopMonitoring( );
+
+ private:
+ void RunL();
+ void DoCancel();
+ TInt RunError( TInt aError );
+
+ private:
+ CFSEmailUiAutosyncMonitor( CFreestyleEmailUiAppUi& aAppUi );
+ void ConstructL();
+
+ private:
+ TMonitoringStatus iMonitoringStatus;
+ CFreestyleEmailUiAppUi& iAppUi;
+ RTelServer iServer;
+ RMobilePhone iPhone;
+ RMobilePhone::TMobilePhoneRegistrationStatus iRegisterationStatus;
+ RTelServer::TPhoneInfo iPhoneInfo;
+ };
+
+
+
+#endif // __FREESTYLEEMAILUI_APPUI_H__
+