redai/src/ArtModel.h

44 lines
1.1 KiB
C
Raw Normal View History

2023-08-31 09:09:52 +02:00
// SPDX-FileCopyrightText: 2023 Joshua Goins <josh@redstrate.com>
//
// SPDX-License-Identifier: GPL-3.0-or-later
2023-03-27 12:49:53 -04:00
#pragma once
#include <QAbstractTableModel>
#include <QImage>
2023-03-27 12:49:53 -04:00
#include <QJsonObject>
#include <QFutureWatcher>
2023-03-27 12:49:53 -04:00
struct ArtPiece {
QString filename, jsonFilename;
QString title;
QJsonObject object;
QDate date;
QImage image, thumbnail;
2023-03-27 12:49:53 -04:00
bool hasAltText = false;
};
class ArtModel : public QAbstractTableModel {
Q_OBJECT
2023-03-27 12:49:53 -04:00
public:
explicit ArtModel(const QString& definitionDirectory, const QString& assetDirectory);
[[nodiscard]] int rowCount(const QModelIndex &parent) const override;
[[nodiscard]] int columnCount(const QModelIndex &parent) const override;
2023-03-27 12:49:53 -04:00
[[nodiscard]] QVariant data(const QModelIndex &index, int role) const override;
[[nodiscard]] QVariant headerData(int section, Qt::Orientation orientation, int role) const override;
2023-03-27 12:49:53 -04:00
private:
void loadData(ArtPiece& piece, const QString& filename, const QString& assetFilename);
void pieceFinished(int index);
void finished();
QFutureWatcher<ArtPiece>* piecesFuture;
2023-03-27 12:49:53 -04:00
QList<ArtPiece> m_artPieces;
};