From 1dc80b96d1e23274b9a2c8d1340fbb6ce33616fe Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Thu, 31 Aug 2023 13:39:59 +0200 Subject: [PATCH] Run clang-format --- src/ArtConfigWindow.cpp | 73 ++++++------ src/ArtConfigWindow.h | 17 +-- src/ArtDetailWindow.cpp | 257 ++++++++++++++++++++-------------------- src/ArtDetailWindow.h | 33 +++--- src/ArtModel.cpp | 211 +++++++++++++++++---------------- src/ArtModel.h | 33 +++--- src/MainWindow.cpp | 28 ++--- src/MainWindow.h | 5 +- src/imagelabel.cpp | 35 +++--- src/imagelabel.h | 19 +-- src/main.cpp | 23 ++-- 11 files changed, 378 insertions(+), 356 deletions(-) diff --git a/src/ArtConfigWindow.cpp b/src/ArtConfigWindow.cpp index da80a7a..87c8419 100644 --- a/src/ArtConfigWindow.cpp +++ b/src/ArtConfigWindow.cpp @@ -15,23 +15,25 @@ #include #include -ArtConfigWindow::ArtConfigWindow(const QString& filename, QWidget* parent) : QDialog(parent) { - setWindowModality(Qt::WindowModality::WindowModal); - setWindowTitle(filename); +ArtConfigWindow::ArtConfigWindow(const QString &filename, QWidget *parent) + : QDialog(parent) +{ + setWindowModality(Qt::WindowModality::WindowModal); + setWindowTitle(filename); - auto mainLayout = new QHBoxLayout(); - setLayout(mainLayout); + auto mainLayout = new QHBoxLayout(); + setLayout(mainLayout); - auto formLayout = new QFormLayout(); - auto formLayoutWidget = new QWidget(); - formLayoutWidget->setMaximumWidth(450); - formLayoutWidget->setLayout(formLayout); - mainLayout->addWidget(formLayoutWidget); + auto formLayout = new QFormLayout(); + auto formLayoutWidget = new QWidget(); + formLayoutWidget->setMaximumWidth(450); + formLayoutWidget->setLayout(formLayout); + mainLayout->addWidget(formLayoutWidget); - auto galleryScrollArea = new QScrollArea(); - formLayout->addWidget(galleryScrollArea); + auto galleryScrollArea = new QScrollArea(); + formLayout->addWidget(galleryScrollArea); - m_newBannerEdit = new QLineEdit(); + m_newBannerEdit = new QLineEdit(); formLayout->addRow(i18nc("@label:textbox", "New Banner"), m_newBannerEdit); m_commissionsOpen = new QCheckBox(); @@ -51,35 +53,36 @@ ArtConfigWindow::ArtConfigWindow(const QString& filename, QWidget* parent) : QDi }); bottomButtonLayout->addWidget(saveButton); - if(QFile::exists(filename)) { - loadData(filename); - } + if (QFile::exists(filename)) { + loadData(filename); + } } -void ArtConfigWindow::loadData(const QString& filename) { - qDebug() << "Loading data from" << filename; +void ArtConfigWindow::loadData(const QString &filename) +{ + qDebug() << "Loading data from" << filename; - QFile artFile(filename); - artFile.open(QFile::ReadOnly); - QJsonDocument artJson = QJsonDocument::fromJson(artFile.readAll()); + QFile artFile(filename); + artFile.open(QFile::ReadOnly); + QJsonDocument artJson = QJsonDocument::fromJson(artFile.readAll()); - m_newBannerEdit->setText(artJson[QStringLiteral("new-banner")].toString()); - m_commissionsOpen->setChecked(artJson[QStringLiteral("commissions")].toBool()); + m_newBannerEdit->setText(artJson[QStringLiteral("new-banner")].toString()); + m_commissionsOpen->setChecked(artJson[QStringLiteral("commissions")].toBool()); } -void ArtConfigWindow::saveData(const QString& filename) { - qDebug() << "Saving data to" << filename; +void ArtConfigWindow::saveData(const QString &filename) +{ + qDebug() << "Saving data to" << filename; - QJsonObject object; - object[QStringLiteral("new-banner")] = m_newBannerEdit->text(); - object[QStringLiteral("commissions")] = m_commissionsOpen->isChecked(); + QJsonObject object; + object[QStringLiteral("new-banner")] = m_newBannerEdit->text(); + object[QStringLiteral("commissions")] = m_commissionsOpen->isChecked(); - QJsonDocument jsonDoc(object); - QFile file(filename); - file.open(QFile::WriteOnly); - file.write(jsonDoc.toJson()); - file.close(); + QJsonDocument jsonDoc(object); + QFile file(filename); + file.open(QFile::WriteOnly); + file.write(jsonDoc.toJson()); + file.close(); - close(); + close(); } - diff --git a/src/ArtConfigWindow.h b/src/ArtConfigWindow.h index 1a5288e..5ad6218 100644 --- a/src/ArtConfigWindow.h +++ b/src/ArtConfigWindow.h @@ -6,22 +6,23 @@ #include #include +#include #include #include #include #include #include -#include -class ArtConfigWindow : public QDialog { - Q_OBJECT +class ArtConfigWindow : public QDialog +{ + Q_OBJECT public: - explicit ArtConfigWindow(const QString& filename, QWidget* parent = nullptr); + explicit ArtConfigWindow(const QString &filename, QWidget *parent = nullptr); private: - void loadData(const QString& filename); - void saveData(const QString& filename); + void loadData(const QString &filename); + void saveData(const QString &filename); - QLineEdit* m_newBannerEdit = nullptr; - QCheckBox* m_commissionsOpen = nullptr; + QLineEdit *m_newBannerEdit = nullptr; + QCheckBox *m_commissionsOpen = nullptr; }; \ No newline at end of file diff --git a/src/ArtDetailWindow.cpp b/src/ArtDetailWindow.cpp index 8f4a9fc..92b6fe1 100644 --- a/src/ArtDetailWindow.cpp +++ b/src/ArtDetailWindow.cpp @@ -22,23 +22,23 @@ ArtDetailWindow::ArtDetailWindow(const QString &filename, const QDir &assetDirec : QDialog(parent) { setMinimumWidth(800); - setMinimumHeight(600); - setWindowModality(Qt::WindowModality::WindowModal); - setWindowTitle(filename); + setMinimumHeight(600); + setWindowModality(Qt::WindowModality::WindowModal); + setWindowTitle(filename); - QFileInfo info(filename); - QString withoutExtension = info.completeBaseName(); + QFileInfo info(filename); + QString withoutExtension = info.completeBaseName(); - auto mainLayout = new QHBoxLayout(); - setLayout(mainLayout); + auto mainLayout = new QHBoxLayout(); + setLayout(mainLayout); - auto formLayout = new QFormLayout(); - auto formLayoutWidget = new QWidget(); - formLayoutWidget->setMaximumWidth(450); - formLayoutWidget->setLayout(formLayout); - mainLayout->addWidget(formLayoutWidget); + auto formLayout = new QFormLayout(); + auto formLayoutWidget = new QWidget(); + formLayoutWidget->setMaximumWidth(450); + formLayoutWidget->setLayout(formLayout); + mainLayout->addWidget(formLayoutWidget); - QImage image; + QImage image; image.load(assetDirectory.absoluteFilePath(QStringLiteral("%1.webp").arg(withoutExtension))); auto previewBox = new QGroupBox(i18nc("@title:group", "Preview")); @@ -47,20 +47,20 @@ ArtDetailWindow::ArtDetailWindow(const QString &filename, const QDir &assetDirec auto previewLayout = new QVBoxLayout(); previewBox->setLayout(previewLayout); - auto imageView = new ImageLabel(); - imageView->setPixmap(QPixmap::fromImage(image)); - previewLayout->addWidget(imageView); + auto imageView = new ImageLabel(); + imageView->setPixmap(QPixmap::fromImage(image)); + previewLayout->addWidget(imageView); - m_titleEdit = new QLineEdit(); + m_titleEdit = new QLineEdit(); formLayout->addRow(i18nc("@label:textbox", "Title"), m_titleEdit); m_knowExactDateBox = new QCheckBox(); connect(m_knowExactDateBox, &QCheckBox::toggled, this, [this](bool checked) { if (checked) { - m_dateEdit->setDisplayFormat(QStringLiteral("yyyy-MM-dd")); - } else { - m_dateEdit->setDisplayFormat(QStringLiteral("yyyy")); - } + m_dateEdit->setDisplayFormat(QStringLiteral("yyyy-MM-dd")); + } else { + m_dateEdit->setDisplayFormat(QStringLiteral("yyyy")); + } }); formLayout->addRow(i18nc("@option:check", "Know Exact Date?"), m_knowExactDateBox); @@ -68,15 +68,15 @@ ArtDetailWindow::ArtDetailWindow(const QString &filename, const QDir &assetDirec m_dateEdit->setCalendarPopup(true); formLayout->addRow(QStringLiteral("Date"), m_dateEdit); - m_altTextEdit = new QTextEdit(); - m_altTextEdit->setAcceptRichText(false); - formLayout->addRow(QStringLiteral("Alt Text"), m_altTextEdit); + m_altTextEdit = new QTextEdit(); + m_altTextEdit->setAcceptRichText(false); + formLayout->addRow(QStringLiteral("Alt Text"), m_altTextEdit); - m_descriptionEdit = new QTextEdit(); - m_descriptionEdit->setAcceptRichText(false); - formLayout->addRow(QStringLiteral("Description"), m_descriptionEdit); + m_descriptionEdit = new QTextEdit(); + m_descriptionEdit->setAcceptRichText(false); + formLayout->addRow(QStringLiteral("Description"), m_descriptionEdit); - m_nsfwBox = new QCheckBox(); + m_nsfwBox = new QCheckBox(); formLayout->addRow(i18nc("@option:check", "Is NSFW?"), m_nsfwBox); m_mastodonUrlEdit = new QLineEdit(); @@ -97,17 +97,17 @@ ArtDetailWindow::ArtDetailWindow(const QString &filename, const QDir &assetDirec auto characterList = new QListView(); m_characterListModel = new QStringListModel(); characterList->setModel(m_characterListModel); - charactersLayout->addWidget(characterList); + charactersLayout->addWidget(characterList); - auto characterButtonLayout = new QHBoxLayout(); - charactersLayout->addLayout(characterButtonLayout); + auto characterButtonLayout = new QHBoxLayout(); + charactersLayout->addLayout(characterButtonLayout); auto addCharacterButton = new QPushButton(QIcon::fromTheme(QStringLiteral("list-add")), i18nc("@action:button", "Add")); connect(addCharacterButton, &QPushButton::clicked, this, [this] { auto tmp = m_characterListModel->stringList(); ; tmp.push_back(QStringLiteral("New Character")); - m_characterListModel->setStringList(tmp); + m_characterListModel->setStringList(tmp); }); characterButtonLayout->addWidget(addCharacterButton); characterButtonLayout->addStretch(1); @@ -117,9 +117,9 @@ ArtDetailWindow::ArtDetailWindow(const QString &filename, const QDir &assetDirec if (characterList->selectionModel()->hasSelection()) { const QString toRemove = characterList->selectionModel()->selectedRows()[0].data().toString(); - auto tmp = m_characterListModel->stringList(); - tmp.removeOne(toRemove); - m_characterListModel->setStringList(tmp); + auto tmp = m_characterListModel->stringList(); + tmp.removeOne(toRemove); + m_characterListModel->setStringList(tmp); } }); characterButtonLayout->addWidget(removeCharacterButton); @@ -130,17 +130,17 @@ ArtDetailWindow::ArtDetailWindow(const QString &filename, const QDir &assetDirec auto tagsList = new QListView(); m_tagsListModel = new QStringListModel(); tagsList->setModel(m_tagsListModel); - tagLayout->addWidget(tagsList); + tagLayout->addWidget(tagsList); - auto tagButtonLayout = new QHBoxLayout(); - tagLayout->addLayout(tagButtonLayout); + auto tagButtonLayout = new QHBoxLayout(); + tagLayout->addLayout(tagButtonLayout); auto addTagButton = new QPushButton(QIcon::fromTheme(QStringLiteral("list-add")), i18nc("@action:button", "Add")); connect(addTagButton, &QPushButton::clicked, this, [this] { auto tmp = m_tagsListModel->stringList(); ; tmp.push_back(QStringLiteral("New Tag")); - m_tagsListModel->setStringList(tmp); + m_tagsListModel->setStringList(tmp); }); tagButtonLayout->addWidget(addTagButton); tagButtonLayout->addStretch(1); @@ -150,15 +150,15 @@ ArtDetailWindow::ArtDetailWindow(const QString &filename, const QDir &assetDirec if (tagsList->selectionModel()->hasSelection()) { const QString toRemove = tagsList->selectionModel()->selectedRows()[0].data().toString(); - auto tmp = m_tagsListModel->stringList(); - tmp.removeOne(toRemove); - m_tagsListModel->setStringList(tmp); + auto tmp = m_tagsListModel->stringList(); + tmp.removeOne(toRemove); + m_tagsListModel->setStringList(tmp); } }); tagButtonLayout->addWidget(removeTagButton); auto bottomButtonLayout = new QHBoxLayout(); - formLayout->addRow(bottomButtonLayout); + formLayout->addRow(bottomButtonLayout); auto cancelButton = new QPushButton(QIcon::fromTheme(QStringLiteral("dialog-close")), i18nc("@action:button", "Cancel")); connect(cancelButton, &QPushButton::clicked, this, &ArtDetailWindow::close); @@ -171,120 +171,121 @@ ArtDetailWindow::ArtDetailWindow(const QString &filename, const QDir &assetDirec }); bottomButtonLayout->addWidget(saveButton); - if(QFile::exists(filename)) { - loadData(filename); - } + if (QFile::exists(filename)) { + loadData(filename); + } } -void ArtDetailWindow::loadData(const QString& filename) { - qDebug() << "Loading data from" << filename; +void ArtDetailWindow::loadData(const QString &filename) +{ + qDebug() << "Loading data from" << filename; - QFile artFile(filename); - artFile.open(QFile::ReadOnly); - QJsonDocument artJson = QJsonDocument::fromJson(artFile.readAll()); + QFile artFile(filename); + artFile.open(QFile::ReadOnly); + QJsonDocument artJson = QJsonDocument::fromJson(artFile.readAll()); - if(artJson.object().contains(QStringLiteral("title"))) - m_titleEdit->setText(artJson[QStringLiteral("title")].toString()); + if (artJson.object().contains(QStringLiteral("title"))) + m_titleEdit->setText(artJson[QStringLiteral("title")].toString()); - if(artJson.object().contains(QStringLiteral("alt_text"))) - m_altTextEdit->setText(artJson[QStringLiteral("alt_text")].toString()); + if (artJson.object().contains(QStringLiteral("alt_text"))) + m_altTextEdit->setText(artJson[QStringLiteral("alt_text")].toString()); - if(artJson.object().contains(QStringLiteral("description"))) - m_descriptionEdit->setText(artJson[QStringLiteral("description")].toString()); + if (artJson.object().contains(QStringLiteral("description"))) + m_descriptionEdit->setText(artJson[QStringLiteral("description")].toString()); - m_knowExactDateBox->setChecked(artJson[QStringLiteral("date")].toString().contains(QStringLiteral("-"))); - if(m_knowExactDateBox->isChecked()) { - m_dateEdit->setDate(QDate::fromString(artJson[QStringLiteral("date")].toString(), QStringLiteral("yyyy-MM-dd"))); - m_dateEdit->setDisplayFormat(QStringLiteral("yyyy-MM-dd")); - } else { - m_dateEdit->setDate(QDate::fromString(artJson[QStringLiteral("date")].toString(), QStringLiteral("yyyy"))); - m_dateEdit->setDisplayFormat(QStringLiteral("yyyy")); - } + m_knowExactDateBox->setChecked(artJson[QStringLiteral("date")].toString().contains(QStringLiteral("-"))); + if (m_knowExactDateBox->isChecked()) { + m_dateEdit->setDate(QDate::fromString(artJson[QStringLiteral("date")].toString(), QStringLiteral("yyyy-MM-dd"))); + m_dateEdit->setDisplayFormat(QStringLiteral("yyyy-MM-dd")); + } else { + m_dateEdit->setDate(QDate::fromString(artJson[QStringLiteral("date")].toString(), QStringLiteral("yyyy"))); + m_dateEdit->setDisplayFormat(QStringLiteral("yyyy")); + } - if(artJson.object().contains(QStringLiteral("nsfw"))) - m_nsfwBox->setChecked(artJson[QStringLiteral("nsfw")].toBool()); + if (artJson.object().contains(QStringLiteral("nsfw"))) + m_nsfwBox->setChecked(artJson[QStringLiteral("nsfw")].toBool()); - if(artJson.object().contains(QStringLiteral("mastodon_url"))) - m_mastodonUrlEdit->setText(artJson[QStringLiteral("mastodon_url")].toString()); + if (artJson.object().contains(QStringLiteral("mastodon_url"))) + m_mastodonUrlEdit->setText(artJson[QStringLiteral("mastodon_url")].toString()); - if(artJson.object().contains(QStringLiteral("pixiv_url"))) - m_pixivUrlEdit->setText(artJson[QStringLiteral("pixiv_url")].toString()); + if (artJson.object().contains(QStringLiteral("pixiv_url"))) + m_pixivUrlEdit->setText(artJson[QStringLiteral("pixiv_url")].toString()); - if(artJson.object().contains(QStringLiteral("newgrounds_url"))) - m_newgroundsUrlEdit->setText(artJson[QStringLiteral("newgrounds_url")].toString()); + if (artJson.object().contains(QStringLiteral("newgrounds_url"))) + m_newgroundsUrlEdit->setText(artJson[QStringLiteral("newgrounds_url")].toString()); - if(artJson.object().contains(QStringLiteral("program"))) - m_programEdit->setText(artJson[QStringLiteral("program")].toString()); + if (artJson.object().contains(QStringLiteral("program"))) + m_programEdit->setText(artJson[QStringLiteral("program")].toString()); - if(artJson.object().contains(QStringLiteral("characters"))) { - QStringList list; - for(auto character : artJson[QStringLiteral("characters")].toArray()) { - list.append(character.toString()); - } + if (artJson.object().contains(QStringLiteral("characters"))) { + QStringList list; + for (auto character : artJson[QStringLiteral("characters")].toArray()) { + list.append(character.toString()); + } - m_characterListModel->setStringList(list); - } + m_characterListModel->setStringList(list); + } - if(artJson.object().contains(QStringLiteral("tags"))) { - QStringList list; - for(auto tag : artJson[QStringLiteral("tags")].toArray()) { - list.append(tag.toString()); - } + if (artJson.object().contains(QStringLiteral("tags"))) { + QStringList list; + for (auto tag : artJson[QStringLiteral("tags")].toArray()) { + list.append(tag.toString()); + } - m_tagsListModel->setStringList(list); - } + m_tagsListModel->setStringList(list); + } } -void ArtDetailWindow::saveData(const QString& filename) { - qDebug() << "Saving data to" << filename; +void ArtDetailWindow::saveData(const QString &filename) +{ + qDebug() << "Saving data to" << filename; - QJsonObject object; - if(!m_titleEdit->text().isEmpty()) - object[QStringLiteral("title")] = m_titleEdit->text(); + QJsonObject object; + if (!m_titleEdit->text().isEmpty()) + object[QStringLiteral("title")] = m_titleEdit->text(); - if(!m_altTextEdit->document()->isEmpty()) - object[QStringLiteral("alt_text")] = m_altTextEdit->document()->toPlainText(); + if (!m_altTextEdit->document()->isEmpty()) + object[QStringLiteral("alt_text")] = m_altTextEdit->document()->toPlainText(); - if(!m_descriptionEdit->document()->isEmpty()) - object[QStringLiteral("description")] = m_descriptionEdit->document()->toPlainText(); + if (!m_descriptionEdit->document()->isEmpty()) + object[QStringLiteral("description")] = m_descriptionEdit->document()->toPlainText(); - if(m_knowExactDateBox->isChecked()) { - object[QStringLiteral("date")] = m_dateEdit->date().toString(QStringLiteral("yyyy-MM-dd")); - } else { - object[QStringLiteral("date")] = m_dateEdit->date().toString(QStringLiteral("yyyy")); - } + if (m_knowExactDateBox->isChecked()) { + object[QStringLiteral("date")] = m_dateEdit->date().toString(QStringLiteral("yyyy-MM-dd")); + } else { + object[QStringLiteral("date")] = m_dateEdit->date().toString(QStringLiteral("yyyy")); + } - if(m_nsfwBox->isChecked()) - object[QStringLiteral("nsfw")] = m_nsfwBox->isChecked(); + if (m_nsfwBox->isChecked()) + object[QStringLiteral("nsfw")] = m_nsfwBox->isChecked(); - if(!m_mastodonUrlEdit->text().isEmpty()) - object[QStringLiteral("mastodon_url")] = m_mastodonUrlEdit->text(); + if (!m_mastodonUrlEdit->text().isEmpty()) + object[QStringLiteral("mastodon_url")] = m_mastodonUrlEdit->text(); - if(!m_pixivUrlEdit->text().isEmpty()) - object[QStringLiteral("pixiv_url")] = m_pixivUrlEdit->text(); + if (!m_pixivUrlEdit->text().isEmpty()) + object[QStringLiteral("pixiv_url")] = m_pixivUrlEdit->text(); - if(!m_newgroundsUrlEdit->text().isEmpty()) - object[QStringLiteral("newgrounds_url")] = m_newgroundsUrlEdit->text(); + if (!m_newgroundsUrlEdit->text().isEmpty()) + object[QStringLiteral("newgrounds_url")] = m_newgroundsUrlEdit->text(); - if(!m_programEdit->text().isEmpty()) - object[QStringLiteral("program")] = m_programEdit->text(); + if (!m_programEdit->text().isEmpty()) + object[QStringLiteral("program")] = m_programEdit->text(); - auto tags = m_tagsListModel->stringList(); - if(!tags.isEmpty()) { - object[QStringLiteral("tags")] = QJsonArray::fromStringList(tags); - } + auto tags = m_tagsListModel->stringList(); + if (!tags.isEmpty()) { + object[QStringLiteral("tags")] = QJsonArray::fromStringList(tags); + } - auto characters = m_characterListModel->stringList(); - if(!characters.isEmpty()) { - object[QStringLiteral("characters")] = QJsonArray::fromStringList(characters); - } + auto characters = m_characterListModel->stringList(); + if (!characters.isEmpty()) { + object[QStringLiteral("characters")] = QJsonArray::fromStringList(characters); + } - QJsonDocument jsonDoc(object); - QFile file(filename); - file.open(QFile::WriteOnly); - file.write(jsonDoc.toJson()); - file.close(); + QJsonDocument jsonDoc(object); + QFile file(filename); + file.open(QFile::WriteOnly); + file.write(jsonDoc.toJson()); + file.close(); - close(); + close(); } - diff --git a/src/ArtDetailWindow.h b/src/ArtDetailWindow.h index 002a1d4..711ea8c 100644 --- a/src/ArtDetailWindow.h +++ b/src/ArtDetailWindow.h @@ -14,27 +14,28 @@ #include #include -class ArtDetailWindow : public QDialog { - Q_OBJECT +class ArtDetailWindow : public QDialog +{ + Q_OBJECT public: ArtDetailWindow(const QString &filename, const QDir &assetDirectory, QWidget *parent = nullptr); private: - void loadData(const QString& filename); + void loadData(const QString &filename); - void saveData(const QString& filename); + void saveData(const QString &filename); - QLineEdit *m_titleEdit; - QTextEdit *m_altTextEdit; - QTextEdit *m_descriptionEdit; - QCheckBox *m_knowExactDateBox; - QDateEdit *m_dateEdit; - QLineEdit *m_newgroundsUrlEdit; - QLineEdit *m_pixivUrlEdit; - QLineEdit *m_mastodonUrlEdit; - QLineEdit *m_programEdit; - QCheckBox* m_nsfwBox; + QLineEdit *m_titleEdit; + QTextEdit *m_altTextEdit; + QTextEdit *m_descriptionEdit; + QCheckBox *m_knowExactDateBox; + QDateEdit *m_dateEdit; + QLineEdit *m_newgroundsUrlEdit; + QLineEdit *m_pixivUrlEdit; + QLineEdit *m_mastodonUrlEdit; + QLineEdit *m_programEdit; + QCheckBox *m_nsfwBox; - QStringListModel* m_characterListModel; - QStringListModel* m_tagsListModel; + QStringListModel *m_characterListModel; + QStringListModel *m_tagsListModel; }; \ No newline at end of file diff --git a/src/ArtModel.cpp b/src/ArtModel.cpp index a5b7a0c..3038506 100644 --- a/src/ArtModel.cpp +++ b/src/ArtModel.cpp @@ -18,137 +18,142 @@ ArtModel::ArtModel(const QDir &definitionDirectory, const QDir &assetDirectory) : QAbstractTableModel() { piecesFuture = new QFutureWatcher(this); - connect(piecesFuture, &QFutureWatcher::resultReadyAt, this, &ArtModel::pieceFinished); - connect(piecesFuture, &QFutureWatcher::finished, this, &ArtModel::finished); + connect(piecesFuture, &QFutureWatcher::resultReadyAt, this, &ArtModel::pieceFinished); + connect(piecesFuture, &QFutureWatcher::finished, this, &ArtModel::finished); - struct PieceInformation { - QString definition; - QString asset; - }; - QVector pieceList; - QDirIterator it(definitionDirectory); - while (it.hasNext()) { - QFileInfo info(it.next()); - if(!info.isFile()) { - continue; - } + struct PieceInformation { + QString definition; + QString asset; + }; + QVector pieceList; + QDirIterator it(definitionDirectory); + while (it.hasNext()) { + QFileInfo info(it.next()); + if (!info.isFile()) { + continue; + } pieceList.push_back(PieceInformation{definitionDirectory.absoluteFilePath(info.baseName()), assetDirectory.absoluteFilePath(info.baseName())}); beginInsertRows(QModelIndex(), m_artPieces.size(), m_artPieces.size() + 1); - m_artPieces.push_back(ArtPiece{}); + m_artPieces.push_back(ArtPiece{}); - endInsertRows(); - } + endInsertRows(); + } - std::function loadPiece = [this](const PieceInformation& info) -> ArtPiece { - ArtPiece p; - loadData(p, info.definition, info.asset); + std::function loadPiece = [this](const PieceInformation &info) -> ArtPiece { + ArtPiece p; + loadData(p, info.definition, info.asset); - p.image.load(p.filename); - p.thumbnail = QPixmap::fromImage(p.image).scaled(100, 100, Qt::AspectRatioMode::KeepAspectRatio).toImage(); + p.image.load(p.filename); + p.thumbnail = QPixmap::fromImage(p.image).scaled(100, 100, Qt::AspectRatioMode::KeepAspectRatio).toImage(); - return p; - }; + return p; + }; - piecesFuture->setFuture(QtConcurrent::mapped(pieceList, loadPiece)); + piecesFuture->setFuture(QtConcurrent::mapped(pieceList, loadPiece)); } -int ArtModel::rowCount(const QModelIndex &parent) const { +int ArtModel::rowCount(const QModelIndex &parent) const +{ Q_UNUSED(parent); return m_artPieces.size(); } -int ArtModel::columnCount(const QModelIndex &parent) const { +int ArtModel::columnCount(const QModelIndex &parent) const +{ Q_UNUSED(parent); return 4; } -QVariant ArtModel::data(const QModelIndex &index, int role) const { - if (!index.isValid()) - return {}; +QVariant ArtModel::data(const QModelIndex &index, int role) const +{ + if (!index.isValid()) + return {}; - if (role == Qt::DisplayRole) { - switch(index.column()) { - case 0: - return m_artPieces[index.row()].filename; - case 1: - return {}; - case 2: - return m_artPieces[index.row()].title; - case 3: - return m_artPieces[index.row()].hasAltText; - } - } else if (role == Qt::UserRole) { - return m_artPieces[index.row()].object; - } else if (role == Qt::DecorationRole) { - switch(index.column()) { - case 1: - return m_artPieces[index.row()].thumbnail; - case 3: - return m_artPieces[index.row()].hasAltText ? QIcon::fromTheme(QStringLiteral("emblem-checked")) : QIcon::fromTheme(QStringLiteral("emblem-error")); - } - } else if (role == Qt::UserRole + 1) { - return m_artPieces[index.row()].jsonFilename; - } - - return {}; -} - -QVariant ArtModel::headerData(int section, Qt::Orientation orientation, int role) const { - if (orientation == Qt::Orientation::Horizontal && role == Qt::DisplayRole) { - switch(section) { - case 0: - return i18nc("@title:column", "Filename"); - case 1: - return i18nc("@title:column", "Image"); - case 2: - return i18nc("@title:column", "Title"); - case 3: - return i18nc("@title:column", "Has Alt Text"); - default: - Q_UNREACHABLE(); + if (role == Qt::DisplayRole) { + switch (index.column()) { + case 0: + return m_artPieces[index.row()].filename; + case 1: + return {}; + case 2: + return m_artPieces[index.row()].title; + case 3: + return m_artPieces[index.row()].hasAltText; } - } + } else if (role == Qt::UserRole) { + return m_artPieces[index.row()].object; + } else if (role == Qt::DecorationRole) { + switch (index.column()) { + case 1: + return m_artPieces[index.row()].thumbnail; + case 3: + return m_artPieces[index.row()].hasAltText ? QIcon::fromTheme(QStringLiteral("emblem-checked")) : QIcon::fromTheme(QStringLiteral("emblem-error")); + } + } else if (role == Qt::UserRole + 1) { + return m_artPieces[index.row()].jsonFilename; + } - return QAbstractTableModel::headerData(section, orientation, role); + return {}; } +QVariant ArtModel::headerData(int section, Qt::Orientation orientation, int role) const +{ + if (orientation == Qt::Orientation::Horizontal && role == Qt::DisplayRole) { + switch (section) { + case 0: + return i18nc("@title:column", "Filename"); + case 1: + return i18nc("@title:column", "Image"); + case 2: + return i18nc("@title:column", "Title"); + case 3: + return i18nc("@title:column", "Has Alt Text"); + default: + Q_UNREACHABLE(); + } + } -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); - 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(int row) { - m_artPieces[row] = piecesFuture->resultAt(row); - - Q_EMIT dataChanged(index(row, 0), index(row + 1, 0)); + return QAbstractTableModel::headerData(section, orientation, role); } -void ArtModel::finished() { - std::sort(m_artPieces.begin(), m_artPieces.end(), [](ArtPiece& a, ArtPiece& b) - { - return a.date > b.date; - }); +void ArtModel::loadData(ArtPiece &piece, const QString &filename, const QString &assetFilename) +{ + piece.jsonFilename = filename + ".json"; + piece.filename = assetFilename; - Q_EMIT dataChanged(index(0, 0), index(m_artPieces.size(), 0)); + QFile artFile(piece.jsonFilename); + artFile.open(QFile::ReadOnly); + 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(int row) +{ + m_artPieces[row] = piecesFuture->resultAt(row); + + Q_EMIT dataChanged(index(row, 0), index(row + 1, 0)); +} + +void ArtModel::finished() +{ + std::sort(m_artPieces.begin(), m_artPieces.end(), [](ArtPiece &a, ArtPiece &b) { + return a.date > b.date; + }); + + Q_EMIT dataChanged(index(0, 0), index(m_artPieces.size(), 0)); } diff --git a/src/ArtModel.h b/src/ArtModel.h index 2887bfd..e444a50 100644 --- a/src/ArtModel.h +++ b/src/ArtModel.h @@ -11,34 +11,35 @@ #include struct ArtPiece { - QString filename, jsonFilename; - QString title; - QJsonObject object; + QString filename, jsonFilename; + QString title; + QJsonObject object; - QDate date; - QImage image, thumbnail; + QDate date; + QImage image, thumbnail; - bool hasAltText = false; + bool hasAltText = false; }; -class ArtModel : public QAbstractTableModel { - Q_OBJECT +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]] 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; + [[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 loadData(ArtPiece &piece, const QString &filename, const QString &assetFilename); - void pieceFinished(int index); - void finished(); + void pieceFinished(int index); + void finished(); - QFutureWatcher* piecesFuture; + QFutureWatcher *piecesFuture; - QList m_artPieces; + QList m_artPieces; }; diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index b8a31d8..43fe86b 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -32,23 +32,23 @@ MainWindow::MainWindow(const QDir &definitionDirectory, const QDir &assetDirecto auto model = new ArtModel(definitionDirectory, assetDirectory); auto pieceListView = new QTableView(); - pieceListView->setModel(model); - pieceListView->setSelectionBehavior(QAbstractItemView::SelectionBehavior::SelectRows); - pieceListView->setSelectionMode(QAbstractItemView::SingleSelection); + pieceListView->setModel(model); + pieceListView->setSelectionBehavior(QAbstractItemView::SelectionBehavior::SelectRows); + pieceListView->setSelectionMode(QAbstractItemView::SingleSelection); - QHeaderView *verticalHeader = pieceListView->verticalHeader(); - verticalHeader->setSectionResizeMode(QHeaderView::ResizeToContents); + QHeaderView *verticalHeader = pieceListView->verticalHeader(); + verticalHeader->setSectionResizeMode(QHeaderView::ResizeToContents); - QHeaderView *horizontalHeader = pieceListView->horizontalHeader(); - horizontalHeader->setSectionResizeMode(QHeaderView::ResizeToContents); + QHeaderView *horizontalHeader = pieceListView->horizontalHeader(); + horizontalHeader->setSectionResizeMode(QHeaderView::ResizeToContents); - connect(pieceListView, &QListView::clicked, this, [this, assetDirectory](QModelIndex index) { - const QString filename = index.data(Qt::UserRole + 1).toString(); - const QJsonObject object = index.data(Qt::UserRole).toJsonObject(); + connect(pieceListView, &QListView::clicked, this, [this, assetDirectory](QModelIndex index) { + const QString filename = index.data(Qt::UserRole + 1).toString(); + const QJsonObject object = index.data(Qt::UserRole).toJsonObject(); - auto window = new ArtDetailWindow(filename, assetDirectory, this); - window->show(); - }); + auto window = new ArtDetailWindow(filename, assetDirectory, this); + window->show(); + }); - setCentralWidget(pieceListView); + setCentralWidget(pieceListView); } \ No newline at end of file diff --git a/src/MainWindow.h b/src/MainWindow.h index abaf364..5be73dd 100644 --- a/src/MainWindow.h +++ b/src/MainWindow.h @@ -7,8 +7,9 @@ #include #include -class MainWindow : public QMainWindow { - Q_OBJECT +class MainWindow : public QMainWindow +{ + Q_OBJECT public: explicit MainWindow(const QDir &definitionDirectory, const QDir &assetDirectory, const QDir &dataDirectory); }; diff --git a/src/imagelabel.cpp b/src/imagelabel.cpp index 34198e6..f92dcb5 100644 --- a/src/imagelabel.cpp +++ b/src/imagelabel.cpp @@ -4,30 +4,37 @@ #include "imagelabel.h" -ImageLabel::ImageLabel(QWidget *parent) : QLabel(parent) { - this->setMinimumSize(1, 1); - setScaledContents(false); +ImageLabel::ImageLabel(QWidget *parent) + : QLabel(parent) +{ + this->setMinimumSize(1, 1); + setScaledContents(false); } -void ImageLabel::setPixmap(const QPixmap &p) { - pix = p; - QLabel::setPixmap(scaledPixmap()); +void ImageLabel::setPixmap(const QPixmap &p) +{ + pix = p; + QLabel::setPixmap(scaledPixmap()); } -int ImageLabel::heightForWidth(int width) const { - return pix.isNull() ? this->height() : ((qreal) pix.height() * width) / pix.width(); +int ImageLabel::heightForWidth(int width) const +{ + return pix.isNull() ? this->height() : ((qreal)pix.height() * width) / pix.width(); } -QSize ImageLabel::sizeHint() const { - const int w = this->width(); - return {w, heightForWidth(w)}; +QSize ImageLabel::sizeHint() const +{ + const int w = this->width(); + return {w, heightForWidth(w)}; } -QPixmap ImageLabel::scaledPixmap() const { - return pix.scaled(this->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation); +QPixmap ImageLabel::scaledPixmap() const +{ + return pix.scaled(this->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation); } -void ImageLabel::resizeEvent(QResizeEvent *e) { +void ImageLabel::resizeEvent(QResizeEvent *e) +{ Q_UNUSED(e); if (!pix.isNull()) { QLabel::setPixmap(scaledPixmap()); diff --git a/src/imagelabel.h b/src/imagelabel.h index a0991e8..f6c8da7 100644 --- a/src/imagelabel.h +++ b/src/imagelabel.h @@ -6,19 +6,20 @@ #include -class ImageLabel : public QLabel { - Q_OBJECT +class ImageLabel : public QLabel +{ + Q_OBJECT public: - explicit ImageLabel(QWidget *parent = nullptr); + explicit ImageLabel(QWidget *parent = nullptr); - [[nodiscard]] int heightForWidth(int width) const override; - [[nodiscard]] QSize sizeHint() const override; - [[nodiscard]] QPixmap scaledPixmap() const; + [[nodiscard]] int heightForWidth(int width) const override; + [[nodiscard]] QSize sizeHint() const override; + [[nodiscard]] QPixmap scaledPixmap() const; public Q_SLOTS: - void setPixmap(const QPixmap &); - void resizeEvent(QResizeEvent *) override; + void setPixmap(const QPixmap &); + void resizeEvent(QResizeEvent *) override; private: - QPixmap pix; + QPixmap pix; }; \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index 6eca467..c2ddd19 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -9,7 +9,8 @@ #include "MainWindow.h" -int main(int argc, char *argv[]) { +int main(int argc, char *argv[]) +{ QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); @@ -24,17 +25,17 @@ int main(int argc, char *argv[]) { const auto args = parser.positionalArguments(); if (args.empty()) { - return -1; - } + return -1; + } - const QDir sitePath = args[0]; - const QString defPath = sitePath.absoluteFilePath(QStringLiteral("art")); - const QDir assetPath = sitePath.absoluteFilePath(QStringLiteral("assets")); - const QString artAssetPath = assetPath.absoluteFilePath(QStringLiteral("art")); - const QString dataPath = sitePath.absoluteFilePath(QStringLiteral("data")); + const QDir sitePath = args[0]; + const QString defPath = sitePath.absoluteFilePath(QStringLiteral("art")); + const QDir assetPath = sitePath.absoluteFilePath(QStringLiteral("assets")); + const QString artAssetPath = assetPath.absoluteFilePath(QStringLiteral("art")); + const QString dataPath = sitePath.absoluteFilePath(QStringLiteral("data")); - MainWindow window(defPath, artAssetPath, dataPath); - window.show(); + MainWindow window(defPath, artAssetPath, dataPath); + window.show(); - return QApplication::exec(); + return QApplication::exec(); }