view data/fileio/ModelReader.h @ 15:11e298cdb9e7

add - EasaierSessionManager - Easaier menus - Interval model
author lbajardsilogic
date Mon, 14 May 2007 13:10:49 +0000
parents
children e006f4a57f86
line wrap: on
line source
/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*-  vi:set ts=8 sts=4 sw=4: */

/*	Sound Access	
		EASAIER client application.	
		Silogic 2007. Laure Bajard. 
	
	This program is free software; you can redistribute it and/or    
	modify it under the terms of the GNU General Public License as    
	published by the Free Software Foundation; either version 2 of the    
	License, or (at your option) any later version.  See the file    
	COPYING included with this distribution for more information.
*/

#ifndef _MODEL_READER_H_
#define _MODEL_READER_H_

#include <QXmlDefaultHandler>

#include <map>

class Document;
class Layer;
class Model;
class Pane;

class ModelReader 
{
public:
	ModelReader(Document *document, Layer * layer = 0, Pane* pane = 0);
	virtual ~ModelReader(){}

	bool parse(const QString & filename);

private:
	Document	*m_document;
	Layer		*m_layer;
	Pane		*m_pane;

};

class ModelHandler : public QXmlDefaultHandler
{
public:
	ModelHandler(Document *document, Layer * layer = 0, Pane* pane = 0);

	bool startElement(const QString &namespaceURI, const QString &localName,
						  const QString &qName, const QXmlAttributes &attributes);
	bool endElement(const QString &namespaceURI, const QString &localName,
						const QString &qName);
	bool characters(const QString &str);
	bool error(const QXmlParseException &exception);
	bool fatalError(const QXmlParseException &exception);

	bool readModel(const QXmlAttributes &attributes);
	bool readDatasetStart(const QXmlAttributes &attributes);
	bool readRowData(const QString &text);
	bool addPointToDataset(const QXmlAttributes &attributes);
	bool addBinToDataset(const QXmlAttributes &attributes);
	bool addRowToDataset(const QXmlAttributes &attributes);
	bool addIntervalToDataset(const QXmlAttributes &attributes);

	bool readLayer(const QXmlAttributes &attributes);

private:
	Document	*m_document;
	Layer		*m_layer;
	Pane		*m_pane;

	Model		*m_model;
	
	bool		m_inData;
	bool		m_inRow;
	int			m_rowNumber;

	QString		m_datasetSeparator;

};

#endif