#include "mainwindow.h" #include "ui_mainwindow.h" #include #include "rule.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); loadRoomData(); addRoomsUI(); QTimer *timer = new QTimer(this); connect(timer, &QTimer::timeout, this, &MainWindow::onTimerTick); timer->start(100); } void MainWindow::onTimerTick(){ for (int i=0; iupdateDisplay(roomList[i]); } } bool saveRoomsToFile(const QVector& rooms, const QString& path) { QJsonArray roomArray; for (const room& r : rooms) roomArray.append(r.toJSON()); QJsonDocument doc(roomArray); QFile file(path); if (!file.open(QIODevice::WriteOnly)) return false; file.write(doc.toJson()); file.close(); return true; } MainWindow::~MainWindow() { delete ui; } QVector loadRoomsFromFile(const QString& path) { QVector rooms; QFile file(path); if (!file.open(QIODevice::ReadOnly)) return rooms; // return empty QByteArray data = file.readAll(); QJsonDocument doc = QJsonDocument::fromJson(data); if (!doc.isArray()) return rooms; QJsonArray roomArray = doc.array(); for (const QJsonValue& val : roomArray) { rooms.append(room::fromJSON(val.toObject())); } return rooms; } void MainWindow::loadRoomData() { roomList=loadRoomsFromFile("test"); //saveRoomsToFile(roomList, "test"); // roomList[1].addRule(rule(600.0, 30.0, 20.0, 80.0, QTime(8, 0), QTime(18, 0))); } void MainWindow::addRoomsUI() { QLayoutItem *child; for (const room &r : roomList) { RoomWidget *w = new RoomWidget(r); ui->scrollAreaWidgetContents->layout()->addWidget(w); roomWidgets.append(w); } }