diff -r 000000000000 -r f72a12da539e idlehomescreen/xmluicontroller/inc/xmluicontroller.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/xmluicontroller/inc/xmluicontroller.h Thu Dec 17 08:40:49 2009 +0200 @@ -0,0 +1,270 @@ +/* +* Copyright (c) 2005-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: XML UI Controller main class +* +*/ + + +#ifndef C_XMLUICONTROLLER_H +#define C_XMLUICONTROLLER_H + +#include +#include "aiuicontroller.h" +#include "aiuieventhandler.h" + + +const TInt KImplementationUidXmlUiController = AI3_UID_ECOM_IMPLEMENTATION_UICONTROLLER_XML; +const TUid KUidXmlUiController = { KImplementationUidXmlUiController }; + + +class CApaApplication; +class TXnUiEngineAppIf; +class CXnNodeAppIf; +class CRepository; + +namespace AiXmlUiController +{ + +class CAppUi; +class CAIXuikonEventHandler; +class CXmlNodeIdGenerator; +class CContentRenderer; +class CContentPublisher; + + +/** + * @ingroup group_xmluicontroller + * + * Active Idle XML UI Controller. + */ +class CXmlUiController : public CAiUiController, + public MAiMainUiController, + public MAiUiEventHandler + { +public: + // Constructors and destructor + + static CXmlUiController* NewL(); + + ~CXmlUiController(); + +public: + // New functions + + /** + * Sets content observer. + * + * @since S60 5.0 + * @param aObserver Conten observer + */ + void SetObserver( MAiContentObserver& aObserver ); + + /** + * Set the app ui when created. + * + * @since S60 5.0 + * @param aAppUi AppUi + */ + void SetAppUi( CAppUi& aAppUi ); + + /** + * Get app ui. + * + * @since S60 5.0 + * @return AppUi + */ + CAppUi* AppUi() const; + + /** + * Creates and returns Xuikon event handler. + * + * @since S60 5.0 + * @param aContentRender Content renderer + * @return Xuikon event handler + */ + CAIXuikonEventHandler* CreateXuikonEventHandlerL( + CContentRenderer& aRenderer ); + + /** + * Call from App Ui ConstructL to notify AI FW that the App env is ready. + * + * @since S60 5.0 + */ + void NotifyAppEnvReadyL(); + + /** + * Gets UiFw observer + * + * @since S60 5.0 + * @return UiFw observer + */ + MAiUiFrameworkObserver* UiFrameworkObserver() const; + + /** + * Gets UiFw event handler + * + * @since S60 5.0 + * @return UiFw event handler + */ + MAiFwEventHandler* FwEventHandler() const; + + /** + * Gets UiEngine. + * + * @since S60 5.0 + * @return UiEngine + */ + TXnUiEngineAppIf* UiEngineL() const; + + /** + * Get settings repository. + * + * @since S60 5.0 + * @return Settings repository + */ + CRepository& SettingsRepository() const; + + /** + * Gets native ui publishers + * + * @since S60 5.0 + * @param aPlugins Array where plugins are appended. + */ + void PublisherInfoL( RAiPublisherInfoArray& aPlugins ); + + /** + * Gets xml ui publishers + * + * @since S60 5.0 + * @param aSource Xml node which defineds the publisher + * @param aInfo Publisher info filled based aSource information + */ + void PublisherInfoL( CXnNodeAppIf& aSource, + TAiPublisherInfo& aInfo ); + +public: + // from CAiUiController + + void LoadUIDefinitionL(); + + void GetPluginsL( RAiPublisherInfoArray& aPlugins ); + + void GetSettingsL( const TAiPublisherInfo& aPubInfo, + RAiSettingsItemArray& aSettings ); + + void ActivateUI(); + + MAiContentObserver& GetContentObserver(); + + void SetEventHandler( MAiFwEventHandler& aFwEventHandler ); + + void RemovePluginFromUI( MAiPropertyExtension& aPlugin ); + + MAiMainUiController* MainInterface(); + + MAiSecondaryUiController* SecondaryInterface(); + +private: + // from MAiMainUiController + + void RunApplicationL(); + + CCoeEnv& CoeEnv(); + + void SetUiFrameworkObserver( MAiUiFrameworkObserver& aObserver ); + + void Exit(); + + TBool IsMenuOpen(); + +private: + // from MAiUiEventHandler + + TBool HandleUiEvent(TAny* aEvent, const TDesC8& aParam); + +private: + // Constructors + + CXmlUiController(); + + void ConstructL(); + +private: + // New methods + static CApaApplication* NewApplication(); + + void HandleFocusGainedL( const TDesC8& aUiElement1, const TDesC8& aUiElement2, CXnNodeAppIf& aOrigin ); + + void HandleSetElementSizeL( const TDesC8& aElementName, CXnNodeAppIf& aOrigin ); + + static TInt ExitTimerCallBack(TAny *aSelf); + + void GetSettingsFromCRL( const TAiPublisherInfo& aPubInfo, RAiSettingsItemArray &aPluginSettings ); + + void GetContentItemL( CXnNodeAppIf& aNode, RAiSettingsItemArray& aSettings, HBufC*& aItemName ); + + void GetConfigurationsL( CXnNodeAppIf& aNode, RAiSettingsItemArray& aSettings, const TDesC& aConfOwner ); + + void GetContentModelL(const TAiPublisherInfo& aPubInfo, RAiSettingsItemArray& aSettings); + +private: // data + + /** + * Ai content observer. Not own. + */ + MAiContentObserver* iObserver; + + /** + * Ui framework observer. Not own. + */ + MAiUiFrameworkObserver* iUiFrameworkObserver; + + /** + * Event handler. Not own. + */ + MAiFwEventHandler* iFwEventHandler; + + /** + * Node id generator. Own. + */ + CXmlNodeIdGenerator* iNodeIdGenerator; + + /** + * App UI. Not own. + */ + CAppUi* iAppUi; + + /** + * Timer to call AppUi's exit. Own. + **/ + CPeriodic *iExitTimer; + + /** + * Cenrep. Own. + */ + CRepository *iAISettingsRepository; + + /** + * CPS publisher. Own. + */ + CContentPublisher* iCPSpublisher; + + /** + * Flag to indicate whether running as main UI controller + */ + TBool iRunningAsMain; + }; +} // namespace AiXmlUiController + +#endif // C_XMLUICONTROLLER_H