lbajardsilogic@19: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ lbajardsilogic@19: lbajardsilogic@19: /* Sound Access lbajardsilogic@19: EASAIER client application. lbajardsilogic@19: Silogic 2007. Laure Bajard. lbajardsilogic@19: lbajardsilogic@19: This program is free software; you can redistribute it and/or lbajardsilogic@19: modify it under the terms of the GNU General Public License as lbajardsilogic@19: published by the Free Software Foundation; either version 2 of the lbajardsilogic@19: License, or (at your option) any later version. See the file lbajardsilogic@19: COPYING included with this distribution for more information. lbajardsilogic@19: */ lbajardsilogic@19: lbajardsilogic@19: #ifndef _ES_FILE_READER_H_ lbajardsilogic@19: #define _ES_FILE_READER_H_ lbajardsilogic@19: lbajardsilogic@19: #include "layer/LayerFactory.h" lbajardsilogic@19: #include "transform/Transform.h" lbajardsilogic@19: #include "data/model/AudioSourceInfoModel.h" lbajardsilogic@19: #include "data/fileio/HttpClient.h" lbajardsilogic@19: lbajardsilogic@19: #include lbajardsilogic@19: lbajardsilogic@19: #include lbajardsilogic@19: lbajardsilogic@19: class Pane; lbajardsilogic@19: class Model; lbajardsilogic@19: class Document; lbajardsilogic@19: class PlayParameters; lbajardsilogic@19: lbajardsilogic@19: class ESFileReaderPaneCallback lbajardsilogic@19: { lbajardsilogic@19: public: lbajardsilogic@19: virtual ~ESFileReaderPaneCallback(){} lbajardsilogic@19: virtual Pane *addPane() = 0; lbajardsilogic@19: virtual void setWindowSize(int width, int height) = 0; lbajardsilogic@19: virtual void addSelection(int start, int end) = 0; lbajardsilogic@19: }; lbajardsilogic@19: lbajardsilogic@19: class ESFileReader : public QXmlDefaultHandler lbajardsilogic@19: { lbajardsilogic@19: public: lbajardsilogic@19: ESFileReader(Document *document, lbajardsilogic@19: ESFileReaderPaneCallback &callback); lbajardsilogic@19: virtual ~ESFileReader(); lbajardsilogic@19: lbajardsilogic@19: void parse(const QString &xmlData); lbajardsilogic@19: void parse(QXmlInputSource &source); lbajardsilogic@19: lbajardsilogic@19: bool isOK(); lbajardsilogic@19: QString getErrorString() const { return m_errorString; } lbajardsilogic@19: lbajardsilogic@19: // For loading a single layer onto an existing pane lbajardsilogic@19: void setCurrentPane(Pane *pane) { m_currentPane = pane; } lbajardsilogic@19: lbajardsilogic@19: virtual bool startElement(const QString &namespaceURI, lbajardsilogic@19: const QString &localName, lbajardsilogic@19: const QString &qName, lbajardsilogic@19: const QXmlAttributes& atts); lbajardsilogic@19: lbajardsilogic@19: virtual bool characters(const QString &); lbajardsilogic@19: lbajardsilogic@19: virtual bool endElement(const QString &namespaceURI, lbajardsilogic@19: const QString &localName, lbajardsilogic@19: const QString &qName); lbajardsilogic@19: lbajardsilogic@19: bool error(const QXmlParseException &exception); lbajardsilogic@19: bool fatalError(const QXmlParseException &exception); lbajardsilogic@19: lbajardsilogic@19: protected: lbajardsilogic@19: bool readWindow(const QXmlAttributes &); lbajardsilogic@19: bool readView(const QXmlAttributes &); lbajardsilogic@19: bool readLayer(const QXmlAttributes &); lbajardsilogic@203: bool readFilter(const QXmlAttributes &); lbajardsilogic@19: lbajardsilogic@19: Document *m_document; lbajardsilogic@19: ESFileReaderPaneCallback &m_paneCallback; lbajardsilogic@19: Pane *m_currentPane; lbajardsilogic@19: std::map m_layers; lbajardsilogic@19: lbajardsilogic@19: bool m_inView; lbajardsilogic@19: bool m_inData; lbajardsilogic@19: lbajardsilogic@19: QString m_errorString; lbajardsilogic@19: bool m_ok; lbajardsilogic@19: lbajardsilogic@19: }; lbajardsilogic@19: lbajardsilogic@19: lbajardsilogic@19: lbajardsilogic@19: #endif