feature/test #9
@ -1,158 +1,156 @@
|
|||||||
#include "zonefileviewer.h"
|
#include "zonefileviewer.h"
|
||||||
#include "ui_zonefileviewer.h"
|
#include "ui_zonefileviewer.h"
|
||||||
|
|
||||||
#include "statusbarmanager.h"
|
#include "statusbarmanager.h"
|
||||||
|
|
||||||
ZoneFileViewer::ZoneFileViewer(QWidget *parent)
|
ZoneFileViewer::ZoneFileViewer(QWidget *parent)
|
||||||
: QWidget(parent)
|
: QWidget(parent)
|
||||||
, ui(new Ui::ZoneFileViewer) {
|
, ui(new Ui::ZoneFileViewer) {
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
|
||||||
mZoneFile = nullptr;
|
mZoneFile = nullptr;
|
||||||
|
|
||||||
ui->tableWidget_RecordCounts->setColumnCount(3);
|
ui->tableWidget_RecordCounts->setColumnCount(3);
|
||||||
ui->tableWidget_RecordCounts->setHorizontalHeaderLabels({ "Identifier", "Asset", "Count" });
|
ui->tableWidget_RecordCounts->setHorizontalHeaderLabels({ "Identifier", "Asset", "Count" });
|
||||||
ui->tableWidget_RecordCounts->horizontalHeader()->setStretchLastSection(true);
|
ui->tableWidget_RecordCounts->horizontalHeader()->setStretchLastSection(true);
|
||||||
|
|
||||||
ui->tableWidget_RecordOrder->setColumnCount(3);
|
ui->tableWidget_RecordOrder->setColumnCount(3);
|
||||||
ui->tableWidget_RecordOrder->setHorizontalHeaderLabels({ "Identifier", "Asset", "Count" });
|
ui->tableWidget_RecordOrder->setHorizontalHeaderLabels({ "Identifier", "Asset", "Count" });
|
||||||
ui->tableWidget_RecordOrder->horizontalHeader()->setStretchLastSection(true);
|
ui->tableWidget_RecordOrder->horizontalHeader()->setStretchLastSection(true);
|
||||||
|
|
||||||
connect(ui->lineEdit_TagSearch, &QLineEdit::textChanged, this, &ZoneFileViewer::SortTags);
|
connect(ui->lineEdit_TagSearch, &QLineEdit::textChanged, this, &ZoneFileViewer::SortTags);
|
||||||
connect(ui->tableWidget_RecordCounts, &QTableWidget::itemSelectionChanged, this, &ZoneFileViewer::HighlightRecordInOrder);
|
connect(ui->tableWidget_RecordCounts, &QTableWidget::itemSelectionChanged, this, &ZoneFileViewer::HighlightRecordInOrder);
|
||||||
connect(ui->listWidget_Tags, &QListWidget::currentTextChanged, this, [this](const QString &aCurrentText) {
|
connect(ui->listWidget_Tags, &QListWidget::currentTextChanged, this, [this](const QString &aCurrentText) {
|
||||||
StatusBarManager::instance().updateStatus(QString("Selected tag '%1' with index %2").arg(aCurrentText).arg(mZoneFile->GetTags().indexOf(aCurrentText)));
|
StatusBarManager::instance().updateStatus(QString("Selected tag '%1' with index %2").arg(aCurrentText).arg(mZoneFile->GetTags().indexOf(aCurrentText)));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
ZoneFileViewer::~ZoneFileViewer() {
|
ZoneFileViewer::~ZoneFileViewer() {
|
||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ZoneFileViewer::HighlightRecordInOrder() {
|
void ZoneFileViewer::HighlightRecordInOrder() {
|
||||||
ui->tableWidget_RecordOrder->clearSelection();
|
ui->tableWidget_RecordOrder->clearSelection();
|
||||||
|
|
||||||
foreach (auto selectedItem, ui->tableWidget_RecordCounts->selectedItems()) {
|
foreach (auto selectedItem, ui->tableWidget_RecordCounts->selectedItems()) {
|
||||||
int selectedRow = selectedItem->row();
|
int selectedRow = selectedItem->row();
|
||||||
const QString assetId = ui->tableWidget_RecordCounts->item(selectedRow, 0)->text();
|
const QString assetId = ui->tableWidget_RecordCounts->item(selectedRow, 0)->text();
|
||||||
|
|
||||||
for (int i = 0; i < ui->tableWidget_RecordOrder->rowCount(); i++) {
|
for (int i = 0; i < ui->tableWidget_RecordOrder->rowCount(); i++) {
|
||||||
const QString testAssetId = ui->tableWidget_RecordOrder->item(i, 0)->text();
|
const QString testAssetId = ui->tableWidget_RecordOrder->item(i, 0)->text();
|
||||||
if (testAssetId != assetId) { continue; }
|
if (testAssetId != assetId) { continue; }
|
||||||
|
|
||||||
ui->tableWidget_RecordOrder->selectRow(i);
|
ui->tableWidget_RecordOrder->selectRow(i);
|
||||||
ui->tableWidget_RecordOrder->item(i, 0)->setSelected(true);
|
ui->tableWidget_RecordOrder->item(i, 0)->setSelected(true);
|
||||||
ui->tableWidget_RecordOrder->item(i, 1)->setSelected(true);
|
ui->tableWidget_RecordOrder->item(i, 1)->setSelected(true);
|
||||||
ui->tableWidget_RecordOrder->item(i, 2)->setSelected(true);
|
ui->tableWidget_RecordOrder->item(i, 2)->setSelected(true);
|
||||||
ui->tableWidget_RecordOrder->item(i, 3)->setSelected(true);
|
ui->tableWidget_RecordOrder->item(i, 3)->setSelected(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ZoneFileViewer::SortTags(const QString &aSearchText) {
|
void ZoneFileViewer::SortTags(const QString &aSearchText) {
|
||||||
ui->listWidget_Tags->clear();
|
ui->listWidget_Tags->clear();
|
||||||
|
|
||||||
const QStringList tags = mZoneFile->GetTags();
|
const QStringList tags = mZoneFile->GetTags();
|
||||||
if (aSearchText.isEmpty()) {
|
if (aSearchText.isEmpty()) {
|
||||||
ui->listWidget_Tags->addItems(tags);
|
ui->listWidget_Tags->addItems(tags);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList sortedTags;
|
QStringList sortedTags;
|
||||||
foreach (const QString tag, tags) {
|
foreach (const QString tag, tags) {
|
||||||
if (tag.contains(aSearchText)) {
|
if (tag.contains(aSearchText)) {
|
||||||
sortedTags << tag;
|
sortedTags << tag;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
StatusBarManager::instance().updateStatus(QString("Found %1 tags.").arg(sortedTags.size()));
|
StatusBarManager::instance().updateStatus(QString("Found %1 tags.").arg(sortedTags.size()));
|
||||||
ui->listWidget_Tags->addItems(sortedTags);
|
ui->listWidget_Tags->addItems(sortedTags);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ZoneFileViewer::SetZoneFile(std::shared_ptr<ZoneFile> aZoneFile) {
|
void ZoneFileViewer::SetZoneFile(const ZoneFile* aZoneFile) {
|
||||||
mZoneFile = aZoneFile;
|
mZoneFile = aZoneFile;
|
||||||
|
|
||||||
ui->tableWidget_RecordCounts->clearContents();
|
ui->tableWidget_RecordCounts->clearContents();
|
||||||
ui->tableWidget_RecordOrder->clearContents();
|
ui->tableWidget_RecordOrder->clearContents();
|
||||||
ui->listWidget_Tags->clear();
|
ui->listWidget_Tags->clear();
|
||||||
|
|
||||||
const QStringList tags = mZoneFile->GetTags();
|
const QStringList tags = mZoneFile->GetTags();
|
||||||
ui->listWidget_Tags->addItems(tags);
|
ui->listWidget_Tags->addItems(tags);
|
||||||
ui->label_Title->setText(mZoneFile->GetBaseStem() + ".zone");
|
ui->label_Title->setText(mZoneFile->GetBaseStem() + ".zone");
|
||||||
|
|
||||||
ui->groupBox_Tags->setTitle(QString("Tags (%1)").arg(tags.size()));
|
ui->groupBox_Tags->setTitle(QString("Tags (%1)").arg(tags.size()));
|
||||||
|
|
||||||
if (tags.isEmpty()) {
|
if (tags.isEmpty()) {
|
||||||
ui->groupBox_Tags->hide();
|
ui->groupBox_Tags->hide();
|
||||||
} else {
|
} else {
|
||||||
ui->groupBox_Tags->show();
|
ui->groupBox_Tags->show();
|
||||||
}
|
}
|
||||||
|
|
||||||
QMap<QString, int> recordCounts = QMap<QString, int>();
|
QMap<XAssetType, int> recordCounts = QMap<XAssetType, int>();
|
||||||
QVector<QPair<QString, int>> assetOccurances = QVector<QPair<QString, int>>();
|
QVector<QPair<XAssetType, int>> assetOccurances = QVector<QPair<XAssetType, int>>();
|
||||||
for (const QString &record : mZoneFile->GetRecords()) {
|
for (XAssetType type : mZoneFile->GetTypes()) {
|
||||||
if (!recordCounts.contains(record)) {
|
if (!recordCounts.contains(type)) {
|
||||||
recordCounts[record] = 0;
|
recordCounts[type] = 0;
|
||||||
}
|
}
|
||||||
recordCounts[record]++;
|
recordCounts[type]++;
|
||||||
|
|
||||||
if (!assetOccurances.isEmpty() && assetOccurances.last().first == record) {
|
if (!assetOccurances.isEmpty() && assetOccurances.last().first == type) {
|
||||||
assetOccurances.last().second++;
|
assetOccurances.last().second++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
QPair<QString, int> assetOccurance(record, 1);
|
QPair<XAssetType, int> assetOccurance(type, 1);
|
||||||
assetOccurances << assetOccurance;
|
assetOccurances << assetOccurance;
|
||||||
}
|
}
|
||||||
ui->tableWidget_RecordOrder->setRowCount(assetOccurances.size());
|
ui->tableWidget_RecordOrder->setRowCount(assetOccurances.size());
|
||||||
|
|
||||||
int assetIndex = 0;
|
int assetIndex = 0;
|
||||||
foreach (auto assetOccurance, assetOccurances) {
|
foreach (auto assetOccurance, assetOccurances) {
|
||||||
const QString record = assetOccurance.first;
|
XAssetType assetType = assetOccurance.first;
|
||||||
Utils::AssetType assetType = mZoneFile->AssetStrToEnum(record);
|
int assetCount = assetOccurance.second;
|
||||||
int assetCount = assetOccurance.second;
|
|
||||||
|
QIcon assetIcon = Utils::CreateAssetIcon(assetType);
|
||||||
QIcon assetIcon = Utils::CreateAssetIcon(assetType);
|
if (assetIcon.isNull()) {
|
||||||
if (assetIcon.isNull()) {
|
qDebug() << "Icon is null for record: " << assetType;
|
||||||
qDebug() << "Icon is null for record: " << record;
|
}
|
||||||
}
|
|
||||||
|
QTableWidgetItem *recordItem = new QTableWidgetItem(QString::number(assetType, 16));
|
||||||
QTableWidgetItem *recordItem = new QTableWidgetItem(record.toUpper());
|
QTableWidgetItem *recordStrItem = new QTableWidgetItem(XAsset::XAssetTypeToString(assetType));
|
||||||
QTableWidgetItem *recordStrItem = new QTableWidgetItem(Utils::AssetTypeToStr(assetType));
|
QTableWidgetItem *recordCountItem = new QTableWidgetItem(QString::number(assetCount));
|
||||||
QTableWidgetItem *recordCountItem = new QTableWidgetItem(QString::number(assetCount));
|
recordItem->setIcon(assetIcon);
|
||||||
recordItem->setIcon(assetIcon);
|
|
||||||
|
ui->tableWidget_RecordOrder->setItem(assetIndex, 0, recordItem);
|
||||||
ui->tableWidget_RecordOrder->setItem(assetIndex, 0, recordItem);
|
ui->tableWidget_RecordOrder->setItem(assetIndex, 1, recordStrItem);
|
||||||
ui->tableWidget_RecordOrder->setItem(assetIndex, 1, recordStrItem);
|
ui->tableWidget_RecordOrder->setItem(assetIndex, 2, recordCountItem);
|
||||||
ui->tableWidget_RecordOrder->setItem(assetIndex, 2, recordCountItem);
|
|
||||||
|
assetIndex++;
|
||||||
assetIndex++;
|
}
|
||||||
}
|
|
||||||
|
int recordIndex = 0;
|
||||||
int recordIndex = 0;
|
for (XAssetType assetType : recordCounts.keys()) {
|
||||||
for (const QString &record : recordCounts.keys()) {
|
int recordCount = recordCounts[assetType];
|
||||||
int recordCount = recordCounts[record];
|
|
||||||
|
QIcon assetIcon = Utils::CreateAssetIcon(assetType);
|
||||||
Utils::AssetType assetType = mZoneFile->AssetStrToEnum(record);
|
if (assetIcon.isNull()) {
|
||||||
QIcon assetIcon = Utils::CreateAssetIcon(assetType);
|
qDebug() << "Icon is null for record: " << assetType;
|
||||||
if (assetIcon.isNull()) {
|
}
|
||||||
qDebug() << "Icon is null for record: " << record;
|
|
||||||
}
|
ui->tableWidget_RecordCounts->setRowCount(recordIndex + 1);
|
||||||
|
|
||||||
ui->tableWidget_RecordCounts->setRowCount(recordIndex + 1);
|
QTableWidgetItem *recordItem = new QTableWidgetItem(QString::number(assetType, 16));
|
||||||
|
QTableWidgetItem *recordCountStrItem = new QTableWidgetItem(XAsset::XAssetTypeToString(assetType));
|
||||||
QTableWidgetItem *recordItem = new QTableWidgetItem(record.toUpper());
|
QTableWidgetItem *recordCountItem = new QTableWidgetItem(QString::number(recordCount));
|
||||||
QTableWidgetItem *recordCountStrItem = new QTableWidgetItem(Utils::AssetTypeToStr(assetType));
|
recordItem->setIcon(assetIcon);
|
||||||
QTableWidgetItem *recordCountItem = new QTableWidgetItem(QString::number(recordCount));
|
|
||||||
recordItem->setIcon(assetIcon);
|
ui->tableWidget_RecordCounts->setItem(recordIndex, 0, recordItem);
|
||||||
|
ui->tableWidget_RecordCounts->setItem(recordIndex, 1, recordCountStrItem);
|
||||||
ui->tableWidget_RecordCounts->setItem(recordIndex, 0, recordItem);
|
ui->tableWidget_RecordCounts->setItem(recordIndex, 2, recordCountItem);
|
||||||
ui->tableWidget_RecordCounts->setItem(recordIndex, 1, recordCountStrItem);
|
|
||||||
ui->tableWidget_RecordCounts->setItem(recordIndex, 2, recordCountItem);
|
recordIndex++;
|
||||||
|
}
|
||||||
recordIndex++;
|
|
||||||
}
|
ui->tableWidget_RecordOrder->resizeColumnsToContents();
|
||||||
|
ui->tableWidget_RecordCounts->resizeColumnsToContents();
|
||||||
ui->tableWidget_RecordOrder->resizeColumnsToContents();
|
}
|
||||||
ui->tableWidget_RecordCounts->resizeColumnsToContents();
|
|
||||||
}
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user