williamr@2: /* williamr@2: * Copyright (c) 1997-1999 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: williamr@2: williamr@2: #if !defined(__EIKSPMOD_H__) williamr@2: #define __EIKSPMOD_H__ williamr@2: williamr@2: #if !defined(__E32BASE_H__) williamr@2: #include williamr@2: #endif williamr@2: williamr@2: #if !defined(__EIKON_HRH__) williamr@2: #include williamr@2: #endif williamr@2: williamr@2: #if !defined(__EIKSRVC_H__) williamr@2: #include williamr@2: #endif williamr@2: williamr@2: williamr@2: class TResourceReader; williamr@2: class CEikStatusPaneLayoutTree; williamr@2: class CEikonEnv; williamr@2: class CAknSgcClient; williamr@2: class CEikStatusPaneLayout; williamr@2: namespace AknLayout { class CInstance; } williamr@2: namespace AknLayoutScalable_Avkon { class CInstance; } williamr@2: williamr@2: // Extra bit flags not defined in hrh file. williamr@2: const TInt KEikStatusPaneDirectionBit = 0x04; williamr@2: const TInt KEikStatusPaneHiddenBit = 0x08; williamr@2: const TInt KEikStatusPaneInitInitializedBit = 0x80000000; williamr@2: williamr@2: williamr@2: typedef TUid TPaneId; williamr@2: williamr@2: /** williamr@2: * williamr@2: * This class stores the details about status pane sub pane williamr@2: * ownership and initial contents. williamr@2: * williamr@2: */ williamr@2: class TEikStatusPaneInit williamr@2: { williamr@2: public: williamr@2: /** williamr@2: * Default constructor. williamr@2: */ williamr@2: TEikStatusPaneInit(); williamr@2: williamr@2: /** williamr@2: * Copy constructor. williamr@2: */ williamr@2: TEikStatusPaneInit(const TEikStatusPaneInit& aCopy); williamr@2: williamr@2: /** williamr@2: * Operator overload. williamr@2: */ williamr@2: TEikStatusPaneInit& operator=(const TEikStatusPaneInit& aCopy); williamr@2: williamr@2: /** williamr@2: * Gets pane id. williamr@2: * @return id of the pane. williamr@2: */ williamr@2: inline TPaneId Id() const; williamr@2: williamr@2: /** williamr@2: * Loads deafault values of the pane from given resource. williamr@2: * Resource reader should point to an entry from the arrays of williamr@2: * SPANE_PANE structures found in the STATUS_PANE_SYSTEM_MODEL williamr@2: * and STATUS_PANE_APP_MODEL resource structures. williamr@2: * williamr@2: * @param @aResource Resource reader. williamr@2: */ williamr@2: void LoadDefaults(TResourceReader& aResource); williamr@2: williamr@2: /** williamr@2: * Gets flag that indicates if the sub pane is owned by the williamr@2: * application or not. williamr@2: * @return ETrue if pane is application owned, otherwise EFalse. williamr@2: */ williamr@2: inline TBool AppOwned() const; williamr@2: williamr@2: /** williamr@2: * Returns control type id of the pane. williamr@2: * @return Id of the control inside the pane. williamr@2: */ williamr@2: inline TInt ControlTypeId() const; williamr@2: williamr@2: /** williamr@2: * Returns resource id of the control in the pane. williamr@2: * @return Control resource id. williamr@2: */ williamr@2: inline TInt ControlResourceId() const; williamr@2: williamr@2: /** williamr@2: * Sets hidden flag. williamr@2: */ williamr@2: inline void SetHidden(); williamr@2: williamr@2: /** williamr@2: * Clears hidden flag. williamr@2: */ williamr@2: inline void ClearHidden(); williamr@2: williamr@2: /** williamr@2: * Gets hidden flag. williamr@2: * @return ETrue if the pane is hidden. williamr@2: */ williamr@2: inline TBool IsHidden() const; williamr@2: williamr@2: private: williamr@2: /** williamr@2: * Gets initialized flag. williamr@2: * @return ETrue if the pane is initialized. williamr@2: */ williamr@2: inline TBool Initialized(); williamr@2: williamr@2: /** williamr@2: * Sets initialized flag. williamr@2: */ williamr@2: inline void SetInitialized(); williamr@2: williamr@2: private: williamr@2: TPaneId iId; williamr@2: TInt iControlId; williamr@2: TInt iControlResource; williamr@2: TInt iFlags; williamr@2: }; williamr@2: williamr@2: williamr@2: /** williamr@2: * williamr@2: * This class stores array of TEikStatusPaneInit instances. williamr@2: * williamr@2: */ williamr@2: NONSHARABLE_CLASS(CEikStatusPaneSetInit) : public CArrayFixFlat williamr@2: { williamr@2: public: williamr@2: williamr@2: /** williamr@2: * Two phase constructor. williamr@2: */ williamr@2: static CEikStatusPaneSetInit* NewL(); williamr@2: williamr@2: /** williamr@2: * Destructor. williamr@2: */ williamr@2: ~CEikStatusPaneSetInit(); williamr@2: williamr@2: /** williamr@2: * Loads deafault values of the panes from given resource. williamr@2: * Values are read from SPANE_PANE structure found in the williamr@2: * STATUS_PANE_SYSTEM_MODEL and STATUS_PANE_APP_MODEL resource williamr@2: * structures williamr@2: * @param @aResource Resource reader. williamr@2: */ williamr@2: void LoadDefaultsL(TResourceReader& aResource); williamr@2: williamr@2: /** williamr@2: * Finds the pane init with a given id. If a pane init williamr@2: * is not found, method leaves with code KErrNotFound. williamr@2: * @return The pane init instance with given id. williamr@2: */ williamr@2: TEikStatusPaneInit& FindL(const TPaneId& aPaneId); williamr@2: williamr@2: private: williamr@2: williamr@2: /** williamr@2: * Private constructor. williamr@2: */ williamr@2: CEikStatusPaneSetInit(); williamr@2: }; williamr@2: williamr@2: williamr@2: /** williamr@2: * williamr@2: * This abstract class is used for checking pane layout validity. williamr@2: * williamr@2: */ williamr@2: class MEikStatusPaneLayoutTreeVisitor williamr@2: { williamr@2: public: williamr@2: /** williamr@2: * Virtual function of which implementation should be provided williamr@2: * by the classes that implement the layout check visitor design williamr@2: * pattern. williamr@2: * @param aNode A layout node to be visited. williamr@2: */ williamr@2: virtual void VisitL(CEikStatusPaneLayoutTree* aNode) = 0; williamr@2: }; williamr@2: williamr@2: williamr@2: williamr@2: /** williamr@2: * williamr@2: * This class calculates and stores the screen area available williamr@2: * for each layout tree. williamr@2: * williamr@2: */ williamr@2: NONSHARABLE_CLASS(CEikStatusPaneLayoutTree) : public CBase williamr@2: { williamr@2: public: williamr@2: enum TDirection williamr@2: { williamr@2: /** Horizontal direction */ williamr@2: EHorizontal, williamr@2: /** Vertical direction */ williamr@2: EVertical williamr@2: }; williamr@2: williamr@2: public: williamr@2: /** williamr@2: * Destructor. williamr@2: */ williamr@2: ~CEikStatusPaneLayoutTree(); williamr@2: williamr@2: /** williamr@2: * Two phase constructor. williamr@2: * @param aLayout Layout data williamr@2: * @param aResource Resource of layout tree. williamr@2: * @param aDefaultDirection Default direction of the layout tree. williamr@2: */ williamr@2: static CEikStatusPaneLayoutTree* NewL(CEikStatusPaneLayout* aLayout, TResourceReader& aResource, TDirection aDefaultDirection = EHorizontal); williamr@2: williamr@2: /** williamr@2: * Finds the layout tree with a given pane id. williamr@2: * @param aPaneId A id of the pane. williamr@2: * @return If layout tree was found, a pointer to layout tree williamr@2: * with given id. Otherwise NULL is returned. williamr@2: */ williamr@2: CEikStatusPaneLayoutTree* Find(const TPaneId& aPaneId); williamr@2: williamr@2: /** williamr@2: * Calls given visitor objects VisitL, method. Additionally williamr@2: * calls AcceptL -method of each sub pane layouts inside this layout tree. williamr@2: * @param aVisitor A visitor object to be visited. williamr@2: */ williamr@2: void AcceptL(MEikStatusPaneLayoutTreeVisitor* aVisitor); williamr@2: williamr@2: /** williamr@2: * Gets pane id. williamr@2: * @return id of the pane. williamr@2: */ williamr@2: inline TPaneId Id() const; williamr@2: williamr@2: /** williamr@2: * Gets rectagle of the layout tree. williamr@2: * @return Rectangle of the layout tree. williamr@2: */ williamr@2: inline TRect Rect() const; williamr@2: williamr@2: /** williamr@2: * This method maps given layout resource id and subpane UID to correct williamr@2: * layout lines in the AknLayout system. williamr@2: * williamr@2: * @since 2.8 williamr@2: * @param aLayoutResourceId Id of a statuspane layout. williamr@2: * @param aPaneId Uid of a statuspane subpane. williamr@2: * @return A rectangle which specifies the given subpane size williamr@2: * and position in the given layout. williamr@2: * williamr@2: */ williamr@2: TRect AknLayoutRect(TInt aLayoutResourceId, TPaneId aPaneId); williamr@2: williamr@2: private: williamr@2: williamr@2: /** williamr@2: * Private constructor. williamr@2: * @param aLayout Layout data williamr@2: * @param aDefaultDirection Default direction of the layout tree. williamr@2: */ williamr@2: CEikStatusPaneLayoutTree(CEikStatusPaneLayout* aLayout, TDirection aDefaultDirection); williamr@2: williamr@2: /** williamr@2: * Private 2nd phase constructor. williamr@2: * @param aResource Resource of layout tree. williamr@2: */ williamr@2: void ConstructL(TResourceReader& aResource); williamr@2: williamr@2: /** williamr@2: * Sets rectagle of the layout tree. williamr@2: * @param aRect Rectangle of the layout tree. williamr@2: */ williamr@2: void SetRect(const TRect& aRect); williamr@2: williamr@2: /** williamr@2: * Gets direction of the layout tree. williamr@2: * @return Direction of the layout tree. williamr@2: */ williamr@2: inline TDirection Direction(); williamr@2: williamr@2: /** williamr@2: * Sets direction of the layout tree. williamr@2: * @param aDirection Direction of the layout tree. williamr@2: */ williamr@2: void SetDirection(TDirection aDirection); williamr@2: williamr@2: /** williamr@2: * Gets size of the layout tree. williamr@2: * @return size of the layout tree. williamr@2: */ williamr@2: inline TInt Size(); williamr@2: williamr@2: /** williamr@2: * Gets stretchable flag of the layout tree. williamr@2: * @return Stretchable flag of the layout tree. williamr@2: */ williamr@2: inline TBool Stretchable(); williamr@2: williamr@2: /** williamr@2: * Sets stretchable flag of the layout tree. williamr@2: * @param Stretchable flag of the layout tree. williamr@2: */ williamr@2: void SetStretchable(TBool aStretchable); williamr@2: williamr@2: /** williamr@2: * Sets the layout of the sub panes inside layout tree according to williamr@2: * layout tree attributes read from the resource structures. williamr@2: */ williamr@2: void Layout(); williamr@2: williamr@2: /** williamr@2: * This methods purpose is eqvivalent of the Layout() method, but the difference williamr@2: * is that this method uses AknLayout system instead of the statuspane williamr@2: * resource definitions for determining the positions and sizes of the subpanes. williamr@2: * williamr@2: * If AknLayoutUsed flag has not been set then this method defaults to the behaviour williamr@2: * of the Layout() -method. williamr@2: * williamr@2: * @since 2.8 williamr@2: * @param aLayoutResourceId Id of the statuspane layout which is to be laid out. williamr@2: * williamr@2: */ williamr@2: void Layout(TInt aLayoutResourceId); williamr@2: williamr@2: /** williamr@2: * This method sets flag which tells wheter AknLayout system is williamr@2: * used or not for layout. williamr@2: * williamr@2: * @since 2.8 williamr@2: * @param aAknLayoutUsed ETrue if AknLayout is to be used. EFalse otherwise. williamr@2: * williamr@2: */ williamr@2: void SetAknLayoutUsed(TBool aAknLayoutUsed); williamr@2: williamr@2: /** williamr@2: * This method gets flag which tells wheter AknLayout system is williamr@2: * used or not for layout. williamr@2: * williamr@2: * @since 2.8 williamr@2: * @return ETrue if AknLayout is to be used. EFalse otherwise. williamr@2: * williamr@2: */ williamr@2: TBool AknLayoutUsed(); williamr@2: williamr@2: private: williamr@2: TPaneId iId; williamr@2: TInt iFlags; williamr@2: TRect iRect; williamr@2: TInt iSize; williamr@2: williamr@2: typedef CArrayPtrFlat CSubPaneArray; williamr@2: CSubPaneArray* iSubPanes; williamr@2: williamr@2: CEikStatusPaneLayout* iLayout; williamr@2: williamr@2: private: williamr@2: friend class CEikStatusPaneLayout; williamr@2: }; williamr@2: williamr@2: williamr@2: /** williamr@2: * williamr@2: * This class calculates and stores the screen area available williamr@2: * for each sub pane layout. williamr@2: * williamr@2: */ williamr@2: NONSHARABLE_CLASS(CEikStatusPaneLayout) : public CBase williamr@2: { williamr@2: public: williamr@2: /** williamr@2: * Two phase constructor. williamr@2: * @param aResource Resource of sub pane layout. williamr@2: * @param aScreenRect Screen rectangle. williamr@2: */ williamr@2: static CEikStatusPaneLayout* NewL(TResourceReader& aResource, const TRect& aScreenRect); williamr@2: williamr@2: /** williamr@2: * Two phase constructor. williamr@2: * @param aResource Resource of sub pane layout. williamr@2: * @param aScreenRect Screen rectangle. williamr@2: * @param aLayoutId Id of the status pane layout. williamr@2: */ williamr@2: static CEikStatusPaneLayout* NewL(TResourceReader& aResource, const TRect& aScreenRect, TInt aLayoutId); williamr@2: williamr@2: /** williamr@2: * Destructor williamr@2: */ williamr@2: ~CEikStatusPaneLayout(); williamr@2: williamr@2: /** williamr@2: * Finds the pane init with a given id. If a pane init williamr@2: * is not found NULL pointer is returned. williamr@2: * @return The layout tree instance with given id. williamr@2: */ williamr@2: inline CEikStatusPaneLayoutTree* Find(const TPaneId& aPaneId) const; williamr@2: williamr@2: /** williamr@2: * Calls given visitor objects VisitL, method. williamr@2: * @param aVisitor A visitor object to be visited. williamr@2: */ williamr@2: inline void AcceptL(MEikStatusPaneLayoutTreeVisitor* aVisitor); williamr@2: williamr@2: /** williamr@2: * Gets rectagle of the sub pane layout. williamr@2: * @return Rectangle of the sub pane layout. williamr@2: */ williamr@2: inline TRect Rect() const; williamr@2: williamr@2: /** williamr@2: * Re-reads layout data from AknLayout system. The data may have to be refreshed when e.g. williamr@2: * screen resolution, orientation or language variant layout is changed on the fly. williamr@2: * williamr@2: * @since 2.8 williamr@2: * @param aLayoutResourceId Id of the statuspane layout which data is to be refreshed. williamr@2: * williamr@2: */ williamr@2: void AknLayoutRefresh(TInt aLayoutResourceId); williamr@2: williamr@2: /** williamr@2: * This method tells if this layout is using AknLayout system for placing and sizing williamr@2: * the statuspane subpanes. williamr@2: * williamr@2: * @since 2.8 williamr@2: * @return ETrue if this layout has been initailized to use AknLayout. EFalse if the default williamr@2: * statuspane layout system is in use. williamr@2: * williamr@2: */ williamr@2: TBool AknLayoutUsed(); williamr@2: williamr@2: /** williamr@2: * This method maps given layout resource id and subpane UID to correct williamr@2: * layout lines in the AknLayout system. williamr@2: * williamr@2: * @since 3.1 williamr@2: * @param aLayoutResourceId Id of a statuspane layout. williamr@2: * @param aPaneId Uid of a statuspane subpane. williamr@2: * @return A rectangle which specifies the given subpane size williamr@2: * and position in the given layout. williamr@2: * williamr@2: */ williamr@2: TRect AknLayoutRect(TInt aLayoutResourceId, TPaneId aPaneId); williamr@2: williamr@2: private: williamr@2: williamr@2: /** williamr@2: * Constructor. williamr@2: */ williamr@2: CEikStatusPaneLayout(); williamr@2: williamr@2: /** williamr@2: * 2nd phase constructor. williamr@2: */ williamr@2: void ConstructL(TResourceReader& aResource, const TRect& aScreenRect, TInt aLayoutId); williamr@2: williamr@2: private: williamr@2: CEikStatusPaneLayoutTree* iRoot; williamr@2: williamr@2: private: williamr@2: williamr@2: /** williamr@2: * Updates layout data. williamr@2: * @param aLayoutResId Status pane layout resource id. williamr@2: */ williamr@2: void UpdateLayoutData(TInt aLayoutResId); williamr@2: williamr@2: private: // layout data for all nodes in CEikStatusPaneLayoutTree williamr@2: friend class CEikStatusPaneLayoutTree; williamr@2: const AknLayout::CInstance& iAknLayout; williamr@2: const AknLayoutScalable_Avkon::CInstance& iAknLayoutScalable_Avkon; williamr@2: TRect iScreenRect; williamr@2: TRect iMainPaneRect; williamr@2: TRect iUsualStatusPaneRect; williamr@2: TRect iApplicationWindowRect; williamr@2: TRect iStaconLayout1Rect; williamr@2: TRect iStaconLayout2Rect; williamr@2: TRect iSmallStatusPaneRect; williamr@2: }; williamr@2: williamr@2: williamr@2: /** williamr@2: * williamr@2: * Base class for status pane model. williamr@2: * williamr@2: */ williamr@2: class CEikStatusPaneModelBase : public CBase williamr@2: { williamr@2: public: williamr@2: williamr@2: /** williamr@2: * Destructor. williamr@2: */ williamr@2: IMPORT_C ~CEikStatusPaneModelBase(); williamr@2: williamr@2: /** williamr@2: * Gets the pane inits of the status pane. williamr@2: * @return Pane inits. williamr@2: */ williamr@2: inline CEikStatusPaneSetInit* PaneInits() const; williamr@2: williamr@2: /** williamr@2: * Sets the status pane layout williamr@2: * @param aLayoutResId Resource id of the status pane layout. williamr@2: * @param aChangeStatusPaneNow A flag to indicate immediate status pane layout change. williamr@2: */ williamr@2: IMPORT_C virtual void SetLayoutL(TInt aLayoutResId, TBool aChangeStatusPaneNow = ETrue); williamr@2: williamr@2: /** williamr@2: * Gets the current layout. williamr@2: * @return The current layout. williamr@2: */ williamr@2: inline CEikStatusPaneLayout* CurrentLayout() const; williamr@2: williamr@2: /** williamr@2: * Gets the current layout resource id. williamr@2: * @return The current layout resource id. williamr@2: */ williamr@2: IMPORT_C TInt CurrentLayoutResId() const; williamr@2: williamr@2: /** williamr@2: * Re-reads layout data for all existing layouts from AknLayout system. The data williamr@2: * may have to be refreshed when e.g. screen resolution, orientation or language williamr@2: * variant layout is changed on the fly. williamr@2: * williamr@2: * @since 2.8 williamr@2: * williamr@2: */ williamr@2: void AknLayoutRefresh(); williamr@2: williamr@2: /** williamr@2: * This method tells if given layout is using AknLayout system for placing and sizing williamr@2: * the statuspane subpanes. williamr@2: * williamr@2: * @since 2.8 williamr@2: * @param aLayoutId Layout which layout type is wanted to be known. williamr@2: * @return ETrue if given layout has been initailized to use AknLayout. EFalse if the default williamr@2: * statuspane layout system is in use. williamr@2: * williamr@2: */ williamr@2: TBool AknLayoutUsed(TInt aLayoutId); williamr@2: williamr@2: protected: williamr@2: williamr@2: /** williamr@2: * Internal class to CEikStatusPaneModel, williamr@2: * which ties layout resource IDs to layout structures. williamr@2: */ williamr@2: NONSHARABLE_CLASS(CIdLayoutPair) : public CBase williamr@2: { williamr@2: public: williamr@2: /** williamr@2: * Constructor. williamr@2: * @param aResId Resource id williamr@2: * @param aLayout Sub pane layout williamr@2: */ williamr@2: CIdLayoutPair(TInt aResId, CEikStatusPaneLayout* aLayout); williamr@2: /** williamr@2: * Destructor. williamr@2: */ williamr@2: ~CIdLayoutPair(); williamr@2: public: williamr@2: TInt iResId; williamr@2: CEikStatusPaneLayout* iLayout; williamr@2: }; williamr@2: typedef CArrayPtrFlat CLayoutIdSet; williamr@2: typedef CArrayFixFlat CIdSet; williamr@2: williamr@2: protected: williamr@2: williamr@2: /** williamr@2: * Constructor. williamr@2: * @param aEikEnv An environment for creating controls. williamr@2: */ williamr@2: IMPORT_C CEikStatusPaneModelBase(CEikonEnv& aEikEnv); williamr@2: williamr@2: /** williamr@2: * Base constructor for 2nd phase construction. williamr@2: * @param aCoreResId Status pane core resource id. williamr@2: */ williamr@2: IMPORT_C void BaseConstructL(TInt aCoreResId); williamr@2: williamr@2: /** williamr@2: * Loads given layout from resource. williamr@2: * @param aLayoutResId Layout resource id. williamr@2: */ williamr@2: IMPORT_C CEikStatusPaneLayout* LoadLayoutL(TInt aLayoutResId); williamr@2: williamr@2: /** williamr@2: * Returns set of legal layout ids. williamr@2: * @return Set of allowed status pane layout ids. williamr@2: */ williamr@2: inline CIdSet* LegalIds() const; williamr@2: williamr@2: /** williamr@2: * Checks if given layout id is allowed. williamr@2: * @param aLayoutResId Layout id to be checked. williamr@2: * @return ETrue if given layout id is allowed. williamr@2: */ williamr@2: TBool IsLegalId(TInt aLayoutResId) const; williamr@2: williamr@2: private: williamr@2: /** williamr@2: * Gets given layout. williamr@2: * @param aLayoutResId Layout resource id. williamr@2: */ williamr@2: CEikStatusPaneLayout* Layout(TInt aLayoutResId); williamr@2: williamr@2: /** williamr@2: * Checks given layout. williamr@2: * @param aLayout Layout to be checked. williamr@2: */ williamr@2: void CheckLayoutL(CEikStatusPaneLayout* aLayout); williamr@2: williamr@2: private: williamr@2: IMPORT_C virtual void Reserved_1(); williamr@2: williamr@2: private: williamr@2: NONSHARABLE_CLASS(TLayoutChecker) : public MEikStatusPaneLayoutTreeVisitor williamr@2: { williamr@2: public: williamr@2: TLayoutChecker(CEikStatusPaneSetInit* aPanes); williamr@2: void VisitL(CEikStatusPaneLayoutTree* aNode); williamr@2: private: williamr@2: CEikStatusPaneSetInit* iPanes; williamr@2: }; williamr@2: williamr@2: protected: williamr@2: CLayoutIdSet* iLayouts; williamr@2: TInt iCurrentResId; williamr@2: CEikonEnv& iEikEnv; williamr@2: williamr@2: private: williamr@2: CEikStatusPaneSetInit* iPanes; williamr@2: CEikStatusPaneLayout* iCurrentLayout; williamr@2: CIdSet* iLegalIds; williamr@2: }; williamr@2: williamr@2: williamr@2: /** williamr@2: * williamr@2: * Status pane model for application status pane. williamr@2: * williamr@2: */ williamr@2: NONSHARABLE_CLASS(CEikAppStatusPaneModel) : public CEikStatusPaneModelBase williamr@2: { williamr@2: public: williamr@2: /** williamr@2: * Two phase constructor. williamr@2: * williamr@2: * @param aEikEnv An environment for creating controls. williamr@2: * @param aCoreResId Status pane core resource id williamr@2: * @param aAppResId Application status pane resource id williamr@2: * @param aChangeStatusPaneNow A flag to indicate immediate status pane layout change. williamr@2: * @return Constructed instance. williamr@2: */ williamr@2: static CEikAppStatusPaneModel* NewL(CEikonEnv& aEikEnv, /*REikSrvSession,*/ TInt aCoreResId, TInt aAppResId = EEikStatusPaneUseDefaults, TBool aChangeStatusPaneNow = ETrue); williamr@2: williamr@2: /** williamr@2: * Destructor. williamr@2: */ williamr@2: ~CEikAppStatusPaneModel(); williamr@2: williamr@2: /** williamr@2: * Takes current layout into use. williamr@2: */ williamr@2: void ApplyCurrentLayoutL(); williamr@2: williamr@2: public: williamr@2: /** williamr@2: * from CEikStatusPaneModelBase williamr@2: */ williamr@2: void SetLayoutL(TInt aLayoutResId, TBool aChangeStatusPaneNow = ETrue); williamr@2: public: williamr@2: /** williamr@2: * from CEikStatusPaneModelBase williamr@2: */ williamr@2: void SetLayoutL(TInt aLayoutResId, TBool aChangeStatusPaneNow, TBool aNotfiyServerSide); williamr@2: williamr@2: private: williamr@2: CEikAppStatusPaneModel(CEikonEnv& aEikEnv); williamr@2: void ConstructL(TInt aCoreResId, TInt aAppResId, TBool aChangeStatusPaneNow = ETrue); williamr@2: }; williamr@2: williamr@2: williamr@2: inline TPaneId TEikStatusPaneInit::Id() const { return iId; } williamr@2: inline TBool TEikStatusPaneInit::AppOwned() const { return iFlags & EEikStatusPaneAppOwned; } williamr@2: inline TInt TEikStatusPaneInit::ControlTypeId() const { return iControlId; } williamr@2: inline TInt TEikStatusPaneInit::ControlResourceId() const { return iControlResource; } williamr@2: inline void TEikStatusPaneInit::SetHidden() {iFlags|=KEikStatusPaneHiddenBit;} williamr@2: inline void TEikStatusPaneInit::ClearHidden() {iFlags&=~KEikStatusPaneHiddenBit;} williamr@2: inline TBool TEikStatusPaneInit::IsHidden() const {return iFlags&KEikStatusPaneHiddenBit;} williamr@2: williamr@2: inline CEikStatusPaneLayoutTree* CEikStatusPaneLayout::Find(const TPaneId& aPaneId) const { return iRoot->Find(aPaneId); } williamr@2: inline void CEikStatusPaneLayout::AcceptL(MEikStatusPaneLayoutTreeVisitor* aVisitor) { iRoot->AcceptL(aVisitor); } williamr@2: inline TRect CEikStatusPaneLayout::Rect() const { return iRoot->Rect(); } williamr@2: williamr@2: inline TPaneId CEikStatusPaneLayoutTree::Id() const { return iId; } williamr@2: inline TRect CEikStatusPaneLayoutTree::Rect() const { return iRect; } williamr@2: williamr@2: williamr@2: inline CEikStatusPaneSetInit* CEikStatusPaneModelBase::PaneInits() const { return iPanes; } williamr@2: inline CEikStatusPaneLayout* CEikStatusPaneModelBase::CurrentLayout() const { return iCurrentLayout; } williamr@2: inline CEikStatusPaneModelBase::CIdSet* CEikStatusPaneModelBase::LegalIds() const { return iLegalIds; } williamr@2: williamr@2: #endif