Diffstat (limited to 'noncore/unsupported/mail2/listviewplus.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/unsupported/mail2/listviewplus.cpp | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/noncore/unsupported/mail2/listviewplus.cpp b/noncore/unsupported/mail2/listviewplus.cpp new file mode 100644 index 0000000..ce5f35f --- a/dev/null +++ b/noncore/unsupported/mail2/listviewplus.cpp | |||
@@ -0,0 +1,54 @@ | |||
1 | #include <qpopupmenu.h> | ||
2 | #include <qtimer.h> | ||
3 | |||
4 | #include "listviewplus.h" | ||
5 | |||
6 | ListViewPlus::ListViewPlus(QWidget *parent, const char *name, WFlags fl) | ||
7 | : QListView(parent, name, fl) | ||
8 | { | ||
9 | |||
10 | } | ||
11 | |||
12 | void ListViewPlus::keyPressEvent(QKeyEvent *event) | ||
13 | { | ||
14 | switch(event->key()) { | ||
15 | case Qt::Key_Space: // FALLTHROUGH | ||
16 | case Qt::Key_Enter: | ||
17 | if (currentItem() != 0) | ||
18 | emit clicked(currentItem()); | ||
19 | break; | ||
20 | default: break; | ||
21 | } | ||
22 | |||
23 | QListView::keyPressEvent(event); | ||
24 | } | ||
25 | |||
26 | void ListViewPlus::setPopup(QPopupMenu *popup, int delay) | ||
27 | { | ||
28 | _popup = popup; | ||
29 | _delay = delay; | ||
30 | |||
31 | connect(this, SIGNAL(pressed(QListViewItem *, const QPoint &, int)), SLOT(_initPopup(QListViewItem *, const QPoint &, int))); | ||
32 | connect(this, SIGNAL(clicked(QListViewItem *, const QPoint &, int)), SLOT(_cancelPopup(QListViewItem *, const QPoint &, int))); | ||
33 | } | ||
34 | |||
35 | void ListViewPlus::_initPopup(QListViewItem *, const QPoint &point, int) | ||
36 | { | ||
37 | _point = point; | ||
38 | |||
39 | _timer = new QTimer(); | ||
40 | _timer->start(_delay, true); | ||
41 | |||
42 | connect(_timer, SIGNAL(timeout()), this, SLOT(_showPopup())); | ||
43 | } | ||
44 | |||
45 | void ListViewPlus::_cancelPopup(QListViewItem *, const QPoint &, int) | ||
46 | { | ||
47 | delete _timer; | ||
48 | } | ||
49 | |||
50 | void ListViewPlus::_showPopup() | ||
51 | { | ||
52 | _popup->popup(_point); | ||
53 | } | ||
54 | |||