diff -r b3cee849fa46 -r fad26422216a creator/src/creator_scriptelementfactory.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/creator/src/creator_scriptelementfactory.cpp Wed Sep 01 12:30:35 2010 +0100 @@ -0,0 +1,112 @@ +/* +* Copyright (c) 2008 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: +* +*/ + + +#include "creator_traces.h" +#include "creator_scriptelementfactory.h" +#include "creator_contactelement.h" +#include "creator_calendarelement.h" +#include "creator_messageelement.h" +#include "creator_fileelement.h" +#include "creator_browserelement.h" +#include "creator_logelement.h" +#include "creator_noteelement.h" +#include "creator_impselement.h" +#include "creator_landmarkelement.h" +#include "creator_mailboxelement.h" +#include "creator_connectionmethodelement.h" + +CCreatorScriptElement* TCreatorScriptElementFactory::CreateElementL(CCreatorEngine* aEngine, const TDesC& aElementName, const TDesC& aContext ) + { + LOGSTRING2("TCreatorScriptElementFactory::CreateElementL: %S", &aElementName); + + if( aContext.Length() >= KFields().Length() && + aContext.Right(KFields().Length()) == KFields) + { + // This is a field element under 'fields'. + return CCreatorScriptElement::NewL(aEngine, aElementName, aContext); + } + else if( aElementName == creatorcontact::KContact ) + { + return CCreatorContactElement::NewL(aEngine, aElementName, aContext); + } + else if( aElementName == creatorcontact::KContactSet) + { + return CCreatorContactSetElement::NewL(aEngine, aElementName, aContext); + } + else if( aElementName == creatorcontact::KContactGroup ) + { + return CCreatorContactGroupElement::NewL(aEngine, aElementName, aContext); + } + else if( aElementName == KFields) + { + return CCreatorScriptElement::NewL(aEngine, aElementName, aContext); + } + else if( aElementName == KScript ) + { + return CCreatorScriptRoot::NewL(aEngine, aElementName, aContext); + } + else if( aElementName == creatorcalendar::KCalendar ) + { + return CCreatorCalendarElement::NewL(aEngine, aElementName, aContext); + } + else if( aElementName == creatormsg::KMessage ) + { + return CCreatorMessageElement::NewL(aEngine, aElementName, aContext); + } + else if( aElementName == creatorfile::KFile ) + { + return CCreatorFileElement::NewL(aEngine, aElementName, aContext); + } + else if( aElementName == creatorbrowser::KBookmark || + aElementName == creatorbrowser::KBookmarkFolder || + aElementName == creatorbrowser::KSavedPage || + aElementName == creatorbrowser::KSavedPageFolder ) + { + return CCreatorBrowserElement::NewL(aEngine, aElementName, aContext); + } + else if( aElementName == creatorlog::KLog ) + { + return CCreatorLogElement::NewL(aEngine, aElementName, aContext); + } + else if( aElementName == creatornote::KNote ) + { + return CCreatorNoteElement::NewL(aEngine, aElementName, aContext); + } + #ifdef __PRESENCE + else if( aElementName == creatorimps::KImpsServer ) + { + return CCreatorImpsServerElement::NewL(aEngine, aElementName, aContext); + } + #endif // __PRESENCE + else if( aElementName == creatorlandmark::KLandmark ) + { + return CCreatorLandmarkElement::NewL(aEngine, aElementName, aContext); + } + else if( aElementName == creatormailbox::Kmailbox ) + { + return CCreatorMailboxElement::NewL(aEngine, aElementName, aContext); + } + else if( aElementName == creatorconnectionmethod::KCm ) + { + return CCreatorConnectionMethodElement::NewL(aEngine, aElementName, aContext); + } + else + { + return CCreatorScriptElement::NewL(aEngine, aElementName, aContext); + } + }