XPlor/app/zonefileviewer.cpp

128 lines
5.1 KiB
C++
Raw Normal View History

2025-02-08 19:58:54 -05:00
#include "zonefileviewer.h"
#include "ui_zonefileviewer.h"
ZoneFileViewer::ZoneFileViewer(QWidget *parent)
: QWidget(parent)
2025-04-04 20:36:32 -04:00
, ui(new Ui::ZoneFileViewer) {
2025-02-08 19:58:54 -05:00
ui->setupUi(this);
aZoneFile = nullptr;
2025-04-04 20:36:32 -04:00
ui->tableWidget_RecordCounts->setColumnCount(4);
ui->tableWidget_RecordCounts->setHorizontalHeaderLabels({ "Identifier", "Asset", "Count", "Icon" });
2025-02-08 19:58:54 -05:00
ui->tableWidget_RecordCounts->horizontalHeader()->setStretchLastSection(true);
2025-04-04 20:36:32 -04:00
ui->tableWidget_RecordOrder->setColumnCount(4);
ui->tableWidget_RecordOrder->setHorizontalHeaderLabels({ "Identifier", "Asset", "Count", "Icon" });
2025-02-08 19:58:54 -05:00
ui->tableWidget_RecordOrder->horizontalHeader()->setStretchLastSection(true);
}
2025-04-04 20:36:32 -04:00
ZoneFileViewer::~ZoneFileViewer() {
2025-02-08 19:58:54 -05:00
delete ui;
}
void ZoneFileViewer::SetZoneFile(std::shared_ptr<ZoneFile> aZoneFile) {
2025-04-04 20:36:32 -04:00
ui->tableWidget_RecordCounts->clearContents();
ui->tableWidget_RecordOrder->clearContents();
2025-02-08 19:58:54 -05:00
ui->listWidget_Tags->clear();
const QStringList tags = aZoneFile->GetTags();
ui->listWidget_Tags->addItems(tags);
2025-04-04 20:36:32 -04:00
ui->label_Title->setText(aZoneFile->GetStem() + ".zone");
2025-02-08 19:58:54 -05:00
if (tags.isEmpty()) {
ui->groupBox_Tags->hide();
} else {
ui->groupBox_Tags->show();
}
QString lastAsset = "";
2025-04-04 20:36:32 -04:00
QString lastRecord = "";
QIcon assetIcon;
2025-02-08 19:58:54 -05:00
int consecutiveCount = 1;
int consecutiveIndex = 0;
const QStringList records = aZoneFile->GetRecords();
QMap<QString, int> recordCounts = QMap<QString, int>();
for (const QString &record : records) {
2025-04-04 20:36:32 -04:00
lastRecord = record;
2025-02-08 19:58:54 -05:00
if (record == "ffffffff") { break; }
if (!recordCounts.contains(record)) {
recordCounts[record] = 0;
}
recordCounts[record]++;
2025-02-19 19:17:31 -05:00
QString assetType = aZoneFile->AssetTypeToString(record);
2025-04-04 20:36:32 -04:00
if (assetIcon.isNull()) {
qDebug() << "Icon is null for record: " << record;
}
2025-02-08 19:58:54 -05:00
if (lastAsset.isEmpty()) {
lastAsset = assetType;
2025-04-04 20:36:32 -04:00
lastRecord = record;
2025-02-08 19:58:54 -05:00
} else if (lastAsset == assetType) {
consecutiveCount++;
} else {
ui->tableWidget_RecordOrder->setRowCount(consecutiveIndex + 1);
2025-04-04 20:36:32 -04:00
QTableWidgetItem *recordItem = new QTableWidgetItem(lastRecord.toUpper());
2025-02-08 19:58:54 -05:00
QTableWidgetItem *recordStrItem = new QTableWidgetItem(lastAsset);
QTableWidgetItem *recordCountItem = new QTableWidgetItem(QString::number(consecutiveCount));
2025-04-04 20:36:32 -04:00
QTableWidgetItem *recordIconItem = new QTableWidgetItem();
assetIcon = aZoneFile->AssetStrToIcon(lastAsset);
recordIconItem->setIcon(assetIcon);
2025-02-08 19:58:54 -05:00
2025-04-04 20:36:32 -04:00
ui->tableWidget_RecordOrder->setItem(consecutiveIndex, 0, recordItem);
ui->tableWidget_RecordOrder->setItem(consecutiveIndex, 1, recordStrItem);
ui->tableWidget_RecordOrder->setItem(consecutiveIndex, 2, recordCountItem);
ui->tableWidget_RecordOrder->setItem(consecutiveIndex, 3, recordIconItem);
2025-02-08 19:58:54 -05:00
consecutiveCount = 1;
consecutiveIndex++;
lastAsset = assetType;
2025-04-04 20:36:32 -04:00
lastRecord = record;
2025-02-08 19:58:54 -05:00
}
}
ui->tableWidget_RecordOrder->setRowCount(consecutiveIndex + 1);
2025-04-04 20:36:32 -04:00
QTableWidgetItem *recordItem = new QTableWidgetItem(lastRecord.toUpper());
2025-02-08 19:58:54 -05:00
QTableWidgetItem *recordStrItem = new QTableWidgetItem(lastAsset);
QTableWidgetItem *recordCountItem = new QTableWidgetItem(QString::number(consecutiveCount));
2025-04-04 20:36:32 -04:00
QTableWidgetItem *recordIconItem = new QTableWidgetItem();
assetIcon = aZoneFile->AssetStrToIcon(lastAsset);
recordIconItem->setIcon(assetIcon);
2025-02-08 19:58:54 -05:00
2025-04-04 20:36:32 -04:00
ui->tableWidget_RecordOrder->setItem(consecutiveIndex, 0, recordItem);
ui->tableWidget_RecordOrder->setItem(consecutiveIndex, 1, recordStrItem);
ui->tableWidget_RecordOrder->setItem(consecutiveIndex, 2, recordCountItem);
ui->tableWidget_RecordOrder->setItem(consecutiveIndex, 3, recordIconItem);
2025-02-08 19:58:54 -05:00
int recordIndex = 0;
for (const QString &record : recordCounts.keys()) {
int recordCount = recordCounts[record];
2025-02-19 19:17:31 -05:00
QString assetType = aZoneFile->AssetTypeToString(record);
2025-04-04 20:36:32 -04:00
assetIcon = aZoneFile->AssetStrToIcon(assetType);
if (assetIcon.isNull()) {
qDebug() << "Icon is null for record: " << record;
}
2025-02-08 19:58:54 -05:00
ui->tableWidget_RecordCounts->setRowCount(recordIndex + 1);
QTableWidgetItem *recordCountStrItem = new QTableWidgetItem(assetType);
2025-04-04 20:36:32 -04:00
QTableWidgetItem *recordItem = new QTableWidgetItem(record.toUpper());
2025-02-08 19:58:54 -05:00
QTableWidgetItem *recordCountItem = new QTableWidgetItem(QString::number(recordCount));
2025-04-04 20:36:32 -04:00
QTableWidgetItem *recordIconItem = new QTableWidgetItem();
recordIconItem->setIcon(assetIcon);
2025-02-08 19:58:54 -05:00
2025-04-04 20:36:32 -04:00
ui->tableWidget_RecordCounts->setItem(recordIndex, 0, recordItem);
ui->tableWidget_RecordCounts->setItem(recordIndex, 1, recordCountStrItem);
ui->tableWidget_RecordCounts->setItem(recordIndex, 2, recordCountItem);
ui->tableWidget_RecordCounts->setItem(recordIndex, 3, recordIconItem);
2025-02-08 19:58:54 -05:00
recordIndex++;
}
2025-04-04 20:36:32 -04:00
ui->tableWidget_RecordOrder->resizeColumnsToContents();
ui->tableWidget_RecordCounts->resizeColumnsToContents();
2025-02-08 19:58:54 -05:00
}