summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--qt-ui/divelistview.cpp39
-rw-r--r--qt-ui/divelistview.h3
2 files changed, 40 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)
diff --git a/qt-ui/divelistview.h b/qt-ui/divelistview.h
index 6f22597f6..2f3838c00 100644
--- a/qt-ui/divelistview.h
+++ b/qt-ui/divelistview.h
@@ -25,11 +25,13 @@ public:
void selectionChanged(const QItemSelection& selected, const QItemSelection& deselected);
void currentChanged(const QModelIndex& current, const QModelIndex& previous);
void reload(DiveTripModel::Layout layout = DiveTripModel::TREE, bool forceSort = true);
+ bool eventFilter(QObject* , QEvent* );
public slots:
void toggleColumnVisibilityByIndex();
void reloadHeaderActions();
void headerClicked(int);
+ void showSearchEdit();
Q_SIGNALS:
void currentDiveChanged(int divenr);
@@ -37,6 +39,7 @@ private:
bool mouseClickSelection;
int currentHeaderClicked;
DiveTripModel::Layout currentLayout;
+ QLineEdit *searchBox;
};
#endif // DIVELISTVIEW_H