X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=bookview.cpp;h=9f3daf52a4029ce0b6617a9b042ae92b4ccfa97f;hb=a477146d205b88aa0e3422028f3b9b81fc60c7ec;hp=aaa3326973bb862920968e0466a0550dee293b16;hpb=8f61c1b666e9c4ad58d4689094c074c9cd05e387;p=dorian diff --git a/bookview.cpp b/bookview.cpp index aaa3326..9f3daf5 100644 --- a/bookview.cpp +++ b/bookview.cpp @@ -29,7 +29,8 @@ BookView::BookView(QWidget *parent): QWebView(parent), contentIndex(-1), settings()->setAttribute(QWebSettings::PluginsEnabled, false); settings()->setAttribute(QWebSettings::PrivateBrowsingEnabled, true); settings()->setAttribute(QWebSettings::JavascriptCanOpenWindows, false); - settings()->setAttribute(QWebSettings::JavascriptCanAccessClipboard, false); + settings()->setAttribute(QWebSettings::JavascriptCanAccessClipboard, + false); settings()->setAttribute(QWebSettings::OfflineStorageDatabaseEnabled, false); settings()->setAttribute(QWebSettings::OfflineWebApplicationCacheEnabled, @@ -45,7 +46,8 @@ BookView::BookView(QWidget *parent): QWebView(parent), contentIndex(-1), frame->setScrollBarPolicy(Qt::Vertical, Qt::ScrollBarAlwaysOff); #endif frame->setScrollBarPolicy(Qt::Horizontal, Qt::ScrollBarAlwaysOff); - connect(this, SIGNAL(loadFinished(bool)), this, SLOT(onLoadFinished(bool))); + connect(this, SIGNAL(loadFinished(bool)), + this, SLOT(onLoadFinished(bool))); connect(frame, SIGNAL(javaScriptWindowObjectCleared()), this, SLOT(addJavaScriptObjects())); @@ -155,7 +157,7 @@ void BookView::goNext() } } -void BookView::setLastBookmark() +void BookView::setLastBookmark(bool fast) { TRACE; if (mBook) { @@ -164,7 +166,7 @@ void BookView::setLastBookmark() int pos = frame->scrollPosition().y(); qDebug() << QString("At %1 (%2%, height %3)"). arg(pos).arg((qreal)pos / (qreal)height * 100).arg(height); - mBook->setLastBookmark(contentIndex, (qreal)pos / (qreal)height); + mBook->setLastBookmark(contentIndex, (qreal)pos / (qreal)height, fast); } } @@ -312,6 +314,19 @@ void BookView::paintEvent(QPaintEvent *e) int bookmarkPos = (int)((qreal)height * (qreal)b.pos); painter.drawPixmap(2, bookmarkPos - scrollPos.y(), bookmarkPixmap); } + if (mBook) { + QPen pen(Qt::gray); + pen.setStyle(Qt::DotLine); + pen.setWidth(3); + painter.setPen(pen); + if (contentIndex > 0) { + painter.drawLine(0, -scrollPos.y(), width(), -scrollPos.y()); + } + if (contentIndex < (mBook->parts.size() - 1)) { + int h = contentsHeight - scrollPos.y() - 1; + painter.drawLine(0, h, width(), h); + } + } } void BookView::mousePressEvent(QMouseEvent *e) @@ -326,14 +341,16 @@ void BookView::mousePressEvent(QMouseEvent *e) if (scroller) { scrollerMonitor = startTimer(500); } +#elif defined(Q_OS_SYMBIAN) + // Do nothing #else - // Handle mouse presses on the scroll bar + // Handle mouse press on the scroll bar QWebFrame *frame = page()->mainFrame(); if (frame->scrollBarGeometry(Qt::Vertical).contains(e->pos())) { e->accept(); return; } -#endif // Q_WS_MAEMO_5 +#endif e->ignore(); } @@ -380,7 +397,6 @@ bool BookView::eventFilter(QObject *o, QEvent *e) // Work around Qt bug that sometimes selects web view contents during swipe switch (e->type()) { case QEvent::MouseButtonPress: - emit suppressedMouseButtonPress(); mousePressed = true; break; case QEvent::MouseButtonRelease: @@ -406,18 +422,6 @@ void BookView::addJavaScriptObjects() page()->mainFrame()->addToJavaScriptWindowObject("bv", this); } -#ifdef Q_WS_MAEMO_5 - -void BookView::leaveEvent(QEvent *e) -{ - TRACE; - // Save current position, to be restored later, in MainWindow::resizeEvent() - setLastBookmark(); - QWebView::leaveEvent(e); -} - -#endif // Q_WS_MAEMO_5 - void BookView::goToPosition(qreal position) { int contentsHeight = page()->mainFrame()->contentsSize().height(); @@ -451,7 +455,8 @@ void BookView::timerEvent(QTimerEvent *e) scrollerMonitor = -1; } } -#endif +#endif // Q_WS_MAEMO_5 + QWebView::timerEvent(e); } @@ -459,7 +464,7 @@ void BookView::goPreviousPage() { QWebFrame *frame = page()->mainFrame(); int pos = frame->scrollPosition().y(); - frame->scroll(0, -height()); + frame->scroll(0, -(height() - 19)); if (pos == frame->scrollPosition().y()) { if (contentIndex > 0) { Book::Bookmark bookmark(contentIndex - 1, 1.0); @@ -476,11 +481,10 @@ void BookView::goNextPage() TRACE; QWebFrame *frame = page()->mainFrame(); int pos = frame->scrollPosition().y(); - frame->scroll(0, height()); + frame->scroll(0, height() - 19); if (pos == frame->scrollPosition().y()) { goNext(); } else { - setLastBookmark(); showProgress(); } } @@ -509,3 +513,20 @@ void BookView::onMediaKeysPressed(MediaKeysObserver::MediaKeys key) } #endif // Q_OS_SYMBIAN + +void BookView::adjustPosition() +{ + TRACE; + const qreal portraitMagic = 1.66; + const qreal landscapeMagic = 0.655; + if (mBook) { + QSize desktop = QApplication::desktop()->size(); + int screenHeight = desktop.height(); + int screenWidth = desktop.width(); + qreal ratio = (screenWidthmainFrame(); + int current = frame->scrollPosition().y(); + qDebug() << "From" << current << "to" << (int)(current * ratio); + frame->scroll(0, (int)(current * ratio) - current); + } +}