X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=bookview.cpp;h=aaa3326973bb862920968e0466a0550dee293b16;hb=b28659ebcbbcd4c42d90e0439fc09e03fc5a47cc;hp=387a76782675f376c83ceb02ff760b78d0dbe5bb;hpb=5cad671b0742ca2b922edcb5e7a77f8816e59269;p=dorian diff --git a/bookview.cpp b/bookview.cpp index 387a767..aaa3326 100644 --- a/bookview.cpp +++ b/bookview.cpp @@ -18,7 +18,7 @@ BookView::BookView(QWidget *parent): QWebView(parent), contentIndex(-1), mBook(0), restorePositionAfterLoad(false), positionAfterLoad(0), - loaded(false), grabbingVolumeKeys(false) + restoreFragmentAfterLoad(false), loaded(false), grabbingVolumeKeys(false) { TRACE; @@ -58,13 +58,8 @@ BookView::BookView(QWidget *parent): QWebView(parent), contentIndex(-1), bookmarkImage = QImage(":/icons/bookmark.png"); // Handle settings changes, force handling initial settings - Settings *s = Settings::instance(); - connect(s, SIGNAL(valueChanged(const QString &)), + connect(Settings::instance(), SIGNAL(valueChanged(const QString &)), this, SLOT(onSettingsChanged(const QString &))); - s->setValue("zoom", s->value("zoom", 160)); - s->setValue("font", s->value("font", Platform::defaultFont())); - s->setValue("scheme", s->value("scheme", "default")); - s->setValue("usevolumekeys", s->value("usevolumekeys", false)); setBook(0); // Enable kinetic scrolling @@ -201,14 +196,18 @@ void BookView::goToPart(int part, const QString &fragment) { TRACE; if (mBook) { - if (part != contentIndex) { - qDebug() << "Loading new part" << part; - restoreFragmentAfterLoad = true; - fragmentAfterLoad = fragment; - loadContent(part); + if (fragment.isEmpty()) { + goToBookmark(Book::Bookmark(part, 0)); } else { - goToFragment(fragment); - showProgress(); + if (part != contentIndex) { + qDebug() << "Loading new part" << part; + restoreFragmentAfterLoad = true; + fragmentAfterLoad = fragment; + loadContent(part); + } else { + goToFragment(fragment); + showProgress(); + } } } } @@ -220,7 +219,7 @@ void BookView::goToFragment(const QString &fragment) QVariant ret = page()->mainFrame()->evaluateJavaScript( QString("window.location='") + fragment + "'"); qDebug() << ret; - setLastBookmark(); + // FIXME: setLastBookmark(); } } @@ -241,6 +240,7 @@ void BookView::onLoadFinished(bool ok) void BookView::restoreAfterLoad() { + TRACE; if (restoreFragmentAfterLoad) { qDebug() << "Restorint to fragment" << fragmentAfterLoad; goToFragment(fragmentAfterLoad); @@ -257,14 +257,17 @@ void BookView::restoreAfterLoad() void BookView::onSettingsChanged(const QString &key) { - TRACE; - qDebug() << key << Settings::instance()->value(key); + Settings *s = Settings::instance(); + Platform *p = Platform::instance(); if (key == "zoom") { - setZoomFactor(Settings::instance()->value(key).toFloat() / 100.); + int value = s->value(key, p->defaultZoom()).toInt(); + qDebug() << "BookView::onSettingsChanged: zoom" << value; + setZoomFactor(value / 100.); } else if (key == "font") { - QString face = Settings::instance()->value(key).toString(); + QString face = s->value(key, p->defaultFont()).toString(); + qDebug() << "BookView::onSettingsChanged: font" << face; settings()->setFontFamily(QWebSettings::StandardFont, face); } else if (key == "scheme") { @@ -274,14 +277,17 @@ void BookView::onSettingsChanged(const QString &key) (scheme != "default")) { scheme = "default"; } + qDebug() << "BookView::onSettingsChanged: scheme" << scheme; QFile script(":/styles/" + scheme + ".js"); script.open(QFile::ReadOnly); QString scriptText = script.readAll(); script.close(); - QVariant ret = frame->evaluateJavaScript(scriptText); + (void)frame->evaluateJavaScript(scriptText); } else if (key == "usevolumekeys") { - grabVolumeKeys(Settings::instance()->value(key).toBool()); + bool grab = s->value(key, false).toBool(); + qDebug() << "BookView::onSettingsChanged: usevolumekeys" << grab; + grabVolumeKeys(grab); } } @@ -405,20 +411,11 @@ void BookView::addJavaScriptObjects() void BookView::leaveEvent(QEvent *e) { TRACE; - // Save current position, to be restored later + // Save current position, to be restored later, in MainWindow::resizeEvent() setLastBookmark(); QWebView::leaveEvent(e); } -void BookView::enterEvent(QEvent *e) -{ - TRACE; - // Restore position saved at Leave event. This seems to be required, - // after temporarily switching from portrait to landscape and back - restoreLastBookmark(); - QWebView::enterEvent(e); -} - #endif // Q_WS_MAEMO_5 void BookView::goToPosition(qreal position)