/****************************************************************************
** Artriculate: Art comes tumbling down
** Copyright (C) 2016 Chaos Reins
**
** 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 3 of the License, or
** (at your option) any later version.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with this program. If not, see .
****************************************************************************/
#ifndef PICTUREMODEL_H
#define PICTUREMODEL_H
#include
#include
class PictureModel : public QAbstractListModel
{
Q_OBJECT
Q_PROPERTY (int count READ rowCount NOTIFY countChanged)
public:
enum PictureRoles {
NameRole = Qt::UserRole + 1,
PathRole,
SizeRole,
RatioRole
};
Q_ENUM(PictureRoles)
PictureModel(QObject *parent = nullptr);
~PictureModel();
int rowCount(const QModelIndex & parent = QModelIndex()) const;
Q_INVOKABLE QVariant data(const int &row, int role = PathRole) const { return data(index(row, 0), role); }
QVariant data(const QModelIndex & index, int role = PathRole) const;
Q_INVOKABLE int requestIndex();
Q_INVOKABLE void retireIndex(int index);
signals:
void countChanged();
protected:
QHash roleNames() const;
private:
class PictureModelPrivate;
PictureModelPrivate *d;
};
#endif // PICTUREMODEL_H