1
Fork 0
mirror of https://github.com/redstrate/Novus.git synced 2025-04-24 21:07:46 +00:00
novus/armoury/src/gearlistwidget.cpp

42 lines
1.3 KiB
C++
Raw Normal View History

#include "gearlistwidget.h"
2023-07-08 09:25:30 -04:00
#include <QLineEdit>
#include <QSortFilterProxyModel>
#include <QVBoxLayout>
#include <magic_enum.hpp>
#include "gearlistmodel.h"
GearListWidget::GearListWidget(GameData* data, QWidget* parent) : data(data) {
auto layout = new QVBoxLayout();
layout->setContentsMargins(0, 0, 0, 0);
setLayout(layout);
2023-07-08 09:25:30 -04:00
auto searchModel = new QSortFilterProxyModel();
searchModel->setRecursiveFilteringEnabled(true);
searchModel->setFilterCaseSensitivity(Qt::CaseSensitivity::CaseInsensitive);
auto searchEdit = new QLineEdit();
searchEdit->setPlaceholderText("Search...");
searchEdit->setClearButtonEnabled(true);
connect(searchEdit, &QLineEdit::textChanged, this, [=](const QString& text) {
searchModel->setFilterRegularExpression(text);
});
layout->addWidget(searchEdit);
auto originalModel = new GearListModel(data);
searchModel->setSourceModel(originalModel);
listWidget = new QTreeView();
2023-07-08 09:25:30 -04:00
listWidget->setModel(searchModel);
2023-07-08 09:25:30 -04:00
connect(listWidget, &QTreeView::clicked, [this, searchModel, originalModel](const QModelIndex& item) {
if (auto gear = originalModel->getGearFromIndex(searchModel->mapToSource(item))) {
Q_EMIT gearSelected(*gear);
}
});
layout->addWidget(listWidget);
}
#include "moc_gearlistwidget.cpp"