Mercurial > hg > easaier-soundaccess
diff data/fileio/AudioSourceInfoReader.cpp @ 90:87495ac7710a
support audio source info from boca
author | lbajardsilogic |
---|---|
date | Thu, 28 Jun 2007 16:57:29 +0000 |
parents | 11e298cdb9e7 |
children | ec2ca3fbd957 |
line wrap: on
line diff
--- a/data/fileio/AudioSourceInfoReader.cpp Thu Jun 28 16:19:29 2007 +0000 +++ b/data/fileio/AudioSourceInfoReader.cpp Thu Jun 28 16:57:29 2007 +0000 @@ -43,15 +43,16 @@ return false; } -AudioSourceInfoHandler::AudioSourceInfoHandler(AudioSourceInfoModel* model) : QXmlDefaultHandler() -{ - m_model = model; -} +AudioSourceInfoHandler::AudioSourceInfoHandler(AudioSourceInfoModel* model) : QXmlDefaultHandler(), + m_model(model), + m_inBinding(false), + m_curBindingName("") +{} bool AudioSourceInfoHandler::startElement(const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &attributes) { - QString name = qName.toLower(); + /*QString name = qName.toLower(); bool ok = false; // Valid element names: @@ -77,18 +78,99 @@ << name.toLocal8Bit().data() << "\"" << std::endl; } + return true;*/ + QString name = qName.toLower(); + + bool ok = false; + + // Valid element names: + // + // sparql + // head + // variable + // results + // result + // binding + + if (name == "sparql") { + + // nothing needed + ok = true; + + } else if (name == "head") { + + // nothing needed + ok = true; + + } else if (name == "variable") { + + // nothing needed + ok = true; + + } else if (name == "results") { + + // nothing needed + ok = true; + + } else if (name == "result") { + + ok = true; + + } else if (name == "binding") { + + m_curBindingName = attributes.value("name"); + ok = true; + + } else if ( (name == "uri") || (name == "literal") ) { + m_inBinding = true; + ok = true; + } + + if (!ok) { + std::cerr << "WARNING: SparqlResultsHandler-XML: Failed to completely process element \"" + << name.toLocal8Bit().data() << "\"" << std::endl; + } + return true; } bool AudioSourceInfoHandler::endElement(const QString &namespaceURI, const QString &localName, const QString &qName) { + QString name = qName.toLower(); + + if ( (name == "uri") || (name == "literal") ) + { + m_inBinding = false; + m_curBindingName = ""; + + } else if (name == "result") + { + m_model->addInfo(m_property, m_value); + } + return true; } bool AudioSourceInfoHandler::characters(const QString &str) { - return true; + if (m_inBinding) + { + if (m_curBindingName == "value") + { + m_value = str; + } + else if (m_curBindingName == "property") + { + m_property = str; + } + else + { + m_model->addInfo(m_curBindingName, str); + } + } + + return true; } bool AudioSourceInfoHandler::error(const QXmlParseException &exception)