#ifndef SUDOKU_H
#define SUDOKU_H

#include <QXmlDefaultHandler>
#include <QString>

struct XMLSudoka 
{
	QString  name;
	QString  data;
	unsigned size;
};



class SudokuXML : public QXmlDefaultHandler
{
  public:

	SudokuXML(XMLSudoka *_ptr)
	  : ptr(_ptr)
	{

	}

	bool startDocument()
	{
		active = false;
		return true;
	}
	
	bool endElement(const QString&, const QString&, const QString &name)
	{
		if (name == "sudoku")
			active = false;
		else if (active)
		{
			if (name == "name")
				ptr->name = currentText;
			else if (name == "size")
				ptr->size = currentText.toInt();
			else if (name == "indice")
				ptr->data = currentText;
		}

		return true;
	}

	bool startElement(const QString&, const QString&, const QString &name, const QXmlAttributes &attrs)
	{
		if (not active && name == "sudoku")
			active = true;
		
		currentText.clear();
		return true;
	}

	bool characters(const QString &str)
	{
	    currentText += str;
	    return true;
	}

  private:
	bool       active;
	QString    currentText;
	XMLSudoka *ptr;
};



#endif
