diff -r 5f0182e07bfb -r 5456b4e8b3a8 idlehomescreen/inc/xnviewmanager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/inc/xnviewmanager.h Wed Sep 01 12:32:46 2010 +0100 @@ -0,0 +1,378 @@ +/* +* Copyright (c) 2008 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: View Manager +* +*/ + +#ifndef XNVIEWMANAGER_H +#define XNVIEWMANAGER_H + +// System includes +#include + +// User includes + +// Forward declarations +class CXnUiEngine; +class CXnComposer; +class CXnODTParser; +class CXnEditor; +class CXnEcomHandler; +class CXnRootData; +class CXnViewData; +class CXnPluginData; +class CXnNode; +class CXnODT; +class CXnResource; +class CXnControlAdapter; +class CXnAppUiAdapter; +class CHsContentInfo; +class CXnViewAdapter; +class CXnOomSysHandler; + +namespace hspswrapper + { + class CHspsWrapper; + } + +using namespace hspswrapper; + +// Classe declaration +/** + * Notifies view changes + * + * @ingroup group_xnlayoutengine + * @lib xn3layoutengine.lib + * @since S60 5.0 + */ +NONSHARABLE_CLASS( MXnViewObserver ) + { +public: + // new functions + virtual void NotifyViewActivatedL( const CXnViewData& aViewData ) = 0; + + virtual void NotifyViewDeactivatedL( const CXnViewData& aViewData ) = 0; + + virtual void NotifyConfigureWidgetL( + const CHsContentInfo& aContentInfo, + CXnPluginData& aPluginData ) = 0; + + virtual void NotifyWidgetAdditionL( const CXnPluginData& aPluginData ) = 0; + + virtual void NotifyWidgetRemovalL( const CXnPluginData& aPluginData ) = 0; + + virtual void NotifyViewAdditionL( const CXnPluginData& aPluginData ) = 0; + + virtual void NotifyViewRemovalL( const CXnPluginData& aPluginData ) = 0; + + virtual void NotifyAllViewsLoadedL() = 0; + + virtual void NotifyContainerActivatedL( const CXnViewData& aViewData ) = 0; + }; + +/** + * Manages views in UiEngine. + * + * @ingroup group_xnlayoutengine + * @lib xn3layoutengine.lib + * @since S60 5.0 + */ +NONSHARABLE_CLASS( CXnViewManager ) : public CBase + { +public: + /** + * Two-phased constructor. + */ + static CXnViewManager* NewL( + CXnAppUiAdapter& aAdapter ); + + /** + * Two-phased constructor. + */ + static CXnViewManager* NewLC( + CXnAppUiAdapter& aAdapter ); + + /** + * Destructor + */ + ~CXnViewManager(); + +private: + // constructors + + /** + * C++ constructor + */ + CXnViewManager( CXnAppUiAdapter& aAdapter ); + + /** + * 2nd phase constructor + */ + void ConstructL(); + +public: + // New functions + + inline void SetUiEngine( CXnUiEngine& aUiEngine ); + + inline CXnUiEngine& UiEngine() const; + + inline CXnComposer& Composer() const; + + inline CXnEditor& Editor() const; + + inline CXnAppUiAdapter& AppUiAdapter() const; + + CXnODT* ODT() const; + + CXnNode* RootNode() const; + + CXnNode* ViewNode() const; + + CXnODTParser& Parser() const; + + CXnEcomHandler& EcomHandler() const; + + const RPointerArray< CXnControlAdapter >& Controls() const; + + RPointerArray< CXnNode >& PluginNodes() const; + + void PluginDataL( RPointerArray< CXnPluginData >& aList, + TBool aGlobal = EFalse ) const; + + TInt PluginDataL( const TDesC8& aParentId, + RPointerArray< CXnPluginData >& aList ) const; + + RPointerArray< CXnNode >& AppearanceNodes() const; + + CArrayPtrSeg< CXnResource >& Resources() const ; + + void LoadUiL(); + + void ReloadUiL(); + + TInt LoadWidgetToPluginL( + const CHsContentInfo& aContentInfo, + CXnPluginData& aPluginData ); + + TInt UnloadWidgetFromPluginL( + CXnPluginData& aPluginData, TBool aForce = EFalse ); + + TInt ReplaceWidgetToPluginL( + const CHsContentInfo& aContentInfo, + CXnPluginData& aPluginData ); + + void ActivateNextViewL( TInt aEffectId = 0 ); + + void ActivatePreviousViewL( TInt aEffectId = 0 ); + + TInt AddViewL( const CHsContentInfo& aInfo ); + + void AddViewL( TInt aEffectId = 0 ); + + TInt RemoveFaultyView( CXnViewData* aViewData ); + + TInt RemoveViewL( const CHsContentInfo& aInfo ); + + void RemoveViewL( TInt aEffectId = 0 ); + + void AddObserver( const MXnViewObserver& aObserver ); + + void RemoveObserver( const MXnViewObserver& aObserver ); + + CXnRootData& ActiveAppData() const; + + CXnViewData& ActiveViewData() const; + + TInt ActivateAppL( const TDesC8& aPluginUid ); + TInt ActivateViewL( const TDesC8& aPluginId ); + + TInt ViewAmount() const; + + TInt ViewIndex() const; + + TInt MaxPages() const; + + CXnOomSysHandler& OomSysHandler() const; + + void UpdatePageManagementInformationL(); + + void ShowErrorL( TInt aResource ) const; + + void HandleErrorNotes( const TInt aError ) const; + + void PublishersReadyL( CXnViewData& aViewData, TInt aResult ); + + void NotifyAllViewsLoadedL(); + +private: + // new functions + + void NotifyContainerChangedL( CXnViewData& aViewToActivate ); + + void NotifyViewActivatedL( const CXnViewData& aViewData ); + + void NotifyViewDeactivatedL( const CXnViewData& aViewData ); + + void NotifyViewAdditionL( const CXnViewData& aViewData ); + + void NotifyViewRemovalL( const CXnViewData& aViewData ); + + void NotifyConfigureWidgetL( + const CHsContentInfo& aContentInfo, + CXnPluginData& aPluginData ); + + void NotifyWidgetAdditionL( const CXnPluginData& aPluginData ); + + void NotifyWidgetRemovalL( const CXnPluginData& aPluginData ); + + void NotifyContainerActivatedL( const CXnViewData& aViewData ); + + CXnViewData* ViewData( CXnNode& aNode ) const; + + CXnViewData& PreviousViewData() const; + + CXnViewData& NextViewData() const; + + void UpdateCachesL(); + + void ReportWidgetAmountL( const CXnViewData& aViewData ); + + TInt ResolveIconIndex( TInt aPageCount, TInt aPageNum ) const; + + /** + * Callback for stability timer + * + * @param aAny Pointer to CViewManager object + * @return TInt System wide error code. + */ + static TInt SystemStabileTimerCallback( TAny* aAny ); + + /** + * Reset crash count + */ + void ResetCrashCount(); + + void DoRobustnessCheckL(); + + static TInt ContainerActivated( TAny* aAny ); + +private: + // data + + /** + * AppUi adapter. + * Not own. + */ + CXnAppUiAdapter& iAppUiAdapter; + + /** + * Application uid + */ + TUid iApplicationUid; + + /** + * HSPS wrapper. + * Not own. + */ + CHspsWrapper* iHspsWrapper; + + /** + * UiEngine. + * Not own. + */ + CXnUiEngine* iUiEngine; + + /** + * Comopser. + * Own. + */ + CXnComposer* iComposer; + + /** + * Editor. + * Own. + */ + CXnEditor* iEditor; + + /** + * Application configuration root data. + * Own. + */ + CXnRootData* iRootData; + + /** + * Widget amount trigger. + * Own. + */ + CXnNode* iWidgetAmountTrigger; + + /** + * Resources for current view. + * Own. + */ + mutable CArrayPtrSeg< CXnResource >* iResources; + + /** + * Controls for current view. + * Own. + */ + mutable RPointerArray< CXnControlAdapter > iControls; + + /** + * Appearance nodes. This array needs to be updated when UI furniture + * is changed. + * Own. + */ + mutable RPointerArray< CXnNode > iAppearanceNodes; + + /** + * View observers. + * Own. + */ + RPointerArray< MXnViewObserver > iObservers; + + /** + * OOM system handler. + * Own. + */ + CXnOomSysHandler* iOomSysHandler; + + /** + * Timer for system stability. + * Own. + */ + CPeriodic* iStabilityTimer; + + /** + * Flag to indicate first view activation + */ + TBool iUiReady; + + /** + * Async callback + * Own. + */ + CPeriodic* iAsyncCb; + +private: + // Friend classes + + friend class CXnViewAdapter; + }; + +// Inline functions +#include "xnviewmanager.inl" + +#endif