idlehomescreen/xmluicontroller/inc/transactionelement.h
changeset 0 f72a12da539e
child 88 3321d3e205b6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/xmluicontroller/inc/transactionelement.h	Thu Dec 17 08:40:49 2009 +0200
@@ -0,0 +1,180 @@
+/*
+* 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:  Transaction element
+*
+*/
+
+
+#ifndef C_TRANSACTIONELEMENT_H
+#define C_TRANSACTIONELEMENT_H
+
+#include <e32base.h>
+#include "mtransactionelement.h"
+
+class CXnNodeAppIf;
+class MXnComponentInterface;
+
+namespace AiUtility
+    {
+    class CContentPriorityMap;
+    }
+
+namespace AiXmlUiController
+    {
+    class CCssPropertyMap;
+    }
+
+// CLASS DECLARATION
+
+namespace AiXmlUiController
+    {
+
+    /**
+     *  @ingroup group_xmluicontroller
+     * 
+     * CTransactionElement is abstract base class for transaction elements.
+     * CTransactionElement corresponds one publish operation within a
+     * transaction scope.
+     *
+     * @lib AiXmlUiMain
+     */
+    class CTransactionElement : public CBase, public MTransactionElement
+        {
+        public:  // Constructors and destructor
+            
+            virtual ~CTransactionElement();
+
+        public: // New functions
+            
+            void Reset();
+            
+            RAiPolicyElementArray& PolicyArray();
+            
+            /**
+             * Sets current content priority value.
+             *
+             * @param aPriority priority of current content
+             * @post iContentPriority == aPriority
+             */
+            void SetContentPriority( TInt aPriority );
+            
+            /**
+             * Sets CSS property map to use.
+             *
+             * @param aPropertyMap CSS property map
+             */
+            void SetCssPropertyMap( CCssPropertyMap* aPropertyMap );
+
+            /**
+             * Returns the target node.
+             */
+            CXnNodeAppIf& Target() const;
+            
+            /**
+             * Returns offset to iElementLink.
+             */
+            inline static TInt LinkOffset();
+            
+            /**
+             * Returns offset to iFactoryLink.
+             */
+            inline static TInt FactoryLinkOffset();
+            
+        protected:  // New functions
+        
+            CTransactionElement( AiUtility::CContentPriorityMap& aContentPriorityMap );
+        
+            /**
+             * Sets the target node.
+             */    
+            void SetTarget(CXnNodeAppIf& aTarget);
+            
+            
+            /**
+             * Applies publishing policy to target UI element.
+             * The policy is applied by modifying CSS property defined
+             * by non-empty content.
+             */
+            void ApplyPublishingPolicy( TBool& aLayoutChanged,
+                                        RPropertyHashMap& aPropertyHashMap );
+            
+            void DoApplyPublishingPolicyL( TBool& aLayoutChanged,
+                                           RPropertyHashMap& aPropertyHashMap );
+            
+            /**
+             * Updates current content priority into content priority map.
+             */
+            void UpdateContentPriorityL();
+            
+            /**
+             * Clears current content priorty in the content priority map.
+             */
+            void ClearContentPriorityL();
+            
+            MXnComponentInterface& ComponentInterfaceL() const;
+            
+        private:
+            
+            /**
+             * Array of policy elements
+             */
+            RAiPolicyElementArray iPolicyArray;
+            
+            /**
+             * Content priority map
+             */
+            AiUtility::CContentPriorityMap& iContentPriorityMap;
+            
+            /**
+             * CSS property map. Not own.
+             */
+            CCssPropertyMap* iPropertyMap;
+        
+            /**
+             * Target node. Not own.
+             */
+            CXnNodeAppIf* iTarget;
+            
+            /**
+             *  Content priority.
+             */
+            TInt iContentPriority;
+            
+            /**
+             * Link in a doubly linked list of a transaction.
+             */
+            TDblQueLink iElementLink;
+        
+            /**
+             * Link in a singly linked list of a factory.
+             */
+            TSglQueLink iFactoryLink;
+            
+        };
+    
+    TInt CTransactionElement::LinkOffset()
+        {
+        return _FOFF(CTransactionElement, iElementLink);
+        }
+        
+    TInt CTransactionElement::FactoryLinkOffset()
+        {
+        return _FOFF(CTransactionElement, iFactoryLink);
+        }
+        
+    }   // namespace AiXmlUiController
+
+#endif      // C_TRANSACTIONELEMENT_H  
+           
+//  End of File