lbajardsilogic@15: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ lbajardsilogic@15: lbajardsilogic@15: /* Sound Access lbajardsilogic@15: EASAIER client application. lbajardsilogic@15: Silogic 2007. Laure Bajard. lbajardsilogic@15: lbajardsilogic@15: This program is free software; you can redistribute it and/or lbajardsilogic@15: modify it under the terms of the GNU General Public License as lbajardsilogic@15: published by the Free Software Foundation; either version 2 of the lbajardsilogic@15: License, or (at your option) any later version. See the file lbajardsilogic@15: COPYING included with this distribution for more information. lbajardsilogic@15: */ lbajardsilogic@15: lbajardsilogic@15: #ifndef _MODEL_READER_H_ lbajardsilogic@15: #define _MODEL_READER_H_ lbajardsilogic@15: lbajardsilogic@15: #include lbajardsilogic@15: lbajardsilogic@15: #include lbajardsilogic@15: lbajardsilogic@15: class Document; lbajardsilogic@15: class Layer; lbajardsilogic@15: class Model; lbajardsilogic@15: class Pane; lbajardsilogic@15: lbajardsilogic@15: class ModelReader lbajardsilogic@15: { lbajardsilogic@15: public: lbajardsilogic@15: ModelReader(Document *document, Layer * layer = 0, Pane* pane = 0); lbajardsilogic@15: virtual ~ModelReader(){} lbajardsilogic@15: lbajardsilogic@15: bool parse(const QString & filename); lbajardsilogic@15: lbajardsilogic@15: private: lbajardsilogic@15: Document *m_document; lbajardsilogic@15: Layer *m_layer; lbajardsilogic@15: Pane *m_pane; lbajardsilogic@15: lbajardsilogic@15: }; lbajardsilogic@15: lbajardsilogic@15: class ModelHandler : public QXmlDefaultHandler lbajardsilogic@15: { lbajardsilogic@15: public: lbajardsilogic@15: ModelHandler(Document *document, Layer * layer = 0, Pane* pane = 0); lbajardsilogic@15: lbajardsilogic@15: bool startElement(const QString &namespaceURI, const QString &localName, lbajardsilogic@15: const QString &qName, const QXmlAttributes &attributes); lbajardsilogic@15: bool endElement(const QString &namespaceURI, const QString &localName, lbajardsilogic@15: const QString &qName); lbajardsilogic@15: bool characters(const QString &str); lbajardsilogic@15: bool error(const QXmlParseException &exception); lbajardsilogic@15: bool fatalError(const QXmlParseException &exception); lbajardsilogic@15: lbajardsilogic@15: bool readModel(const QXmlAttributes &attributes); lbajardsilogic@15: bool readDatasetStart(const QXmlAttributes &attributes); lbajardsilogic@15: bool readRowData(const QString &text); lbajardsilogic@15: bool addPointToDataset(const QXmlAttributes &attributes); lbajardsilogic@15: bool addBinToDataset(const QXmlAttributes &attributes); lbajardsilogic@15: bool addRowToDataset(const QXmlAttributes &attributes); lbajardsilogic@15: bool addIntervalToDataset(const QXmlAttributes &attributes); lbajardsilogic@15: lbajardsilogic@15: bool readLayer(const QXmlAttributes &attributes); lbajardsilogic@15: lbajardsilogic@15: private: lbajardsilogic@15: Document *m_document; lbajardsilogic@15: Layer *m_layer; lbajardsilogic@15: Pane *m_pane; lbajardsilogic@15: lbajardsilogic@15: Model *m_model; lbajardsilogic@15: lbajardsilogic@15: bool m_inData; lbajardsilogic@15: bool m_inRow; lbajardsilogic@15: int m_rowNumber; lbajardsilogic@15: lbajardsilogic@15: QString m_datasetSeparator; lbajardsilogic@15: lbajardsilogic@15: }; lbajardsilogic@15: lbajardsilogic@15: #endif