diff -r 453dfc402455 -r 0aa8cc770c8a mtpdataproviders/mtppictbridgedp/pictbridgeengine/src/dpsxmlgenerator.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mtpdataproviders/mtppictbridgedp/pictbridgeengine/src/dpsxmlgenerator.cpp Tue Aug 31 16:03:15 2010 +0300 @@ -0,0 +1,333 @@ +/* +* Copyright (c) 2006, 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: This class creates the dps xml script. +* +*/ + + +#include +#include "dpsxmlgenerator.h" +#include "pictbridge.h" +#include "dpsconst.h" +#include "dpsxmlstring.h" +#include + +#ifdef _DEBUG +# define IF_DEBUG(t) {RDebug::t;} +#else +# define IF_DEBUG(t) +#endif + +const TInt KCodeSize = 4; + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +CDpsXmlGenerator* CDpsXmlGenerator::NewL(CDpsEngine* aEngine) + { + IF_DEBUG(Print(_L("CDpsXmlGenerator::NewL"))); + CDpsXmlGenerator* self= new (ELeave) CDpsXmlGenerator(aEngine); + return self; + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +CDpsXmlGenerator::~CDpsXmlGenerator() + { + IF_DEBUG(Print(_L("~CDpsXmlGenerator"))); + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +CDpsXmlGenerator::CDpsXmlGenerator(CDpsEngine* aEngine) : + iEngine(aEngine) + { + IF_DEBUG(Print(_L("CDpsXmlGenerator::Ctor"))); + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CDpsXmlGenerator::CreateResultScriptL(TDpsEvent aEvent, + RWriteStream& aScript, + const TDpsResult& aResult) const + { + IF_DEBUG(Print(_L(">>>CDpsXmlGenerator::CreateResultScript"))); + StartDocumentL(aScript); + StartResultL(aScript, aResult); + if (aEvent != EDpsEvtEmpty) + { + CreateEventL(aScript, aEvent); + } + EndResultL(aScript); + EndDocumentL(aScript); + IF_DEBUG(Print(_L("<<>>CDpsXmlGenerator::StatrDocument"))); + aScript.WriteL(KDpsXmlHeader); + aScript.WriteL(KDpsXmlNS); + aScript.WriteL(KDpsXmlSpace); + IF_DEBUG(Print(_L("<<>>CDpsXmlGenerator::EndDocument"))); + aScript.WriteL(KDpsXmlBraceOpen); + aScript.WriteL(KDpsXmlSlash); + aScript.WriteL(KDpsXml); + aScript.WriteL(KDpsXmlBraceClose); + IF_DEBUG(Print(_L("<<>>CDpsXmlGenerator::StartInput"))); + aScript.WriteL(KDpsXmlBraceOpen); + aScript.WriteL(KDpsXmlInput); + aScript.WriteL(KDpsXmlBraceClose); + aScript.WriteL(KDpsXmlSpace); + IF_DEBUG(Print(_L("<<>>CDpsXmlGenerator::EndInput"))); + aScript.WriteL(KDpsXmlBraceOpen); + aScript.WriteL(KDpsXmlSlash); + aScript.WriteL(KDpsXmlInput); + aScript.WriteL(KDpsXmlBraceClose); + aScript.WriteL(KDpsXmlSpace); + IF_DEBUG(Print(_L("<<>>CDpsXmlGenerator::StartResult"))); + aScript.WriteL(KDpsXmlBraceOpen); + aScript.WriteL(KDpsXmlOutput); + aScript.WriteL(KDpsXmlBraceClose); + aScript.WriteL(KDpsXmlSpace); + aScript.WriteL(KDpsXmlBraceOpen); + aScript.WriteL(KDpsXmlResult); + aScript.WriteL(KDpsXmlBraceClose); + TBuf8 major; + major.NumUC(aResult.iMajorCode, EHex); + aScript.WriteL(major); + major.Zero(); + major.NumFixedWidthUC(aResult.iMinorCode, EHex, KCodeSize); + aScript.WriteL(major); + aScript.WriteL(KDpsXmlBraceOpen); + aScript.WriteL(KDpsXmlSlash); + aScript.WriteL(KDpsXmlResult); + aScript.WriteL(KDpsXmlBraceClose); + aScript.WriteL(KDpsXmlSpace); + IF_DEBUG(Print(_L("<<>>CDpsXmlGenerator::EndResult"))); + aScript.WriteL(KDpsXmlBraceOpen); + aScript.WriteL(KDpsXmlSlash); + aScript.WriteL(KDpsXmlOutput); + aScript.WriteL(KDpsXmlBraceClose); + aScript.WriteL(KDpsXmlSpace); + IF_DEBUG(Print(_L("<<>>CDpsXmlGenerator::StartOperation %d"), aOperation)); + aScript.WriteL(KDpsXmlBraceOpen); + aScript.WriteL(iEngine->DpsParameters()-> + iDpsOperationStrings[aOperation - 1]); + if (aEnd) + { + aScript.WriteL(KDpsXmlSlash); + } + aScript.WriteL(KDpsXmlBraceClose); + aScript.WriteL(KDpsXmlSpace); + IF_DEBUG(Print(_L("<<>>CDpsXmlGenerator::EndOperation"))); + aScript.WriteL(KDpsXmlBraceOpen); + aScript.WriteL(KDpsXmlSlash); + // there is an empty op in the op enum so we must reduce one + aScript.WriteL(iEngine->DpsParameters()-> + iDpsOperationStrings[aOperation - 1]); + aScript.WriteL(KDpsXmlBraceClose); + aScript.WriteL(KDpsXmlSpace); + IF_DEBUG(Print(_L("<<>>CDpsXmlGenerator::CreatEvent"))); + aScript.WriteL(KDpsXmlBraceOpen); + aScript.WriteL(iEngine->DpsParameters()-> + iDpsEventStrings[aEvent - 1]); + aScript.WriteL(KDpsXmlSlash); + aScript.WriteL(KDpsXmlBraceClose); + aScript.WriteL(KDpsXmlSpace); + IF_DEBUG(Print(_L("<<>>CDpsXmlGenerator::CreatArg"))); + aScript.WriteL(KDpsXmlBraceOpen); //< + aScript.WriteL(iEngine->DpsParameters()-> + iDpsArgStrings[aArgument.iElement]); + if (aAttribute != 0) + { + aScript.WriteL(KDpsXmlSpace); // space + aScript.WriteL(KDpsXmlPaperSize); // paperSize + aScript.WriteL(KDpsXmlEqual); // = + aScript.WriteL(KDpsXmlQuote); // " + // patch the lower four bytes zero + aAttribute = aAttribute << KShiftLength; + TBuf8 string; + string.AppendNumUC(aAttribute, EHex); + aScript.WriteL(string); // 12345678 + aScript.WriteL(KDpsXmlQuote); // " + } + if (!aArgument.iContent.Compare(KNullDesC8)) + { + aScript.WriteL(KDpsXmlSlash); // / + aScript.WriteL(KDpsXmlBraceClose); // > + } + else + { + aScript.WriteL(KDpsXmlBraceClose); // > + aScript.WriteL(aArgument.iContent); // 123 345 567 + aScript.WriteL(KDpsXmlBraceOpen); // < + aScript.WriteL(KDpsXmlSlash); // / + aScript.WriteL(iEngine->DpsParameters()-> + iDpsArgStrings[aArgument.iElement]); + aScript.WriteL(KDpsXmlBraceClose); // > + } + aScript.WriteL(KDpsXmlSpace); + IF_DEBUG(Print(_L("<<>>CDpsXmlGenerator::StartElement"))); + aScript.WriteL(KDpsXmlBraceOpen); //< + aScript.WriteL(iEngine->DpsParameters()-> + iDpsElementStrings[aElement - 1]); + aScript.WriteL(KDpsXmlBraceClose); // > + aScript.WriteL(KDpsXmlSpace); + IF_DEBUG(Print(_L("<<>>CDpsXmlGenerator::EndElement"))); + aScript.WriteL(KDpsXmlBraceOpen); //< + aScript.WriteL(KDpsXmlSlash); + aScript.WriteL(iEngine->DpsParameters()-> + iDpsElementStrings[aElement - 1]); + aScript.WriteL(KDpsXmlBraceClose); // > + aScript.WriteL(KDpsXmlSpace); + IF_DEBUG(Print(_L("<<