diff -r 000000000000 -r f72a12da539e idlehomescreen/xmluicontroller/inc/transactionelement.h --- /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 +#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