From 4216387c14e6d1fcf981dc16540ab3fea0a58c85 Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Thu, 31 Aug 2023 14:08:43 +0200 Subject: [PATCH] Make the ArtModel::loadData function a constructor for ArtPiece --- src/artmodel.cpp | 55 ++++++++++++++++++++++++------------------------ src/artmodel.h | 11 ++++++---- 2 files changed, 34 insertions(+), 32 deletions(-) diff --git a/src/artmodel.cpp b/src/artmodel.cpp index a67b227..87dd6c2 100644 --- a/src/artmodel.cpp +++ b/src/artmodel.cpp @@ -38,14 +38,13 @@ ArtModel::ArtModel(const QDir &definitionDirectory, const QDir &assetDirectory, beginInsertRows(QModelIndex(), m_artPieces.size(), m_artPieces.size() + 1); - m_artPieces.push_back(ArtPiece{}); + m_artPieces.resize(m_artPieces.size()); endInsertRows(); } const std::function loadPiece = [this](const PieceInformation &info) -> ArtPiece { - ArtPiece p; - loadData(p, info.definition, info.asset); + ArtPiece p(info.definition, info.asset); p.image.load(p.filename); p.thumbnail = QPixmap::fromImage(p.image).scaled(100, 100, Qt::AspectRatioMode::KeepAspectRatio).toImage(); @@ -121,31 +120,6 @@ QVariant ArtModel::headerData(int section, Qt::Orientation orientation, int role return QAbstractTableModel::headerData(section, orientation, role); } -void ArtModel::loadData(ArtPiece &piece, const QString &filename, const QString &assetFilename) -{ - piece.jsonFilename = filename + ".json"; - piece.filename = assetFilename; - - QFile artFile(piece.jsonFilename); - artFile.open(QFile::ReadOnly); - - const QJsonDocument artJson = QJsonDocument::fromJson(artFile.readAll()); - - if (artJson[QStringLiteral("date")].toString().contains(QStringLiteral("-"))) { - piece.date = QDate::fromString(artJson[QStringLiteral("date")].toString(), QStringLiteral("yyyy-MM-dd")); - } else { - piece.date = QDate::fromString(artJson[QStringLiteral("date")].toString(), QStringLiteral("yyyy")); - } - - if (artJson.object().contains(QStringLiteral("title"))) { - piece.title = artJson.object()[QStringLiteral("title")].toString(); - } - - if (artJson.object().contains(QStringLiteral("alt_text"))) { - piece.hasAltText = true; - } -} - void ArtModel::pieceFinished(const int row) { m_artPieces[row] = piecesFuture->resultAt(row); @@ -161,3 +135,28 @@ void ArtModel::finished() Q_EMIT dataChanged(index(0, 0), index(m_artPieces.size(), 0)); } + +ArtPiece::ArtPiece(const QString &filename, const QString &assetFilename) +{ + jsonFilename = filename + ".json"; + this->filename = assetFilename; + + QFile artFile(jsonFilename); + artFile.open(QFile::ReadOnly); + + const QJsonDocument artJson = QJsonDocument::fromJson(artFile.readAll()); + + if (artJson[QStringLiteral("date")].toString().contains(QStringLiteral("-"))) { + date = QDate::fromString(artJson[QStringLiteral("date")].toString(), QStringLiteral("yyyy-MM-dd")); + } else { + date = QDate::fromString(artJson[QStringLiteral("date")].toString(), QStringLiteral("yyyy")); + } + + if (artJson.object().contains(QStringLiteral("title"))) { + title = artJson.object()[QStringLiteral("title")].toString(); + } + + if (artJson.object().contains(QStringLiteral("alt_text"))) { + hasAltText = true; + } +} diff --git a/src/artmodel.h b/src/artmodel.h index bcf9f1b..d75f819 100644 --- a/src/artmodel.h +++ b/src/artmodel.h @@ -10,7 +10,12 @@ #include #include -struct ArtPiece { +class ArtPiece +{ +public: + ArtPiece() = default; + ArtPiece(const QString &filename, const QString &assetFilename); + QString filename, jsonFilename; QString title; QJsonObject object; @@ -34,12 +39,10 @@ public: [[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; + QVector m_artPieces; };