diff options
Diffstat (limited to 'mapman/src/sliceview.cpp')
-rw-r--r-- | mapman/src/sliceview.cpp | 19 |
1 files changed, 16 insertions, 3 deletions
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 <QListView> #include <QGraphicsView> #include <QStandardItemModel> +#include <QSortFilterProxyModel> #include <QSplitter> +#include <QVBoxLayout> #include <QDrag> #include <QMimeData> #include <QEvent> #include <QMouseEvent> +#include <QLineEdit> #include <QApplication> -#include <qnamespace.h> 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); } |