From e30ea1b31b11ef849c87d63f8d5a70e1955480fe Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Mon, 11 Apr 2022 12:09:23 -0400 Subject: [PATCH] Add support for multiple excel sheet pages --- src/mainwindow.cpp | 59 ++++++++++++++++++++++++---------------------- 1 file changed, 31 insertions(+), 28 deletions(-) diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index b256f28..0c4438d 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -12,59 +12,62 @@ MainWindow::MainWindow(GameData& data) : data(data) { setWindowTitle("Novus"); - QWidget* dummyWidget = new QWidget(); + auto dummyWidget = new QWidget(); setCentralWidget(dummyWidget); - QHBoxLayout* layout = new QHBoxLayout(); + auto layout = new QHBoxLayout(); dummyWidget->setLayout(layout); - QListWidget* listWidget = new QListWidget(); + auto listWidget = new QListWidget(); for(auto name : data.getAllSheetNames()) { listWidget->addItem(name.c_str()); } - QTableWidget* tableWidget = new QTableWidget(); + auto* pageTabWidget = new QTabWidget(); + + connect(listWidget, &QListWidget::itemClicked, this, [&data, pageTabWidget](QListWidgetItem* item) { + pageTabWidget->clear(); - connect(listWidget, &QListWidget::itemClicked, this, [&data, tableWidget](QListWidgetItem* item) { auto name = item->text().toStdString(); auto nameLowercase = item->text().toLower().toStdString(); auto exh = *data.readExcelSheet(name); - for(auto column : exh.columnDefinitions) { + for (auto column: exh.columnDefinitions) { fmt::print("type = {}, offset = {}\n", column.type, column.offset); } - tableWidget->setColumnCount(exh.columnDefinitions.size()); - tableWidget->setRowCount(exh.header.rowCount); + for (auto page : exh.pages) { + QTableWidget* tableWidget = new QTableWidget(); - for(auto page : exh.pages) { - if(page.startId == 0) { - fmt::print("page, row count = {}, start id = {}\n", page.rowCount, page.startId); + tableWidget->setColumnCount(exh.columnDefinitions.size()); + tableWidget->setRowCount(exh.header.rowCount); + fmt::print("page, row count = {}, start id = {}\n", page.rowCount, page.startId); - std::string path; - if(exh.language[0] == Language::None) { - path = getEXDFilename(exh, nameLowercase, "", page); - } else { - path = getEXDFilename(exh, nameLowercase, getLanguageCode(Language::English), page); - } + std::string path; + if (exh.language[0] == Language::None) { + path = getEXDFilename(exh, nameLowercase, "", page); + } else { + path = getEXDFilename(exh, nameLowercase, getLanguageCode(Language::English), page); + } - data.extractFile("exd/" + path, path); - auto exd = readEXD(exh, path, page); - for (int i = 0; i < exd.rows.size(); i++) { - for (int j = 0; j < exd.rows[i].data.size(); j++) { - auto newItem = new QTableWidgetItem(exd.rows[i].data[j].data.c_str()); + data.extractFile("exd/" + path, path); + auto exd = readEXD(exh, path, page); + for (int i = 0; i < exd.rows.size(); i++) { + for (int j = 0; j < exd.rows[i].data.size(); j++) { + auto newItem = new QTableWidgetItem(exd.rows[i].data[j].data.c_str()); - tableWidget->setItem(i, j, newItem); + tableWidget->setItem(i, j, newItem); - QTableWidgetItem* headerItem = new QTableWidgetItem(); - headerItem->setText(exd.rows[i].data[j].type.c_str()); - tableWidget->setHorizontalHeaderItem(j, headerItem); - } + QTableWidgetItem* headerItem = new QTableWidgetItem(); + headerItem->setText(exd.rows[i].data[j].type.c_str()); + tableWidget->setHorizontalHeaderItem(j, headerItem); } } + + pageTabWidget->addTab(tableWidget, QString("Page %1").arg(page.startId)); } }); layout->addWidget(listWidget); - layout->addWidget(tableWidget); + layout->addWidget(pageTabWidget); } \ No newline at end of file