diff -r 0efa10d348c0 -r a5a39a295112 xcfw/src/gecodefaultobjectfactory.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xcfw/src/gecodefaultobjectfactory.cpp Wed Sep 01 12:22:09 2010 +0100 @@ -0,0 +1,233 @@ +/* +* Copyright (c) 2002-2005 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: Implementation of GECODefaultObjectFactory +* +*/ + + + +// INCLUDE FILES +#include "gecodefaultobjectfactory.h" +#include "gecodefaultobject.h" + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CGECOObjectFactory::CGECOObjectFactory +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +EXPORT_C CGECODefaultObjectFactory::CGECODefaultObjectFactory() + { + } + + +// Destructor +EXPORT_C CGECODefaultObjectFactory::~CGECODefaultObjectFactory() + { + //Null context reference + iContext = NULL; + } + + +// ----------------------------------------------------------------------------- +// CGECOObjectFactory::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +EXPORT_C CGECODefaultObjectFactory* CGECODefaultObjectFactory::NewL() + { + CGECODefaultObjectFactory* self = new( ELeave ) CGECODefaultObjectFactory(); + + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + + return self; + } + + +// ----------------------------------------------------------------------------- +// CGECOObjectFactory::ConstructL +// ----------------------------------------------------------------------------- +// +void CGECODefaultObjectFactory::ConstructL() + { + } + + +// ----------------------------------------------------------------------------- +// CGECOObjectFactory::GetContentObjectAndSetContextL +// Function instantiates a new default content object, sets context and +// returns the object. +// ----------------------------------------------------------------------------- +// +EXPORT_C CGECOObjectBase* + CGECODefaultObjectFactory::GetContentObjectAndSetContextL( + const TDesC& aIdentifier ) + { + CGECODefaultObject* myObject = CGECODefaultObject::NewL( aIdentifier ); + iContext = myObject; + return myObject; + } + + + +// ----------------------------------------------------------------------------- +// CGECOObjectFactory::InitializeL +// Base class implementation reads attributes to default object arrays. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CGECODefaultObjectFactory::InitializeObjectL( + MGECOAttributeProvider& aAttributeProvider ) + { + if ( iContext ) + { + //Cast context to GECODefaultObject + CGECODefaultObject* temp = + reinterpret_cast( iContext ); + + TInt counter = aAttributeProvider.NumAttributes() - 1; + TPtrC name; + TPtrC value; + TBool islocalized = EFalse; + while ( counter >= 0 ) + { + aAttributeProvider.AttributeDetailsL( counter,name,value ); + temp->SetAttributeL( name, value, islocalized ); + counter--; + } + + if ( aAttributeProvider.HasTextData() ) + { + aAttributeProvider.TextDetailsL( value, islocalized ); + temp->SetTextL( value, islocalized ); + } + + temp = NULL; + } + + } + + +// ----------------------------------------------------------------------------- +// CGECOObjectFactory::SetContext +// Sets internal context pointer. Deriving class may return an error if +// it does not know the context by context's type identifier. +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CGECODefaultObjectFactory::SetContext( + CGECOObjectBase* aContext ) + { + iContext = aContext; + return KErrNone; + } + + +// ----------------------------------------------------------------------------- +// CGECOObjectFactory::HasTextData +// Returns ETrue if object has text data +// ----------------------------------------------------------------------------- +// +EXPORT_C TBool CGECODefaultObjectFactory::HasTextData() + { + TBool ret = EFalse; + if ( iContext ) + { + CGECODefaultObject* temp = + ((CGECODefaultObject*)iContext); + ret = temp->HasTextData( ); + } + return ret; + } + +// ----------------------------------------------------------------------------- +// CGECOObjectFactory::TextDetails +// Returns text data details for this object +// ----------------------------------------------------------------------------- +// +EXPORT_C void CGECODefaultObjectFactory::TextDetailsL( + TPtrC& aText, + TBool& aIsLocalized ) + { + if ( iContext ) + { + CGECODefaultObject* temp = + ((CGECODefaultObject*)iContext); + temp->TextDetailsL( aText, aIsLocalized ); + } + } + +// ----------------------------------------------------------------------------- +// CGECOObjectFactory::NumAttributes +// Returns number of attributes for the current context +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CGECODefaultObjectFactory::NumAttributes() + { + TInt count = 0; + + if ( iContext ) + { + count = ((CGECODefaultObject*)iContext)->NumAttributes(); + } + + return count; + } + +// ----------------------------------------------------------------------------- +// CGECODefaultObjectFactory::AttributeDetailsL +// Returns attribute details for the current context +// ----------------------------------------------------------------------------- +// +EXPORT_C void CGECODefaultObjectFactory::AttributeDetailsL( + const TInt aIndex, + TPtrC& aAttrName, + TPtrC& aAttrValue, + TBool& aIsLocalized ) + { + + if ( iContext ) + { + CGECODefaultObject* temp = ((CGECODefaultObject*)iContext); + temp->AttributeDetailsL( aIndex, aAttrName, aAttrValue, aIsLocalized ); + temp = NULL; + } + + + } + +// ----------------------------------------------------------------------------- +// CGECODefaultObjectFactory::AttributeDetailsL +// Returns attribute details for the current context +// ----------------------------------------------------------------------------- +// +EXPORT_C void CGECODefaultObjectFactory::AttributeDetailsL( + const TInt aIndex, + TPtrC& aAttrName, + TPtrC& aAttrValue) + { + + if ( iContext ) + { + CGECODefaultObject* temp = ((CGECODefaultObject*)iContext); + temp->AttributeDetailsL( aIndex, aAttrName, aAttrValue); + temp = NULL; + } + + + } + +// End of File