--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/nativeuicontroller/inc/nativeuicontroller.h Thu Dec 17 08:40:49 2009 +0200
@@ -0,0 +1,327 @@
+/*
+* 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: Native UI controller.
+*
+*/
+
+
+#ifndef C_NATIVEUICONTROLLER_H
+#define C_NATIVEUICONTROLLER_H
+
+
+#include <aisystemuids.hrh>
+#include "aiuicontroller.h"
+#include "aiuiframeworkobserver.h"
+#include "aicontentobserver.h"
+
+#include <aiutility.h>
+
+class MAiPropertyExtension;
+class MAiPSPropertyObserver;
+
+namespace AiNativeUiController
+{
+
+class CAiNativeRenderer;
+class CAiStatusPanel;
+class CAppUi;
+class CAiToolbarRenderer;
+
+const TInt KImplementationUidNativeUiController = AI_UID_ECOM_IMPLEMENTATION_UICONTROLLER_NATIVE;
+
+const TUid KUidNativeUiController = { KImplementationUidNativeUiController };
+
+/**
+* Native UI controller.
+* This class works as a secondary UI controller. It implements
+* the MAiContentObserver interface thus handling and forwarding the data coming
+* from the publishers.
+*
+* @since Series 60 3.2
+*/
+class CNativeUiController : public CAiUiController,
+ public MAiSecondaryUiController,
+ public MAiMainUiController,
+ public MAiUiFrameworkObserver,
+ public MAiContentObserver
+ {
+public:
+
+ static CNativeUiController* NewL();
+
+ virtual ~CNativeUiController();
+
+// from base class CAiUiController
+
+ void PrepareToExit();
+
+ void LoadUIDefinitionL();
+
+ void GetPluginsL(RAiPublisherInfoArray& aPlugins);
+
+ void GetSettingsL(const TAiPublisherInfo& aPubInfo,
+ RAiSettingsItemArray& aSettings);
+
+ void ActivateUI();
+
+ MAiContentObserver& GetContentObserver();
+
+ void SetEventHandler(MAiFwEventHandler& aEventHandler);
+
+ MAiFwEventHandler* FwEventHandler();
+
+ void RemovePluginFromUI( MAiPropertyExtension& aPlugin );
+
+ MAiMainUiController* MainInterface();
+
+ MAiSecondaryUiController* SecondaryInterface();
+
+ void HandleLoadedPlugins(const RAiPublisherInfoArray& /*aRequiredPlugins*/ ) {};
+
+// from base class MAiMainUiController
+
+ void RunApplicationL();
+
+ CCoeEnv& CoeEnv();
+
+ void SetUiFrameworkObserver( MAiUiFrameworkObserver& aObserver );
+
+ TBool IsMenuOpen();
+
+// from base class CAiSecordaryUiController
+
+ void SetCoeEnv( CCoeEnv& aCoeEnv );
+
+ MAiUiFrameworkObserver* UiFrameworkObserver();
+
+// from base class MAiUiFrameworkObserver
+
+ void HandleResourceChange( TInt aType );
+
+ void HandleForegroundEvent( TBool aForeground );
+
+// from base class MAiContentObserver
+
+ TInt StartTransaction(TInt aTxId);
+
+ TInt Commit(TInt aTxId);
+
+ TInt CancelTransaction(TInt aTxId);
+
+ TBool CanPublish(MAiPropertyExtension& aPlugin, TInt aContent, TInt aIndex);
+
+ TInt Publish(MAiPropertyExtension& aPlugin, TInt aContent, TInt aResource, TInt aIndex );
+
+ TInt Publish(MAiPropertyExtension& aPlugin, TInt aContent, const TDesC16& aText, TInt aIndex );
+
+ TInt Publish(MAiPropertyExtension& aPlugin, TInt aContent, const TDesC8& aBuf, TInt aIndex );
+
+ TInt Publish(MAiPropertyExtension& aPlugin, TInt aContent, RFile& aFile, TInt aIndex );
+
+ TInt Clean(MAiPropertyExtension& aPlugin, TInt aContent, TInt aIndex );
+
+ TAny* Extension(TUid aUid);
+
+ TBool RequiresSubscription( const TAiPublisherInfo& aPublisherInfo ) const;
+
+// new methods
+
+ /**
+ * Set app ui instance to this class.
+ *
+ * @since S60 3.2
+ * @param aAppUi is pointer to app ui.
+ */
+ void SetAppUi( CAppUi* aAppUi )
+ {
+ iAppUi = aAppUi;
+ }
+
+ void VariateToMainUiController();
+
+ void Exit();
+
+private:
+
+ CNativeUiController();
+
+ static CApaApplication* NewApplication();
+
+ /**
+ * Add renderer.
+ *
+ * Ownership transferred.
+ *
+ * @since S60 3.2
+ * @param aRenderer is pointer to renderer.
+ */
+ void AddRendererL( CAiNativeRenderer* aRenderer );
+
+ /**
+ * Remove a renderer. Renderer is only
+ * removed from the array and is deleted ONLY
+ * when aDelete = ETrue
+ *
+ * @since S60 5.0
+ * @param aRenderer is pointer to the renderer to be removed
+ * @param aDelete is ETrue when the renderer will be deleted
+ * @return ETrue upon successful removing.
+ */
+ TBool RemoveRenderer( CAiNativeRenderer *aRenderer, TBool aDelete = EFalse );
+
+ /**
+ * Recreates the toolbar renderer
+ */
+ TBool RecreateToolbarRendererL();
+
+ /**
+ * Deletes and removes the toolbar renderer from
+ * renderer array.
+ */
+ void DeleteToolbarRenderer();
+
+ /**
+ * Template function for publish.
+ *
+ * @since S60 3.2
+ * @param aPlugin is publishing plugin.
+ * @param aContent is content id
+ * @param aData is published data
+ * @param aIndex is index in the control, not used by Native UI Controller.
+ * @return KErrNone if publishing was successful.
+ */
+ template<class T>
+ TInt DoPublish( MAiPropertyExtension& aPlugin, TInt aContent, T& aData, TInt aIndex );
+
+ /**
+ * Handles idle state changes.
+ *
+ * @since S60 v3.2
+ */
+ static TInt HandleIdleStateEvent( TAny* aPtr );
+
+ /**
+ * Handles keylock state changes.
+ *
+ * @since S60 v3.2
+ */
+ static TInt HandleKeylockStateEvent( TAny* aPtr );
+
+ static TInt HandlePluginConfChange( TAny* aPtr );
+
+ static TInt ExitTimerCallBack( TAny* aSelf );
+ void GetSettingsFromCRL( const TAiPublisherInfo& aPubInfo,
+ RAiSettingsItemArray &aPluginSettings );
+
+private: // Data
+
+ /**
+ * Array of renderers.
+ * Own.
+ */
+ RPointerArray<CAiNativeRenderer> iRenderers;
+
+ /**
+ * Offset of resource file.
+ */
+ TInt iResourceOffset;
+
+ /**
+ * Status panel
+ * Own.
+ */
+ CAiStatusPanel* iStatusPanel;
+
+ /**
+ * Reference to available CONE environment object. Not own.
+ */
+ CCoeEnv* iCoeEnv;
+
+ /**
+ * Idle state PS observer.
+ * Own.
+ */
+ MAiPSPropertyObserver* iIdleStatusObserver;
+
+ /**
+ * Keylock state PS observer.
+ * Own.
+ */
+ MAiPSPropertyObserver* iKeylockStatusObserver;
+
+
+ /**
+ * ExtHS plugin configuration PS observer.
+ * Own.
+ */
+ MAiPSPropertyObserver* iExtHsPluginConfChange;
+
+ /**
+ * Native UI controller plug-ins
+ */
+ RAiPublisherInfoArray iPlugins;
+
+ /**
+ * Plug-in event handler.
+ * Doesn't own.
+ */
+ MAiFwEventHandler* iFwEventHandler;
+
+ /**
+ * Pointer to this, when role is main ui controller.
+ */
+ MAiMainUiController* iMain;
+
+ /**
+ * Ui framework observer. Not own.
+ */
+ MAiUiFrameworkObserver* iUiFrameworkObserver;
+
+ /**
+ * Pointer to app ui.
+ * Not own.
+ */
+ CAppUi* iAppUi;
+
+ /**
+ * Indicates if Native UI Controller takes responsibilities of
+ * Main UI Controller.
+ */
+ TBool iRunningAsMain;
+
+ /**
+ * Timer to call AppUi's exit
+ **/
+ CPeriodic *iExitTimer;
+
+ /**
+ * To prevent double loading of the UI
+ **/
+ TBool iUiLoaded;
+
+ /**
+ * Pointer to our toolbar renderer. Do not delete
+ * renderer through this pointer
+ */
+ CAiToolbarRenderer *iToolbarRenderer;
+
+ };
+
+#include "nativeuicontroller.inl"
+
+} // namespace AiNativeUiController
+
+#endif
+
+// End of File.