--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/xmluicontroller/inc/contentrenderer.h Wed Sep 01 12:32:46 2010 +0100
@@ -0,0 +1,286 @@
+/*
+* 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: MAiContentObserver implementation for XML UI controller
+*
+*/
+
+
+#ifndef C_CONTENTRENDERER_H
+#define C_CONTENTRENDERER_H
+
+// System includes
+#include <e32base.h>
+#include <e32hashtab.h>
+
+// User includes
+#include "aicontentobserver.h"
+#include "xnproperty.h"
+
+// Forward declarations
+class TXnUiEngineAppIf;
+class CXnNodeAppIf;
+class CGulIcon;
+class MAiFwEventHandler;
+class CHsContentPublisher;
+class THsPublisherInfo;
+
+namespace AiUtility
+ {
+ class CContentPriorityMap;
+ }
+
+namespace AiXmlUiController
+ {
+ class CActiveTransactionStack;
+ class CTransactionFactoryImpl;
+ class MTransactionElement;
+ class MTransaction;
+ class CAppUi;
+ class CXmlNodeIdGenerator;
+ class CCssPropertyMap;
+ class CPolicyEvaluator;
+ class TAiPolicyElement;
+ }
+
+namespace AiXmlUiController
+{
+
+/**
+* @ingroup group_xmluicontroller
+*
+* CContentRenderer renders the content of the content publisher plug-ins
+*
+* @lib AiXmlUiMain
+*/
+class CContentRenderer : public CBase,
+ public MAiContentObserver
+ {
+public:
+ // Constructors and destructor
+
+ static CContentRenderer* NewL( CAppUi& aAppUi );
+
+ ~CContentRenderer();
+
+public:
+ // New functions
+
+ /**
+ * Sets event handler.
+ *
+ * @param aFwEventHandler the event handler to use.
+ */
+ void SetEventHandler( MAiFwEventHandler& aFwEventHandler );
+
+ /**
+ * Cleans all content items published by aPlugin.
+ */
+ void CleanPluginFromUi( CHsContentPublisher& aPlugin );
+
+public:
+ // from MAiContentObserver
+
+ /**
+ * @see MAiContentObserver
+ */
+ TInt StartTransaction( TInt aTxId );
+
+ /**
+ * @see MAiContentObserver
+ */
+ TInt Commit( TInt aTxId );
+
+ /**
+ * @see MAiContentObserver
+ */
+ TInt CancelTransaction( TInt aTxId );
+
+ /**
+ * @see MAiContentObserver
+ */
+ TBool CanPublish( CHsContentPublisher& aPlugin,
+ TInt aContent, TInt aIndex );
+
+ /**
+ * @see MAiContentObserver
+ */
+ TInt Publish( CHsContentPublisher& aPlugin,
+ TInt aContent, TInt aResource, TInt aIndex );
+
+ /**
+ * @see MAiContentObserver
+ */
+ TInt Publish( CHsContentPublisher& aPlugin,
+ TInt aContent, const TDesC16& aText, TInt aIndex );
+
+ /**
+ * @see MAiContentObserver
+ */
+ TInt Publish( CHsContentPublisher& aPlugin,
+ TInt aContent, const TDesC8& aBuf, TInt aIndex );
+
+ /**
+ * @see MAiContentObserver
+ */
+ TInt Publish( CHsContentPublisher& aPlugin,
+ TInt aContent, RFile& aFile, TInt aIndex );
+
+ /**
+ * @see MAiContentObserver
+ */
+ TInt Clean( CHsContentPublisher& aPlugin,
+ TInt aContent, TInt aIndex );
+
+ /**
+ * @see MAiContentObserver
+ */
+ TAny* Extension( TUid aUid );
+
+ /**
+ * @see MAiContentObserver
+ */
+ TBool RequiresSubscription(
+ const THsPublisherInfo& aPublisherInfo ) const;
+
+ /**
+ * @see MAiContentObserver
+ */
+ TInt SetProperty( CHsContentPublisher& aPlugin,
+ const TDesC8& aElementId, const TDesC8& aPropertyName,
+ const TDesC8& aPropertyValue );
+
+ /**
+ * @see MAiContentObserver
+ */
+ TInt SetProperty( CHsContentPublisher& aPlugin,
+ const TDesC8& aElementId, const TDesC8& aPropertyName,
+ const TDesC8& aPropertyValue,
+ MAiContentObserver::TValueType aValueType );
+
+private:
+ // Constructors
+
+ /**
+ * C++ default constructor
+ */
+ CContentRenderer( CAppUi& aAppUi );
+
+ /**
+ * 2nd phase constructor
+ */
+ void ConstructL();
+
+private:
+ // New functions
+
+ void DoStartTransactionL( TInt aTxId );
+
+ TInt CanPublishL( CHsContentPublisher& aPlugin,
+ TInt aContent, TInt aIndex );
+
+ TInt DoPublishL( CHsContentPublisher& aPlugin,
+ TInt aContent, TInt aResource, TInt aIndex );
+
+ TInt DoPublishL( CHsContentPublisher& aPlugin,
+ TInt aContent, const TDesC16& aText, TInt aIndex );
+
+ TInt DoPublishL( CHsContentPublisher& aPlugin,
+ TInt aContent, const TDesC8& aBuf, TInt aIndex );
+
+ TInt DoPublishL( CHsContentPublisher& aPlugin,
+ TInt aContent, RFile& aFile, TInt aIndex );
+
+ TInt DoCleanL( CHsContentPublisher& aPlugin,
+ TInt aContent, TInt aIndex );
+
+ void SetImmediateMode( TBool aImmediateMode );
+
+ TBool IsImmediateMode() const;
+
+ void ProcessTransactionElementL(
+ MTransactionElement* aElement );
+
+ CXnNodeAppIf* FindNodeByClassL(
+ const TDesC& aCid, TInt aIndex, const TDesC8& aNs );
+
+ CXnNodeAppIf* FindNodeByIdL(
+ const TDesC& aCid, const TDesC& aNs = KNullDesC );
+
+ CXnNodeAppIf* FindNodeByIdL(
+ const TDesC8& aCid, const TDesC8& aNs = KNullDesC8 );
+
+ TInt PublishIconL( CHsContentPublisher& aPlugin,
+ const TDesC& aCid, CGulIcon* aIcon, TInt aIndex,
+ CXnNodeAppIf* aResource = NULL );
+
+ TInt PublishDataL( CHsContentPublisher& aPlugin,
+ const TDesC& aCid, const TDesC8& aData,
+ const TDesC8& aContentType, TInt aIndex,
+ CXnNodeAppIf* aResource = NULL );
+
+ TBool AllowPublishByPriority(
+ CXnNodeAppIf& aUiElement, TInt aNewPriority ) const;
+
+ void StartContentRefresh();
+
+ TInt RefreshContentL( HBufC* aUiElementId, TInt aOldPriority );
+
+ static TInt RefreshContentCallback( TAny* aContentRenderer );
+
+ void SendRefreshContentEventL();
+
+ TBool IsParentNewsticker( CXnNodeAppIf& aTarget );
+
+ void ProcessContentChangesL( MTransaction& aTr );
+ void ProcessContentChangeL( TAiPolicyElement& aElement );
+
+ TInt SetPropertyL( CHsContentPublisher& aPlugin,
+ const TDesC8& aElementId, const TDesC8& aPropertyName,
+ const TDesC8& aPropertyValue, MAiContentObserver::TValueType aValueType );
+
+ CXnDomPropertyValue::TPrimitiveValueType DomPropertyValueType(
+ MAiContentObserver::TValueType aValueType );
+
+private:
+ // data
+
+ /** Transaction stack, Owned. */
+ CActiveTransactionStack* iStack;
+ /** Factory for transacations, Owned. */
+ CTransactionFactoryImpl* iFactory;
+ /** Immediate mode flag, Owned. */
+ TBool iImmediateMode;
+ /** AppUI, Not owned. */
+ CAppUi& iAppUi;
+ /** Node lookup id generator, Owned. */
+ CXmlNodeIdGenerator* iNodeIdGenerator;
+ /** Content priority map, Owned. */
+ AiUtility::CContentPriorityMap* iContentPriorityMap;
+ /** Map of refreshable ui elements. */
+ RPtrHashMap< TDesC, TInt > iRefreshableUiElements;
+ /** Timer for asynchronous content refreshing, Owned. */
+ CPeriodic* iTimer;
+ /** Fw event handler, Not owned. */
+ MAiFwEventHandler* iFwEventHandler;
+ /** CSS property map, Owned. */
+ CCssPropertyMap* iPropertyMap;
+ /** Publishing policy evaluator, Owned. */
+ CPolicyEvaluator* iPolicyEvaluator;
+ };
+
+} // namespace AiXmlUiController
+
+#endif // C_CONTENTRENDERER_H
+
+// End of File