williamr@2: // Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@2: // under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: // which accompanies this distribution, and is available williamr@2: // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // williamr@2: williamr@2: #ifndef __COEAUI_H__ williamr@2: #define __COEAUI_H__ williamr@2: williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: williamr@2: class CCoeEnv; williamr@2: class CCoeControl; williamr@2: williamr@2: /** williamr@2: Creates a FEP interface object. williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: typedef CCoeFep* (*TCoeFepFactoryFunctionL)(CCoeEnv& aConeEnvironment, const TDesC& aFullFileNameOfDll, const CCoeFepParameters& aFepParameters); williamr@2: williamr@2: /** williamr@2: Calls the second ordinal function of the FEP for which the settings dialog is to be executed. williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: typedef void (*TCoeSynchronouslyExecuteFepSettingsDialogFunctionL)(CCoeEnv& aConeEnvironment, const TDesC& aFullFileNameOfDll); williamr@2: williamr@2: /** Stack priority flags. williamr@2: williamr@2: Controls with higher priorities get offered key events before controls williamr@2: with lower priorities. williamr@2: williamr@2: @publishedAll williamr@2: @released */ williamr@2: enum williamr@2: { williamr@2: /** 0 */ williamr@2: ECoeStackPriorityDefault=0, williamr@2: /** 10 */ williamr@2: ECoeStackPriorityMenu=10, williamr@2: /** 50 */ williamr@2: ECoeStackPriorityDialog=50, williamr@2: /** 60 */ williamr@2: ECoeStackPriorityCba=60, williamr@2: /** 200 */ williamr@2: ECoeStackPriorityAlert=200, williamr@2: /** 240 */ williamr@2: ECoeStackPrioritySoftkey=240, williamr@2: /** 250 */ williamr@2: ECoeStackPriorityFep=250, williamr@2: /** 300 */ williamr@2: ECoeStackPriorityEnvironmentFilter=300 williamr@2: }; williamr@2: williamr@2: williamr@2: /** Control stack flags. williamr@2: williamr@2: Each control on the stack has a set of these flags which can be used williamr@2: to refuse to accept key events and to refuse requests for focus. williamr@2: williamr@2: @publishedAll williamr@2: @released */ williamr@2: enum williamr@2: { williamr@2: /** The default value */ williamr@2: ECoeStackFlagStandard = 0, williamr@2: /** The control does not accept key events. */ williamr@2: ECoeStackFlagRefusesAllKeys = 0x01, williamr@2: /** The control does not accept keyboard focus. */ williamr@2: ECoeStackFlagRefusesFocus = 0x02, williamr@2: /** The control is owned and deleted by the stack. */ williamr@2: ECoeStackFlagOwnershipTransfered= 0x04, williamr@2: /** The control is also added to the stack of any embedded app UI. For williamr@2: example, an alert dialog added through CEikonEnv will be williamr@2: shared on the stack of all embedded app UIs that may appear in the williamr@2: application. */ williamr@2: ECoeStackFlagSharable = 0x08 williamr@2: }; williamr@2: williamr@2: class CCoeControlStack; williamr@2: class CCoeViewManager; williamr@2: williamr@2: /** Application user interface (app UI) base class. williamr@2: williamr@2: The app UI's responsibilities include owning the application's control stack and views, williamr@2: handling user commands, (see the derived class CEikAppUi), and handling events sent by williamr@2: the OS to the application, for instance being brought to the foreground. williamr@2: williamr@2: The UI framework class CEikAppUi is derived from this class. UIs may derive williamr@2: further to add their own UI-specific features to the app UI; each application must williamr@2: derive its own concrete app UI class from this. williamr@2: williamr@2: @publishedAll williamr@2: @released */ williamr@2: class CCoeAppUi : public CBase williamr@2: { williamr@2: public: williamr@2: // Construction and destruction williamr@2: IMPORT_C CCoeAppUi(); williamr@2: IMPORT_C ~CCoeAppUi(); williamr@2: IMPORT_C void ConstructL(CCoeAppUi* aPrevious=NULL); williamr@2: // Control stack williamr@2: IMPORT_C void AddToStackL(const MCoeView& aView,CCoeControl* aControl,TInt aPriority=ECoeStackPriorityDefault,TInt aStackingFlags=ECoeStackFlagStandard); williamr@2: IMPORT_C void AddToStackL(CCoeControl* aControl,TInt aPriority=ECoeStackPriorityDefault,TInt aStackingFlags=ECoeStackFlagStandard); williamr@2: IMPORT_C void RemoveFromStack(CCoeControl* aControl); williamr@2: IMPORT_C void HandleStackChanged(); williamr@2: IMPORT_C void HandleStackedControlsResourceChange(TInt aType); williamr@2: IMPORT_C void UpdateStackedControlFlags(CCoeControl* aControl,TInt aFlags,TInt aMask); williamr@2: // Help context williamr@2: IMPORT_C CArrayFix* AppHelpContextL() const; williamr@2: // Text input williamr@2: IMPORT_C virtual TCoeInputCapabilities InputCapabilities() const; williamr@2: // Control focus williamr@2: IMPORT_C CCoeControl* TopFocusedControl() const; williamr@2: // Utility williamr@2: IMPORT_C TBool IsDisplayingMenuOrDialog() const; williamr@2: IMPORT_C TBool IsDisplayingDialog() const; williamr@2: IMPORT_C TBool IsDisplayingControlBetweenPriorities(TInt aLowerPriority, TInt aHigherPriority) const; williamr@2: // View registration williamr@2: IMPORT_C void RegisterViewL(MCoeView& aView); williamr@2: IMPORT_C void DeregisterView(const MCoeView& aView); williamr@2: IMPORT_C void SetDefaultViewL(const MCoeView& aView); williamr@2: IMPORT_C TInt GetDefaultViewId(TVwsViewId& aViewId) const; williamr@2: // Pseudo-view registration williamr@2: IMPORT_C void CheckInitializeViewsL(TUid aAppUid); williamr@2: IMPORT_C void RegisterApplicationViewL(TUid aAppUid); williamr@2: IMPORT_C void DeregisterApplicationView(); williamr@2: // View construction williamr@2: IMPORT_C TBool IsViewConstructed(const TVwsViewId& aViewId) const; williamr@2: // View activation williamr@2: IMPORT_C void ActivateViewL(const TVwsViewId& aViewId); williamr@2: IMPORT_C void ActivateViewL(const TVwsViewId& aViewId,TUid aCustomMessageId,const TDesC8& aCustomMessage); williamr@2: IMPORT_C void ActivateTopViewL(); williamr@2: IMPORT_C void CreateActivateViewEventL(const TVwsViewId& aViewId,TUid aCustomMessageId,const TDesC8& aCustomMessage); williamr@2: IMPORT_C void DeactivateActiveViewIfOwnerMatchL(); williamr@2: IMPORT_C void DeactivateActiveViewL(); williamr@2: IMPORT_C TInt GetActiveViewId(TVwsViewId& aViewId) const; williamr@2: // View registration williamr@2: IMPORT_C void AddViewObserverL(MCoeViewObserver* aViewObserver); williamr@2: IMPORT_C void RemoveViewObserver(MCoeViewObserver* aViewObserver); williamr@2: // View activation observer williamr@2: IMPORT_C void AddViewActivationObserverL(MCoeViewActivationObserver* aViewActivationObserver); williamr@2: IMPORT_C void RemoveViewActivationObserver(MCoeViewActivationObserver* aViewActivationObserver); williamr@2: IMPORT_C void NotifyNextActivation(const TVwsViewId& aViewId, MCoeViewActivationObserver& aViewActivationObserver); williamr@2: IMPORT_C void NotifyNextActivation(MCoeViewActivationObserver& aViewActivationObserver); williamr@2: IMPORT_C TBool CheckSourceOfViewSwitchL(const TSecurityPolicy& aSecurityPolicy,const char* aDiagnostic=NULL) const; williamr@2: // View decativation observer williamr@2: IMPORT_C void AddViewDeactivationObserverL(MCoeViewDeactivationObserver* aViewDeactivationObserver); williamr@2: IMPORT_C void RemoveViewDeactivationObserver(MCoeViewDeactivationObserver* aViewDeactivationObserver); williamr@2: IMPORT_C void NotifyNextDeactivation(const TVwsViewId& aViewId, MCoeViewDeactivationObserver& aViewDeactivationObserver); williamr@2: IMPORT_C void NotifyNextDeactivation(MCoeViewDeactivationObserver& aViewDeactivationObserver); williamr@2: // View session configuration williamr@2: IMPORT_C TInt EnableExternalViewSwitches(TBool aEnable); williamr@2: IMPORT_C void UpdateViewServerBackgroundColor(const TRgb& aBgColor); williamr@2: williamr@2: // New APIs williamr@2: IMPORT_C void SetCustomControl(TInt aCustomControl); williamr@2: IMPORT_C TInt GetTopViewId(TVwsViewId& aViewId) const; williamr@2: IMPORT_C void SetWindowGroupOrdinal(TInt aWindowGroupOrdinal); williamr@2: williamr@2: public: // Internal williamr@2: IMPORT_C void SetApplicationViewAsDefaultL(); // internalTechnology williamr@2: IMPORT_C void SetSystemDefaultViewL(const TVwsViewId& aViewId,TInt aMode); // internalTechnology williamr@2: IMPORT_C void SetSystemDefaultViewL(const TVwsViewId& aViewId); // internalTechnology williamr@2: IMPORT_C void GetSystemDefaultViewL(TVwsViewId& aViewId); // internalTechnology williamr@2: IMPORT_C virtual void HandleWsEventL(const TWsEvent& aEvent,CCoeControl* aDestination); williamr@2: IMPORT_C virtual void PrepareToExit(); williamr@2: protected: // Internal williamr@2: IMPORT_C virtual void HandleScreenDeviceChangedL(); williamr@2: private: // Internal williamr@2: IMPORT_C virtual TKeyResponse HandleKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType); williamr@2: IMPORT_C virtual void HandleForegroundEventL(TBool aForeground); williamr@2: IMPORT_C virtual void HandleSwitchOnEventL(CCoeControl* aDestination); williamr@2: IMPORT_C virtual void HandleSystemEventL(const TWsEvent& aEvent); williamr@2: IMPORT_C virtual void HandleApplicationSpecificEventL(TInt aType,const TWsEvent& aEvent); williamr@2: IMPORT_C virtual void SetAndDrawFocus(TBool aFocus); williamr@2: IMPORT_C virtual CArrayFix* HelpContextL() const; williamr@2: public: // Internal williamr@2: IMPORT_C virtual TBool FrameworkCallsRendezvous() const; williamr@2: public: // Internal williamr@2: IMPORT_C void WriteInternalStateOfStackedControlsL(RWriteStream& aWriteStream) const; // internalTechnology williamr@2: public: // Deprecated. Do not use! williamr@2: IMPORT_C void RegisterViewAndAddStackL(MCoeView& aView); // deprecated williamr@2: IMPORT_C void DeregisterViewAndRemoveStack(const MCoeView& aView); // deprecated williamr@2: IMPORT_C void RemoveFromViewStack(const MCoeView& aView,CCoeControl* aControl); // deprecated williamr@2: IMPORT_C void UpdateViewStackedControlFlags(const MCoeView& aView,CCoeControl* aControl,TInt aFlags,TInt aMask); // deprecated williamr@2: IMPORT_C void AddToViewStackL(const MCoeView& aView,CCoeControl* aControl,TInt aPriority=ECoeStackPriorityDefault,TInt aStackingFlags=ECoeStackFlagStandard); // deprecated williamr@2: public: // not exported williamr@2: TBool IsControlOnStack(CCoeControl* aControl) const; williamr@2: void SetCurrentControlStackGroupId(TInt aGroupId); williamr@2: void NotifyFontChange(const CCoeFontProvider& aFontProvider); williamr@2: void RefetchPixelMappingL(); williamr@2: private: williamr@2: enum TRemoveCondition williamr@2: { williamr@2: ERemoveUnconditionally, williamr@2: ERemoveOnlyIfSharable williamr@2: }; williamr@2: private:// Internal williamr@2: IMPORT_C virtual void CCoeAppUi_Reserved_2(); williamr@2: private: williamr@2: CCoeControl* TopFocusableControl() const; williamr@2: TInt FindPos(CCoeControlStack* aStack,CCoeControl* aControl) const; williamr@2: void SetFocusToControl(CCoeControl* aControl,TBool aFocus); williamr@2: void DoAddToStackL(CCoeControlStack* aStack,CCoeControl* aControl,TInt aPriority,TInt aStackingFlags); williamr@2: void DoAddToStackL(CCoeControlStack* aStack,CCoeControl* aControl,TInt aPriority,TInt aStackingFlags, TInt aGroupId); williamr@2: void DoRemoveFromStack(CCoeControlStack* aStack,CCoeControl* aControl,TRemoveCondition aRemoveCondition=ERemoveUnconditionally); williamr@2: void DoUpdateStackedControlFlags(CCoeControlStack* aStack,CCoeControl* aControl,TInt aFlags,TInt aMask); williamr@2: public: williamr@2: /**Monitor function for passing all windows events to registered monitor observers for optional inspection*/ williamr@2: void MonitorWsEvent(const TWsEvent& aEvent); williamr@2: private: williamr@2: class CExtra; williamr@2: friend class CExtra; williamr@2: friend class CTestDriver; williamr@2: protected: williamr@2: CCoeEnv* iCoeEnv; williamr@2: private: williamr@2: CCoeViewManager* iViewManager; williamr@2: CCoeControlStack* iStack; williamr@2: CExtra* iExtra; williamr@2: TInt iCCoeAppUi_Reserved1; williamr@2: }; williamr@2: williamr@2: williamr@2: #endif // __COEAUI_H__