#include <QDir>
#include <QTimer>
+#ifdef Q_WS_MAEMO_5
+# include <QAbstractKineticScroller>
+#endif
+
#include "book.h"
#include "bookview.h"
#include "library.h"
BookView::BookView(QWidget *parent):
QWebView(parent), contentIndex(-1), mBook(0),
restorePositionAfterLoad(false), positionAfterLoad(0), loaded(false),
- contentsHeight(0), decorated(false)
+ contentsHeight(0), decorated(false), scrollerMonitor(-1)
{
Trace t("BookView::BookView");
settings()->setAttribute(QWebSettings::AutoLoadImages, true);
setBook(0);
extractIcons();
+
+#ifdef Q_WS_MAEMO_5
+ scroller = property("kineticScroller").value<QAbstractKineticScroller *>();
+ if (scroller) {
+ t.trace("Got scroller");
+ }
+#endif
}
BookView::~BookView()
void BookView::mousePressEvent(QMouseEvent *e)
{
QWebView::mousePressEvent(e);
-#ifndef Q_WS_MAEMO_5
+#ifdef Q_WS_MAEMO_5
+ if (scroller) {
+ scrollerMonitor = startTimer(250);
+ }
+#else
QWebFrame *frame = page()->mainFrame();
if (frame->scrollBarGeometry(Qt::Vertical).contains(e->pos())) {
e->accept();
e->ignore();
}
-void BookView::mouseReleaseEvent(QMouseEvent *e)
-{
- QWebView::mouseReleaseEvent(e);
- showProgress();
-}
-
void BookView::wheelEvent(QWheelEvent *e)
{
QWebView::wheelEvent(e);
emit progress(mBook->getProgress(contentIndex, pos));
}
}
+
+void BookView::timerEvent(QTimerEvent *e)
+{
+ if (e->timerId() == scrollerMonitor) {
+#ifdef Q_WS_MAEMO_5
+ if (scroller &&
+ ((scroller->state() == QAbstractKineticScroller::AutoScrolling) ||
+ (scroller->state() == QAbstractKineticScroller::Pushing))) {
+ showProgress();
+ } else {
+ killTimer(scrollerMonitor);
+ }
+ }
+#endif // Q_WS_MAEMO_5
+}
class QModelIndex;
class Progress;
+class QAbstractKineticScroller;
/** Visual representation of a book. */
class BookView: public QWebView
protected:
void paintEvent(QPaintEvent *e);
void mousePressEvent(QMouseEvent *e);
- void mouseReleaseEvent(QMouseEvent *e);
void wheelEvent(QWheelEvent *);
bool eventFilter(QObject *o, QEvent *e);
void leaveEvent(QEvent *e);
void enterEvent(QEvent *e);
+ void timerEvent(QTimerEvent *e);
private:
/** Save navigation icons from resource to the file system. */
bool mousePressed;
int contentsHeight; /**< Last know height of the frame. */
bool decorated; /**< True after adding the arrows to the frame contents. */
+
+ int scrollerMonitor;
+#ifdef Q_WS_MAEMO_5
+ QAbstractKineticScroller *scroller;
+#endif
};
#endif // BOOKVIEW_H