From e2fee8a707e28aacab93e7524f5ca965d6012f27 Mon Sep 17 00:00:00 2001 From: Chris Xiong Date: Wed, 13 Mar 2024 01:21:32 -0400 Subject: Implement filtering. --- mapman/src/sliceview.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'mapman/src/sliceview.cpp') diff --git a/mapman/src/sliceview.cpp b/mapman/src/sliceview.cpp index c0dc3a7..db24a26 100644 --- a/mapman/src/sliceview.cpp +++ b/mapman/src/sliceview.cpp @@ -6,27 +6,39 @@ #include #include #include +#include #include +#include #include #include #include #include +#include #include -#include slice_view::slice_view() : l(nullptr) { lv = new QListView(this); m = new QStandardItemModel(this); - lv->setModel(m); + mf = new QSortFilterProxyModel(this); + mf->setSourceModel(m); + mf->setFilterCaseSensitivity(Qt::CaseSensitivity::CaseInsensitive); + tefilter = new QLineEdit(this); + tefilter->setPlaceholderText("Filter"); + lv->setModel(mf); lv->setSelectionMode(QAbstractItemView::SelectionMode::SingleSelection); lv->setDragDropMode(QAbstractItemView::DragDropMode::NoDragDrop); lv->viewport()->installEventFilter(this); p = new map_painter(); p->set_dimension(1, 1); + auto leftcontainer = new QWidget(); + auto leftlayout = new QVBoxLayout(); + leftcontainer->setLayout(leftlayout); + leftlayout->addWidget(lv); + leftlayout->addWidget(tefilter); auto layout = new QSplitter(Qt::Orientation::Horizontal, this); layout->setContentsMargins(6, 6, 6, 6); - layout->addWidget(lv); + layout->addWidget(leftcontainer); layout->addWidget(p->view()); layout->setStretchFactor(0, 1); layout->setStretchFactor(1, 3); @@ -42,6 +54,7 @@ slice_view::slice_view() : l(nullptr) [this](const QModelIndex &idx) { dragidx = idx; }); + connect(tefilter, &QLineEdit::textChanged, mf, &QSortFilterProxyModel::setFilterFixedString); this->setWindowTitle("Map listings"); this->setAttribute(Qt::WA_DeleteOnClose, false); } -- cgit v1.2.3