From bb523394ea35851b1dedd805e013de2a1eb019a0 Mon Sep 17 00:00:00 2001 From: "craig.p.drummond" Date: Wed, 20 Jun 2012 22:58:16 +0000 Subject: [PATCH] Android: Faked up touch scroll - not fully working, behaves a bit odd... --- widgets/listview.cpp | 31 +++++++++++++++++++++++++++++++ widgets/listview.h | 6 ++++++ 2 files changed, 37 insertions(+) diff --git a/widgets/listview.cpp b/widgets/listview.cpp index 4f03833fb..a2125fdf1 100644 --- a/widgets/listview.cpp +++ b/widgets/listview.cpp @@ -38,6 +38,10 @@ ListView::ListView(QWidget *parent) setAlternatingRowColors(true); setUniformItemSizes(true); setAttribute(Qt::WA_MouseTracking); + #ifdef CANTATA_ANDROID + viewport()->setAttribute(Qt::WA_AcceptTouchEvents); + setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); + #endif } ListView::~ListView() @@ -123,3 +127,30 @@ void ListView::correctSelection() setCurrentIndex(currentIndex()); selectionModel()->select(s, QItemSelectionModel::SelectCurrent); } + +#ifdef CANTATA_ANDROID +#include +bool ListView::viewportEvent(QEvent *event) { + if (QEvent::TouchUpdate==event->type()) { + QTouchEvent *te=(QTouchEvent *)event; + + if (1==te->touchPoints().count()) { + QTouchEvent::TouchPoint point=te->touchPoints().at(0); + + if (point.pos().y()>-1 && point.pos().y()0.00001 || diff<-0.00001) { + QScrollBar *sb=verticalScrollBar(); + + if (sb) { + sb->setValue(sb->value()+diff); + } + } + } + } + return true; + } + return QListView::viewportEvent(event); +} +#endif diff --git a/widgets/listview.h b/widgets/listview.h index 4e911c4c6..edb1f3cd0 100644 --- a/widgets/listview.h +++ b/widgets/listview.h @@ -25,6 +25,7 @@ #define LISTVIEW_H #include +#include "config.h" class ListView : public QListView { @@ -48,6 +49,11 @@ private Q_SLOTS: Q_SIGNALS: bool itemsSelected(bool); + +private: + #ifdef CANTATA_ANDROID + bool viewportEvent(QEvent *event); + #endif }; #endif