redai/ArtConfigWindow.cpp

87 lines
2.3 KiB
C++
Raw Normal View History

2023-06-15 15:19:34 -04:00
#include "ArtConfigWindow.h"
#include <QDateEdit>
#include <QFile>
#include <QFileInfo>
#include <QFormLayout>
#include <QGroupBox>
#include <QHBoxLayout>
#include <QJsonArray>
#include <QJsonDocument>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QScrollArea>
#include <QTextEdit>
ArtConfigWindow::ArtConfigWindow(const QString& filename, QWidget* parent) : QDialog(parent) {
setWindowModality(Qt::WindowModality::WindowModal);
setWindowTitle(filename);
auto mainLayout = new QHBoxLayout();
setLayout(mainLayout);
auto formLayout = new QFormLayout();
auto formLayoutWidget = new QWidget();
formLayoutWidget->setMaximumWidth(450);
formLayoutWidget->setLayout(formLayout);
mainLayout->addWidget(formLayoutWidget);
QScrollArea* galleryScrollArea = new QScrollArea();
formLayout->addWidget(galleryScrollArea);
m_newBannerEdit = new QLineEdit();
formLayout->addRow("New Banner", m_newBannerEdit);
m_commissionsOpen = new QCheckBox();
formLayout->addRow("Commissions Open", m_commissionsOpen);
auto bottomButtonLayout = new QHBoxLayout();
formLayout->addRow(bottomButtonLayout);
auto cancelButton = new QPushButton(QIcon::fromTheme("dialog-close"), "Cancel");
connect(cancelButton, &QPushButton::clicked, this, [=] {
close();
});
bottomButtonLayout->addWidget(cancelButton);
bottomButtonLayout->addStretch(1);
auto saveButton = new QPushButton(QIcon::fromTheme("dialog-ok"), "Save");
connect(saveButton, &QPushButton::clicked, this, [=] {
saveData(filename);
});
bottomButtonLayout->addWidget(saveButton);
if(QFile::exists(filename)) {
loadData(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());
m_newBannerEdit->setText(artJson["new-banner"].toString());
m_commissionsOpen->setChecked(artJson["commissions"].toBool());
}
void ArtConfigWindow::saveData(const QString& filename) {
qDebug() << "Saving data to" << filename;
QJsonObject object;
object["new-banner"] = m_newBannerEdit->text();
object["commissions"] = m_commissionsOpen->isChecked();
QJsonDocument jsonDoc(object);
QFile file(filename);
file.open(QFile::WriteOnly);
file.write(jsonDoc.toJson());
file.close();
close();
}