diff 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 diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/data/fileio/ModelReader.h	Mon May 14 13:10:49 2007 +0000
@@ -0,0 +1,79 @@
+/* -*- 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