diff -r e42293e811d8 -r 6c1dfe4da5dd mpx/mpxviewframeworkqt/src/mpxplugindataparser.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mpx/mpxviewframeworkqt/src/mpxplugindataparser.cpp Tue Aug 31 15:41:40 2010 +0300 @@ -0,0 +1,214 @@ +/* +* Copyright (c) 2009 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 "mpxplugindataparser.h" +#include "mpxplugindata.h" +#include + + + +const int gParserHexBase( 16 ); +const int gParserDecBase( 10 ); + +static MpxPluginData::TMPXViewPluginPriorities parsePriority( const QStringRef& src ); + + +// ---------------------------------------------------------------------------- +// MpxPluginDataParser() +// ---------------------------------------------------------------------------- +// +MpxPluginDataParser::MpxPluginDataParser() +: +dataPtr( NULL ) +{ + // No implementation required +} + +// ---------------------------------------------------------------------------- +// ~MpxPluginDataParser() +// ---------------------------------------------------------------------------- +// +MpxPluginDataParser::~MpxPluginDataParser() +{ + if( NULL != dataPtr ){ + delete dataPtr; + } +} + +// ---------------------------------------------------------------------------- +// data() +// ---------------------------------------------------------------------------- +// +const MpxPluginData* MpxPluginDataParser::data() const +{ + return dataPtr; +} + +// ---------------------------------------------------------------------------- +// takeData() +// ---------------------------------------------------------------------------- +// +MpxPluginData* MpxPluginDataParser::takeData() +{ + MpxPluginData* retVal( dataPtr ); + if( NULL != dataPtr ){ + dataPtr = NULL; + } + return retVal; +} + +// ---------------------------------------------------------------------------- +// parse( const QString& data ) +// ---------------------------------------------------------------------------- +// +void MpxPluginDataParser::parse( const QString& data ) +{ + const QString PluginIdTag( "p" ); + const QString PluginTypeTag( "t" ); + const QString PluginPriorityTag( "i" ); + const QString PluginSupportedTag( "f" ); + + QStringRef tagName, + tagContent; + int parserOffset( 0 ); + if( NULL != dataPtr ){ + delete dataPtr; + dataPtr = NULL; + } + int integerNodeRepresentation( 0 ); + while( findNextNode( data, parserOffset, tagName, tagContent ) ){ + + if( NULL == dataPtr ){ + dataPtr = new MpxPluginData(); + } + if( PluginIdTag == tagName ){ + if( parseInt( integerNodeRepresentation, tagContent.toString() ) ) + dataPtr->setId( integerNodeRepresentation ); + }else if( PluginTypeTag == tagName ){ + if( parseInt( integerNodeRepresentation, tagContent.toString() ) ) { + dataPtr->setType( integerNodeRepresentation ); + } + }else if( PluginPriorityTag == tagName ){ + dataPtr->setPriority( parsePriority( tagContent ) ); + }else if( PluginSupportedTag == tagName ){ + parseSupportedId( tagContent.toString() ); + } + } +} + +// ---------------------------------------------------------------------------- +// findNextNode( const QString& src, int& offset, QStringRef& tagName, QStringRef& tagContent ) +// ---------------------------------------------------------------------------- +// +bool MpxPluginDataParser::findNextNode( const QString& src, int& offset, QStringRef& tagName, QStringRef& tagContent ) const +{ + const QChar endOfTag( '>' ); + const QString beginOfStopTag( "= value.length() ){ + break; + } + to = value.indexOf( coma, from ); + if( to < from ){ + to = value.length(); + } + if( parseInt( tagValue, value.mid( from, to - from ) ) ){ + dataPtr->addSupportedId( tagValue ); + } + from = ( to + 1 ); + }while( true ); +} + +// ---------------------------------------------------------------------------- +// parseSupportedId( const QString& value ) +// ---------------------------------------------------------------------------- +// +MpxPluginData::TMPXViewPluginPriorities parsePriority( const QStringRef& src ) +{ + + const QString MPXViewPluginPriorityLowestTag( "EMPXViewPluginPriorityLowest" ); + const QString MPXViewPluginPriorityLowTag( "EMPXViewPluginPriorityLow" ); + const QString MPXViewPluginPriorityNormalTag( "EMPXViewPluginPriorityNormal" ); + const QString MPXViewPluginPriorityHighTag( "EMPXViewPluginPriorityHigh" ); + const QString MPXViewPluginPriorityHighestTag( "EMPXViewPluginPriorityHighest" ); + + MpxPluginData::TMPXViewPluginPriorities + retVal( MpxPluginData::EMPXViewPluginPriorityLowest ); + if( MPXViewPluginPriorityLowTag == src ){ + retVal = MpxPluginData::EMPXViewPluginPriorityLow; + }else if( MPXViewPluginPriorityNormalTag == src ){ + retVal = MpxPluginData::EMPXViewPluginPriorityNormal; + }else if( MPXViewPluginPriorityHighTag == src ){ + retVal = MpxPluginData::EMPXViewPluginPriorityHigh; + }else if( MPXViewPluginPriorityHighestTag == src ){ + retVal = MpxPluginData::EMPXViewPluginPriorityHighest; + } + return retVal; +} + +