summaryrefslogtreecommitdiffstats
path: root/qt-ui/divelistview.cpp
diff options
context:
space:
mode:
authorGravatar Tomaz Canabrava <tcanabrava@kde.org>2013-05-30 01:04:42 -0300
committerGravatar Dirk Hohndel <dirk@hohndel.org>2013-05-30 20:29:55 +0900
commit77880b7a0797cef0fac0650ce0321e3aa8b702f4 (patch)
tree4d684edfb22b3d16f34021574011a8290c99e8ef /qt-ui/divelistview.cpp
parentc4f06dc536392e31a477e592d30fb946f1499595 (diff)
downloadsubsurface-77880b7a0797cef0fac0650ce0321e3aa8b702f4.tar.gz
Add a proof of concept for filtering the Dive List,
Press CTRL+F and a line edit will appear, whenever you write on that will be used as a filter against all columns. The results are maybe somewhat surprising in trip mode, but when sorting by another column this shows some potential. Hit ESC to remove the filtering. I need to find a better position to put the Widget, but it's a proof of concept. Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-ui/divelistview.cpp')
-rw-r--r--qt-ui/divelistview.cpp39
1 files changed, 37 insertions, 2 deletions
diff --git a/qt-ui/divelistview.cpp b/qt-ui/divelistview.cpp
index eb19be904..c384d4872 100644
--- a/qt-ui/divelistview.cpp
+++ b/qt-ui/divelistview.cpp
@@ -14,17 +14,52 @@
#include <QKeyEvent>
#include <QSortFilterProxyModel>
#include <QAction>
+#include <QLineEdit>
+#include <QKeyEvent>
-
-DiveListView::DiveListView(QWidget *parent) : QTreeView(parent), mouseClickSelection(false), currentHeaderClicked(-1)
+DiveListView::DiveListView(QWidget *parent) : QTreeView(parent), mouseClickSelection(false),
+ currentHeaderClicked(-1), searchBox(new QLineEdit(this))
{
setUniformRowHeights(true);
setItemDelegateForColumn(TreeItemDT::RATING, new StarWidgetsDelegate());
QSortFilterProxyModel *model = new QSortFilterProxyModel(this);
model->setSortRole(TreeItemDT::SORT_ROLE);
+ model->setFilterKeyColumn(-1); // filter all columns
setModel(model);
setSortingEnabled(false);
header()->setContextMenuPolicy(Qt::ActionsContextMenu);
+ QAction *showSearchBox = new QAction(tr("Show Search Box"), this);
+ showSearchBox->setShortcut( Qt::CTRL + Qt::Key_F);
+ showSearchBox->setShortcutContext(Qt::ApplicationShortcut);
+ addAction(showSearchBox);
+
+ searchBox->installEventFilter(this);
+ searchBox->hide();
+ connect(showSearchBox, SIGNAL(triggered(bool)), this, SLOT(showSearchEdit()));
+ connect(searchBox, SIGNAL(textChanged(QString)), model, SLOT(setFilterFixedString(QString)));
+}
+
+void DiveListView::showSearchEdit()
+{
+ searchBox->show();
+ searchBox->setFocus();
+}
+
+bool DiveListView::eventFilter(QObject* , QEvent* event)
+{
+ if(event->type() != QEvent::KeyPress){
+ return false;
+ }
+ QKeyEvent *keyEv = static_cast<QKeyEvent*>(event);
+ if (keyEv->key() != Qt::Key_Escape){
+ return false;
+ }
+
+ searchBox->clear();
+ searchBox->hide();
+ QSortFilterProxyModel *m = qobject_cast<QSortFilterProxyModel*>(model());
+ m->setFilterFixedString(QString());
+ return true;
}
void DiveListView::headerClicked(int i)