--- /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