annotate data/fileio/AudioSourceInfoReader.cpp @ 15:11e298cdb9e7

add - EasaierSessionManager - Easaier menus - Interval model
author lbajardsilogic
date Mon, 14 May 2007 13:10:49 +0000
parents
children 87495ac7710a
rev   line source
lbajardsilogic@15 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
lbajardsilogic@15 2
lbajardsilogic@15 3 /* Sound Access
lbajardsilogic@15 4 EASAIER client application.
lbajardsilogic@15 5 Silogic 2007. Laure Bajard.
lbajardsilogic@15 6
lbajardsilogic@15 7 This program is free software; you can redistribute it and/or
lbajardsilogic@15 8 modify it under the terms of the GNU General Public License as
lbajardsilogic@15 9 published by the Free Software Foundation; either version 2 of the
lbajardsilogic@15 10 License, or (at your option) any later version. See the file
lbajardsilogic@15 11 COPYING included with this distribution for more information.
lbajardsilogic@15 12 */
lbajardsilogic@15 13
lbajardsilogic@15 14 #include "AudioSourceInfoReader.h"
lbajardsilogic@15 15
lbajardsilogic@15 16
lbajardsilogic@15 17 #include <iostream>
lbajardsilogic@15 18
lbajardsilogic@15 19 AudioSourceInfoReader::AudioSourceInfoReader(AudioSourceInfoModel* model)
lbajardsilogic@15 20 {
lbajardsilogic@15 21 m_model = model;
lbajardsilogic@15 22 }
lbajardsilogic@15 23
lbajardsilogic@15 24 bool AudioSourceInfoReader::parse(const QString & filename)
lbajardsilogic@15 25 {
lbajardsilogic@15 26 AudioSourceInfoHandler handler(m_model);
lbajardsilogic@15 27 QXmlSimpleReader reader;
lbajardsilogic@15 28 reader.setContentHandler(&handler);
lbajardsilogic@15 29 reader.setErrorHandler(&handler);
lbajardsilogic@15 30
lbajardsilogic@15 31 QFile file(filename);
lbajardsilogic@15 32
lbajardsilogic@15 33 if (!file.open(QFile::ReadOnly | QFile::Text)) {
lbajardsilogic@15 34 return false;
lbajardsilogic@15 35 }
lbajardsilogic@15 36
lbajardsilogic@15 37 QXmlInputSource xmlInputSource(&file);
lbajardsilogic@15 38 if (reader.parse(xmlInputSource))
lbajardsilogic@15 39 {
lbajardsilogic@15 40 return true;
lbajardsilogic@15 41 }
lbajardsilogic@15 42
lbajardsilogic@15 43 return false;
lbajardsilogic@15 44 }
lbajardsilogic@15 45
lbajardsilogic@15 46 AudioSourceInfoHandler::AudioSourceInfoHandler(AudioSourceInfoModel* model) : QXmlDefaultHandler()
lbajardsilogic@15 47 {
lbajardsilogic@15 48 m_model = model;
lbajardsilogic@15 49 }
lbajardsilogic@15 50
lbajardsilogic@15 51 bool AudioSourceInfoHandler::startElement(const QString &namespaceURI, const QString &localName,
lbajardsilogic@15 52 const QString &qName, const QXmlAttributes &attributes)
lbajardsilogic@15 53 {
lbajardsilogic@15 54 QString name = qName.toLower();
lbajardsilogic@15 55 bool ok = false;
lbajardsilogic@15 56
lbajardsilogic@15 57 // Valid element names:
lbajardsilogic@15 58 // easaierResource
lbajardsilogic@15 59 // dc:identifier
lbajardsilogic@15 60 // dc:title
lbajardsilogic@15 61 // dc:creator...
lbajardsilogic@15 62
lbajardsilogic@15 63 if (name == "easaierresource") {
lbajardsilogic@15 64 // nothing needed
lbajardsilogic@15 65 ok = true;
lbajardsilogic@15 66
lbajardsilogic@15 67 } else {
lbajardsilogic@15 68 ok = true;
lbajardsilogic@15 69 QString id = attributes.value("id");
lbajardsilogic@15 70 name.append(id);
lbajardsilogic@15 71 m_model->addInfo(name, attributes.value("value"));
lbajardsilogic@15 72
lbajardsilogic@15 73 }
lbajardsilogic@15 74
lbajardsilogic@15 75 if (!ok) {
lbajardsilogic@15 76 std::cerr << "WARNING: connexion config-XML: Failed to completely process element \""
lbajardsilogic@15 77 << name.toLocal8Bit().data() << "\"" << std::endl;
lbajardsilogic@15 78 }
lbajardsilogic@15 79
lbajardsilogic@15 80 return true;
lbajardsilogic@15 81 }
lbajardsilogic@15 82
lbajardsilogic@15 83 bool AudioSourceInfoHandler::endElement(const QString &namespaceURI, const QString &localName,
lbajardsilogic@15 84 const QString &qName)
lbajardsilogic@15 85 {
lbajardsilogic@15 86 return true;
lbajardsilogic@15 87 }
lbajardsilogic@15 88
lbajardsilogic@15 89 bool AudioSourceInfoHandler::characters(const QString &str)
lbajardsilogic@15 90 {
lbajardsilogic@15 91 return true;
lbajardsilogic@15 92 }
lbajardsilogic@15 93
lbajardsilogic@15 94 bool AudioSourceInfoHandler::error(const QXmlParseException &exception)
lbajardsilogic@15 95 {
lbajardsilogic@15 96 QString errorString;
lbajardsilogic@15 97 errorString += QString("ERROR: connexion config-XML: %1 at line %2, column %3")
lbajardsilogic@15 98 .arg(exception.message())
lbajardsilogic@15 99 .arg(exception.lineNumber())
lbajardsilogic@15 100 .arg(exception.columnNumber());
lbajardsilogic@15 101 std::cerr << errorString.toLocal8Bit().data() << std::endl;
lbajardsilogic@15 102 return QXmlDefaultHandler::error(exception);
lbajardsilogic@15 103 }
lbajardsilogic@15 104
lbajardsilogic@15 105 bool AudioSourceInfoHandler::fatalError(const QXmlParseException &exception)
lbajardsilogic@15 106 {
lbajardsilogic@15 107 QString errorString;
lbajardsilogic@15 108 errorString += QString("FATAL ERROR: connexion config-XML: %1 at line %2, column %3")
lbajardsilogic@15 109 .arg(exception.message())
lbajardsilogic@15 110 .arg(exception.lineNumber())
lbajardsilogic@15 111 .arg(exception.columnNumber());
lbajardsilogic@15 112 std::cerr << errorString.toLocal8Bit().data() << std::endl;
lbajardsilogic@15 113 return QXmlDefaultHandler::fatalError(exception);
lbajardsilogic@15 114 }