X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=mainwindow.cpp;h=e20bf84dbcac886969aef52efa467770fffa5c09;hb=4f302c4427507fec544f32b9003035e93f32b2e2;hp=074b33f30b1170f29c736e521fe385f5387f554b;hpb=d651145f54a754e135df407c56dc114c80e2bd52;p=dorian diff --git a/mainwindow.cpp b/mainwindow.cpp index 074b33f..e20bf84 100755 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -42,21 +42,13 @@ MainWindow::MainWindow(QWidget *parent): #ifdef Q_WS_MAEMO_5 setAttribute(Qt::WA_Maemo5StackedWindow, true); #endif - setWindowTitle("Dorian"); -#ifdef Q_OS_SYMBIAN - // Tool bar - toolBar = new QToolBar("", this /*frame*/); - toolBar->setFixedWidth(QApplication::desktop()-> - availableGeometry().width()); - toolBar->setFixedHeight(65); - toolBar->setStyleSheet("margin:0;border:0;padding:0"); - toolBar->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Maximum); - addToolBar(Qt::BottomToolBarArea, toolBar); +#ifndef Q_OS_SYMBIAN + setWindowTitle("Dorian"); #endif // Central widget. Must be an intermediate, because the book view widget - // can be re-parented later + // might be re-parented later QFrame *central = new QFrame(this); QVBoxLayout *layout = new QVBoxLayout(central); layout->setMargin(0); @@ -65,11 +57,6 @@ MainWindow::MainWindow(QWidget *parent): // Book view view = new BookView(this); - view->show(); - layout->addWidget(view); - - // Dialogs - progress = new Progress(this); // Tool bar actions @@ -110,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()), @@ -121,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())); @@ -131,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); @@ -142,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); @@ -182,6 +168,9 @@ void MainWindow::initialize() library->setNowReading(sorted.mapToSource(sorted.index(0, 0))); } } + + // Show in regular (non full-screen) mode + showRegular(); } void MainWindow::onCurrentBookChanged() @@ -195,54 +184,12 @@ void MainWindow::showRegular() TRACE; // Re-parent children - fullScreenWindow->leaveChildren(); - QList otherChildren; - otherChildren << progress << previousButton << nextButton; - takeChildren(view, otherChildren); - -#if 0 - - // Adjust geometry of decorations - - QRect geo = geometry(); - qDebug() << "MainWindow (MainWindow::showRegular)" << geo; - qDebug() << "BookView (MainWindow::showRegular)" << view->geometry(); - int y = geo.height() - progress->thickness(); -#if defined(Q_WS_MAEMO_5) || defined(Q_OS_SYMBIAN) - bool hasToolBar = false; -# if defined(Q_OS_SYMBIAN) - hasToolBar = - (QApplication::desktop()->width() < QApplication::desktop()->height()); - qDebug() << (hasToolBar? "Portrait": "Landscape"); -# endif - if (!hasToolBar) { - y -= toolBar->height(); - } -#endif - progress->setGeometry(0, y, geo.width(), y + progress->thickness()); - -#if defined(Q_WS_MAEMO_5) || defined(Q_OS_SYMBIAN) - y = geo.height() - TranslucentButton::pixels; - if (!hasToolBar) { - y -= toolBar->height(); - } - previousButton->setGeometry(0, y, 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(); - -#endif + fullScreenWindow->leaveBookView(); + takeBookView(view, prog, prev, next); fullScreenWindow->hide(); show(); + #if defined(Q_OS_SYMBIAN) activateWindow(); #endif @@ -253,32 +200,12 @@ void MainWindow::showBig() TRACE; // Re-parent children - leaveChildren(); - fullScreenWindow->takeChildren(view, progress, previousButton, nextButton); - -#if 0 - - // Adjust geometry of decorations - QRect screen = QApplication::desktop()->screenGeometry(); - int y = screen.height() - progress->thickness(); - progress->setGeometry(0, y, screen.width(), y + progress->thickness()); -#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); - -#endif + leaveBookView(); + fullScreenWindow->takeBookView(view, prog, prev, next); -// #ifdef Q_OS_SYMBIAN + fullScreenWindow->showFullScreen(); hide(); -// #endif - fullScreenWindow->showFullScreen(); #ifdef Q_OS_SYMBIAN fullScreenWindow->activateWindow(); #endif @@ -328,45 +255,29 @@ void MainWindow::showBookmarks() } } -void MainWindow::closeEvent(QCloseEvent *event) +void MainWindow::onSettingsChanged(const QString &key) { TRACE; - view->setLastBookmark(); - AdopterWindow::closeEvent(event); -} + qDebug() << "Key" << key; -void MainWindow::onSettingsChanged(const QString &key) -{ -#if defined(Q_WS_MAEMO_5) if (key == "orientation") { + view->setLastBookmark(); QString value = Settings::instance()->value(key, Platform::instance()->defaultOrientation()).toString(); - qDebug() << "MainWindow::onSettingsChanged: orientation" << value; - 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") { + qDebug() << "Value: orientation" << value; + Platform::instance()->setOrientation(this, value); + Platform::instance()->setOrientation(fullScreenWindow, value); + } + +#if defined(Q_WS_MAEMO_5) + else if (key == "lightson") { bool enable = Settings::instance()->value(key, false).toBool(); - qDebug() << "MainWindow::onSettingsChanged: lightson" << enable; killTimer(preventBlankingTimer); if (enable) { preventBlankingTimer = startTimer(29 * 1000); } } -#else - Q_UNUSED(key); -#endif // Q_WS_MAEMO_5 +#endif // defined(Q_WS_MAEMO_5) } void MainWindow::onPartLoadStart() @@ -444,67 +355,6 @@ void MainWindow::timerEvent(QTimerEvent *event) AdopterWindow::timerEvent(event); } -void MainWindow::resizeEvent(QResizeEvent *e) -{ - Trace t("MainWindow::resizeEvent"); -#ifdef Q_OS_SYMBIAN - // Tool bar is only useful in portrait mode - bool isPortrait = - (QApplication::desktop()->width() < QApplication::desktop()->height()); - toolBar->setVisible(isPortrait); -#endif - QTimer::singleShot(100, this, SLOT(placeChildren())); - AdopterWindow::resizeEvent(e); -} - -void MainWindow::placeChildren() -{ - Trace t("MainWindow::placeChildren"); - - int toolBarHeight = 0; - -#ifdef Q_OS_SYMBIAN - // Tool bar is only useful in portrait mode - bool isPortrait = - (QApplication::desktop()->width() < QApplication::desktop()->height()); - // toolBar->setVisible(isPortrait); - - // Work around Symbian bug: If there is no tool bar, increase decorator - // widgets' Y coordinates - if (!isPortrait) { - toolBarHeight = toolBar->height(); - } -#endif // Q_OS_SYMBIAN - - if (hasChild(view)) { - QRect geo = centralWidget()->geometry(); - qDebug() << "centralWidget (MainWindow::resizeEvent)" << geo; -#ifdef Q_OS_SYMBIAN - // FIXME: When returning from full screen in landscape mode, - // the central widget's height is miscalculated on Symbian. - // My apologies for this kludge - if (geo.height() == 288) { - geo.setHeight(223); - } -#endif // Q_OS_SYMBIAN - progress->setGeometry(geo.x(), - geo.y() + geo.height() - progress->thickness() + toolBarHeight, - geo.width(), progress->thickness()); - previousButton->setGeometry(geo.x(), - geo.y() + geo.height() - TranslucentButton::pixels + toolBarHeight, - TranslucentButton::pixels, TranslucentButton::pixels); - nextButton->setGeometry( - geo.x() + geo.width() - TranslucentButton::pixels, - geo.y(), TranslucentButton::pixels, TranslucentButton::pixels); - progress->flash(); - previousButton->flash(); - nextButton->flash(); - qDebug() << "Progress (MainWindow::resizeEvent)" - << progress->geometry(); - } - -} - void MainWindow::about() { Dyalog *aboutDialog = new Dyalog(this, false); @@ -526,15 +376,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(); }