// SPDX-FileCopyrightText: 2023 Joshua Goins // // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include #include #include #include #include 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 *piecesFuture; QList m_artPieces; };