#ifndef TILESMODEL_H
#define TILESMODEL_H

#include <QtCore/QAbstractListModel>
#include <QtCore/QList>
#include <QtGui/QPixmap>
#include <QtCore/QPoint>
#include <QtCore/QStringList>
#include <QtCore/QVariant>
#include <QtGui/QStackedWidget>
#include <QtGui/QLabel>

class TileModel
{

public:
	TileModel();
	TileModel(int pixmapSide, QString tileLabel, int index);
	TileModel(const QPixmap &pixmap, QString tileLabel, int index);

	int getPixmapSide() const {	return pixmapSide;	};
	QPixmap getPixmap() const {	return pixmap;	};
	QString getTileLabel() const {	return tileLabel;	};
	int getIndex() const {	return index;	};

private:
	int pixmapSide;
	QPixmap pixmap;
	QString tileLabel;
	int index;
};



class tiles_model : public QAbstractListModel
{
    Q_OBJECT

public:
    tiles_model(QObject *parent = 0);

	Qt::ItemFlags flags(const QModelIndex &index) const;
    QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
    bool removeRows(int row, int count, const QModelIndex &parent);
    int rowCount(const QModelIndex &parent) const;
	
	void sort ( int column = 0, Qt::SortOrder order = Qt::AscendingOrder );

    void addTile(const TileModel &tile);

	void removeAllTiles();

private:
	QList<TileModel> tiles;
};

#endif