redai/src/ArtModel.h

44 lines
1.1 KiB
C++

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