idlehomescreen/xmluicontroller/inc/contentrenderer.h
branchRCL_3
changeset 34 5456b4e8b3a8
--- /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