X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=mainwindow.cpp;h=21194523b96fac76723ad0b37ab3dead38c5cbca;hb=3c911546d4367fa1da0a21c70872159a1044a170;hp=c3ef1a606d0d9a9c806b470c77ecef64f013e54b;hpb=8f61c1b666e9c4ad58d4689094c074c9cd05e387;p=dorian diff --git a/mainwindow.cpp b/mainwindow.cpp index c3ef1a6..2119452 100755 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -29,13 +29,12 @@ #include "translucentbutton.h" #include "platform.h" #include "progressdialog.h" +#include "sortedlibrary.h" #ifdef DORIAN_TEST_MODEL # include "modeltest.h" #endif -const int DORIAN_PROGRESS_HEIGHT = 17; - MainWindow::MainWindow(QWidget *parent): AdopterWindow(parent), view(0), preventBlankingTimer(-1) { @@ -43,7 +42,10 @@ MainWindow::MainWindow(QWidget *parent): #ifdef Q_WS_MAEMO_5 setAttribute(Qt::WA_Maemo5StackedWindow, true); #endif + +#ifndef Q_OS_SYMBIAN setWindowTitle("Dorian"); +#endif // Central widget. Must be an intermediate, because the book view widget // can be re-parented later @@ -54,15 +56,7 @@ MainWindow::MainWindow(QWidget *parent): setCentralWidget(central); // Book view - view = new BookView(central); - view->show(); - layout->addWidget(view); - - // Progress - progress = new Progress(this); - - // Settings dialog - settings = new QDialog(this); + view = new BookView(this); // Tool bar actions @@ -72,13 +66,13 @@ MainWindow::MainWindow(QWidget *parent): #endif chaptersAction = addToolBarAction(this, SLOT(showChapters()), - "chapters", tr("Chapters")); + "chapters", tr("Chapters"), true); bookmarksAction = addToolBarAction(this, SLOT(showBookmarks()), - "bookmarks", tr("Bookmarks")); + "bookmarks", tr("Bookmarks"), true); infoAction = addToolBarAction(this, SLOT(showInfo()), - "info", tr("Book info")); + "info", tr("Book info"), true); libraryAction = addToolBarAction(this, SLOT(showLibrary()), - "library", tr("Library")); + "library", tr("Library"), true); #ifdef Q_WS_MAEMO_5 settingsAction = menuBar()->addAction(tr("Settings")); @@ -103,9 +97,10 @@ MainWindow::MainWindow(QWidget *parent): (void)addToolBarAction(this, SLOT(close()), "", tr("Exit")); #endif - // Buttons on top of the book view - previousButton = new TranslucentButton("back", this); - nextButton = new TranslucentButton("forward", this); + // Decorations + prev = new TranslucentButton("back", this); + next = new TranslucentButton("forward", this); + prog = new Progress(this); // Handle model changes connect(Library::instance(), SIGNAL(nowReadingChanged()), @@ -114,7 +109,8 @@ MainWindow::MainWindow(QWidget *parent): // Load library, upgrade it if needed libraryProgress = new ProgressDialog(tr("Upgrading library"), this); Library *library = Library::instance(); - connect(library, SIGNAL(beginUpgrade(int)), this, SLOT(onBeginUpgrade(int))); + connect(library, SIGNAL(beginUpgrade(int)), + this, SLOT(onBeginUpgrade(int))); connect(library, SIGNAL(upgrading(const QString &)), this, SLOT(onUpgrading(const QString &))); connect(library, SIGNAL(endUpgrade()), this, SLOT(onEndUpgrade())); @@ -124,7 +120,7 @@ MainWindow::MainWindow(QWidget *parent): connect(view, SIGNAL(partLoadEnd(int)), this, SLOT(onPartLoadEnd(int))); // Handle progress - connect(view, SIGNAL(progress(qreal)), progress, SLOT(setProgress(qreal))); + connect(view, SIGNAL(progress(qreal)), prog, SLOT(setProgress(qreal))); // Shadow window for full screen reading fullScreenWindow = new FullScreenWindow(this); @@ -135,11 +131,8 @@ MainWindow::MainWindow(QWidget *parent): this, SLOT(onSettingsChanged(const QString &))); // Handle book view buttons - connect(nextButton, SIGNAL(triggered()), this, SLOT(goToNextPage())); - connect(previousButton, SIGNAL(triggered()), this, SLOT(goToPreviousPage())); - - // Adopt view, show window - showRegular(); + connect(next, SIGNAL(triggered()), this, SLOT(goToNextPage())); + connect(prev, SIGNAL(triggered()), this, SLOT(goToPreviousPage())); #ifdef DORIAN_TEST_MODEL (void)new ModelTest(Library::instance(), this); @@ -171,9 +164,13 @@ void MainWindow::initialize() if (!library->rowCount()) { library->add(":/books/2BR02B.epub"); } - library->setNowReading(library->index(0)); + SortedLibrary sorted; + library->setNowReading(sorted.mapToSource(sorted.index(0, 0))); } } + + // Show in regular (non full-screen) mode + showRegular(); } void MainWindow::onCurrentBookChanged() @@ -187,42 +184,15 @@ void MainWindow::showRegular() TRACE; // Re-parent children - fullScreenWindow->leaveChildren(); - QList otherChildren; - otherChildren << progress << previousButton << nextButton; - takeChildren(view, otherChildren); - - // Adjust geometry of decorations - QRect geo = geometry(); - progress->setGeometry(0, 0, geo.width(), DORIAN_PROGRESS_HEIGHT); -#if defined(Q_WS_MAEMO_5) - previousButton->setGeometry(0, - geo.height() - toolBar->height() - TranslucentButton::pixels, - TranslucentButton::pixels, TranslucentButton::pixels); - nextButton->setGeometry(geo.width() - TranslucentButton::pixels, 0, - TranslucentButton::pixels, TranslucentButton::pixels); -#elif defined(Q_OS_SYMBIAN) - previousButton->setGeometry(0, geo.height() - TranslucentButton::pixels, - TranslucentButton::pixels, TranslucentButton::pixels); - nextButton->setGeometry(geo.width() - TranslucentButton::pixels, - 0, TranslucentButton::pixels, TranslucentButton::pixels); -#else - previousButton->setGeometry(0, geo.height() - TranslucentButton::pixels, - TranslucentButton::pixels, TranslucentButton::pixels); - nextButton->setGeometry(geo.width() - TranslucentButton::pixels - 25, - toolBar->height(), TranslucentButton::pixels, - TranslucentButton::pixels); -#endif // Q_WS_MAEMO_5 - qDebug() << "previousButton geometry" << previousButton->geometry(); + fullScreenWindow->leaveBookView(); + takeBookView(view, prog, prev, next); fullScreenWindow->hide(); show(); + #if defined(Q_OS_SYMBIAN) activateWindow(); #endif - progress->flash(); - nextButton->flash(); - previousButton->flash(); } void MainWindow::showBig() @@ -230,34 +200,15 @@ void MainWindow::showBig() TRACE; // Re-parent children - leaveChildren(); - QList otherChildren; - otherChildren << progress << nextButton << previousButton; - fullScreenWindow->takeChildren(view, otherChildren); - - // Adjust geometry of decorations - QRect screen = QApplication::desktop()->screenGeometry(); - progress->setGeometry(0, 0, screen.width(), DORIAN_PROGRESS_HEIGHT); -#if defined(Q_WS_MAEMO_5) - nextButton->setGeometry(screen.width() - TranslucentButton::pixels, 0, - TranslucentButton::pixels, TranslucentButton::pixels); -#else - nextButton->setGeometry(screen.width() - TranslucentButton::pixels - 25, 0, - TranslucentButton::pixels, TranslucentButton::pixels); -#endif // Q_WS_MAEMO_5 - previousButton->setGeometry(0, screen.height() - TranslucentButton::pixels, - TranslucentButton::pixels, TranslucentButton::pixels); + leaveBookView(); + fullScreenWindow->takeBookView(view, prog, prev, next); -#ifdef Q_OS_SYMBIAN - hide(); -#endif fullScreenWindow->showFullScreen(); + hide(); + #ifdef Q_OS_SYMBIAN fullScreenWindow->activateWindow(); #endif - progress->flash(); - nextButton->flash(); - previousButton->flash(); } void MainWindow::setCurrentBook(const QModelIndex ¤t) @@ -296,7 +247,6 @@ void MainWindow::showBookmarks() Book *book = Library::instance()->book(mCurrent); if (book) { BookmarksDialog *bookmarks = new BookmarksDialog(book, this); - bookmarks->setWindowModality(Qt::WindowModal); connect(bookmarks, SIGNAL(addBookmark(const QString &)), this, SLOT(onAddBookmark(const QString &))); connect(bookmarks, SIGNAL(goToBookmark(int)), @@ -305,13 +255,6 @@ void MainWindow::showBookmarks() } } -void MainWindow::closeEvent(QCloseEvent *event) -{ - TRACE; - view->setLastBookmark(); - event->accept(); -} - void MainWindow::onSettingsChanged(const QString &key) { #if defined(Q_WS_MAEMO_5) @@ -322,9 +265,16 @@ void MainWindow::onSettingsChanged(const QString &key) if (value == "portrait") { setAttribute(Qt::WA_Maemo5LandscapeOrientation, false); setAttribute(Qt::WA_Maemo5PortraitOrientation, true); + fullScreenWindow->setAttribute(Qt::WA_Maemo5LandscapeOrientation, + false); + fullScreenWindow->setAttribute(Qt::WA_Maemo5PortraitOrientation, true); } else { setAttribute(Qt::WA_Maemo5PortraitOrientation, false); setAttribute(Qt::WA_Maemo5LandscapeOrientation, true); + fullScreenWindow->setAttribute(Qt::WA_Maemo5PortraitOrientation, + false); + fullScreenWindow->setAttribute(Qt::WA_Maemo5LandscapeOrientation, + true); } } else if (key == "lightson") { bool enable = Settings::instance()->value(key, false).toBool(); @@ -334,6 +284,8 @@ void MainWindow::onSettingsChanged(const QString &key) preventBlankingTimer = startTimer(29 * 1000); } } +#else + Q_UNUSED(key); #endif // Q_WS_MAEMO_5 } @@ -379,7 +331,6 @@ void MainWindow::showChapters() Book *book = Library::instance()->book(mCurrent); if (book) { ChaptersDialog *chapters = new ChaptersDialog(book, this); - chapters->setWindowModality(Qt::WindowModal); connect(chapters, SIGNAL(goToChapter(int)), this, SLOT(onGoToChapter(int))); chapters->show(); @@ -413,39 +364,6 @@ void MainWindow::timerEvent(QTimerEvent *event) AdopterWindow::timerEvent(event); } -void MainWindow::resizeEvent(QResizeEvent *e) -{ - TRACE; - progress->setGeometry(QRect(0, 0, e->size().width(), DORIAN_PROGRESS_HEIGHT)); -#if defined(Q_WS_MAEMO_5) - previousButton->setGeometry(0, - e->size().height() - toolBar->height() - TranslucentButton::pixels, - TranslucentButton::pixels, TranslucentButton::pixels); - nextButton->setGeometry(e->size().width() - TranslucentButton::pixels, 0, - TranslucentButton::pixels, TranslucentButton::pixels); -#elif defined(Q_OS_SYMBIAN) - previousButton->setGeometry(0, e->size().height() - TranslucentButton::pixels, - TranslucentButton::pixels, TranslucentButton::pixels); - nextButton->setGeometry(e->size().width() - TranslucentButton::pixels, - 0, TranslucentButton::pixels, TranslucentButton::pixels); -#else - previousButton->setGeometry(0, e->size().height() - TranslucentButton::pixels, - TranslucentButton::pixels, TranslucentButton::pixels); - nextButton->setGeometry(e->size().width() - TranslucentButton::pixels - 25, - toolBar->height(), TranslucentButton::pixels, TranslucentButton::pixels); -#endif // Q_WS_MAEMO_5 - qDebug() << "previousButton geometry" << previousButton->geometry(); - -#ifdef Q_WS_MAEMO_5 - // This is needed on Maemo, in order not to lose current reading position - // after orientation change - QTimer::singleShot(250, view, SLOT(restoreLastBookmark())); -#endif - previousButton->flash(); - nextButton->flash(); - QMainWindow::resizeEvent(e); -} - void MainWindow::about() { Dyalog *aboutDialog = new Dyalog(this, false); @@ -458,8 +376,8 @@ void MainWindow::about() label->setText(tr("Dorian %1

Copyright © 2010 " "Akos Polster <akos@pipacs.com>
" "Licensed under GNU General Public License, Version 3
" - "Source code:
" - "garage.maemo.org/projects/dorian").arg(version)); + "Source code:
" + "dorian.garage.maemo.org").arg(version)); aboutDialog->addWidget(label); aboutDialog->addStretch(); aboutDialog->show(); @@ -467,15 +385,15 @@ void MainWindow::about() void MainWindow::goToNextPage() { - nextButton->flash(); - previousButton->flash(); + next->flash(); + prev->flash(); view->goNextPage(); } void MainWindow::goToPreviousPage() { - nextButton->flash(); - previousButton->flash(); + next->flash(); + prev->flash(); view->goPreviousPage(); }