diff -r 000000000000 -r f72a12da539e idlehomescreen/xmluicontroller/src/transaction.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/xmluicontroller/src/transaction.cpp Thu Dec 17 08:40:49 2009 +0200 @@ -0,0 +1,111 @@ +/* +* 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 base class +* +*/ + + +#include "transaction.h" +#include "transactionelement.h" +#include "transactionfactory.h" +#include "xmluicontrollerpanic.h" + +// ============================ MEMBER FUNCTIONS =============================== + +using namespace AiXmlUiController; + +CTransaction::CTransaction() + : iTransactionElements(CTransactionElement::LinkOffset()) + { + } + +CTransaction* CTransaction::NewL() + { + CTransaction* self = new( ELeave ) CTransaction; + + return self; + } + +CTransaction::~CTransaction() + { + __ASSERT_DEBUG( iTransactionElements.IsEmpty(), Panic( ETransactionElementListNotEmpty ) ); + } + +TInt CTransaction::Id() const + { + return iTxId; + } + +void CTransaction::Initialize(TInt aTxId) + { + iTxId = aTxId; + } + +void CTransaction::Append(MTransactionElement& aElement ) + { + iTransactionElements.AddLast(dynamic_cast(aElement)); + } + +void CTransaction::CommitL( TBool& aLayoutChanged, RPropertyHashMap& aPropertyHashMap ) + { + aLayoutChanged = EFalse; + + if ( iTransactionElements.IsEmpty() ) + { + // Nothing to do + return; + } + + // Initialize iterator + TDblQueIter iter( iTransactionElements ); + iter.SetToFirst(); + + // Commit transaction elements + while ( iter ) + { + // Commit element and advance iterator + (iter++)->CommitL( aLayoutChanged, aPropertyHashMap ); + } + } + +void CTransaction::Reset(MTransactionFactory& aFactory) + { + Deque(); + iTxId = 0; + + TDblQueIter iter( iTransactionElements ); + iter.SetToFirst(); + + while ( iter ) + { + CTransactionElement* element = iter++; + aFactory.ReleaseTransactionElement( element ); + } + + __ASSERT_DEBUG( iTransactionElements.IsEmpty(), Panic( ETransactionElementListNotEmpty ) ); + } + +TDblQueIter CTransaction::ElementIter() + { + TDblQueIter iter( iTransactionElements ); + iter.SetToFirst(); + return iter; + } + +void CTransaction::Deque() + { + iLink.Deque(); + } + +// End of File