QtPass 1.5.1
Multi-platform GUI for pass, the standard unix password manager.
Loading...
Searching...
No Matches
deselectabletreeview.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2016 Anne Jan Brouwer
2// SPDX-License-Identifier: GPL-3.0-or-later
3#ifndef SRC_DESELECTABLETREEVIEW_H_
4#define SRC_DESELECTABLETREEVIEW_H_
5
6#include <QCoreApplication>
7#include <QMouseEvent>
8#include <QTime>
9#include <QTreeView>
10
16class DeselectableTreeView : public QTreeView {
17 Q_OBJECT
18
19public:
24 DeselectableTreeView(QWidget *parent) : QTreeView(parent) {}
29
30signals:
35
36private:
37 bool doubleClickHappened = false;
38 bool clickSelected = false;
39
44 virtual void mousePressEvent(QMouseEvent *event) {
45 clickSelected = selectionModel()->isSelected(indexAt(event->pos()));
46 QTreeView::mousePressEvent(event);
47 }
48
53 void mouseReleaseEvent(QMouseEvent *event) {
54 doubleClickHappened = false;
55 // The timer is to distinguish between single and double click
56 QTime dieTime = QTime::currentTime().addMSecs(200);
57 while (QTime::currentTime() < dieTime)
58 QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
59 // could this be done nicer?
60 if (!doubleClickHappened && clickSelected) {
61 QModelIndex item = indexAt(event->pos());
62 bool selected = selectionModel()->isSelected(indexAt(event->pos()));
63 if ((item.row() == -1 && item.column() == -1) || selected) {
64 clearSelection();
65 const QModelIndex index;
66 selectionModel()->setCurrentIndex(index, QItemSelectionModel::Select);
67 emit emptyClicked();
68 } else {
69 QTreeView::mouseReleaseEvent(event);
70 }
71 } else {
72 QTreeView::mouseReleaseEvent(event);
73 }
74 clickSelected = false;
75 }
76
81 void mouseDoubleClickEvent(QMouseEvent *event) {
82 doubleClickHappened = true;
83 QTreeView::mouseDoubleClickEvent(event);
84 }
85};
86
87#endif // SRC_DESELECTABLETREEVIEW_H_
The DeselectableTreeView class loosly based on http://stackoverflow.com/questions/2761284/ thanks to ...
virtual ~DeselectableTreeView()
~DeselectableTreeView standard destructor
DeselectableTreeView(QWidget *parent)
DeselectableTreeView standard constructor.
void emptyClicked()
emptyClicked event