summaryrefslogtreecommitdiff
path: root/noncore/unsupported/mail2/listviewplus.cpp
Unidiff
Diffstat (limited to 'noncore/unsupported/mail2/listviewplus.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/unsupported/mail2/listviewplus.cpp54
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
6ListViewPlus::ListViewPlus(QWidget *parent, const char *name, WFlags fl)
7 : QListView(parent, name, fl)
8{
9
10}
11
12void 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
26void 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
35void 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
45void ListViewPlus::_cancelPopup(QListViewItem *, const QPoint &, int)
46{
47 delete _timer;
48}
49
50void ListViewPlus::_showPopup()
51{
52 _popup->popup(_point);
53}
54