X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;ds=sidebyside;f=mainwindow.cpp;h=074b33f30b1170f29c736e521fe385f5387f554b;hb=e5e113cbbbd0691ac179e311fe57082f992a63a0;hp=4c635cd0b45da3e8f38ed18ca47cb2287f51bc35;hpb=85bcf96dffca018f534df073d1688dda6ff5a5f2;p=dorian diff --git a/mainwindow.cpp b/mainwindow.cpp index 4c635cd..074b33f 100755 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -44,6 +44,17 @@ MainWindow::MainWindow(QWidget *parent): #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); +#endif + // Central widget. Must be an intermediate, because the book view widget // can be re-parented later QFrame *central = new QFrame(this); @@ -53,7 +64,7 @@ MainWindow::MainWindow(QWidget *parent): setCentralWidget(central); // Book view - view = new BookView(central); + view = new BookView(this); view->show(); layout->addWidget(view); @@ -68,13 +79,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")); @@ -189,26 +200,36 @@ void MainWindow::showRegular() 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) - y -= toolBar->height(); +#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) - previousButton->setGeometry(0, - geo.height() - toolBar->height() - TranslucentButton::pixels, - TranslucentButton::pixels, TranslucentButton::pixels); +#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); -#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); @@ -218,14 +239,13 @@ void MainWindow::showRegular() #endif // Q_WS_MAEMO_5 qDebug() << "previousButton geometry" << previousButton->geometry(); +#endif + fullScreenWindow->hide(); show(); #if defined(Q_OS_SYMBIAN) activateWindow(); #endif - progress->flash(); - nextButton->flash(); - previousButton->flash(); } void MainWindow::showBig() @@ -234,9 +254,9 @@ void MainWindow::showBig() // Re-parent children leaveChildren(); - QList otherChildren; - otherChildren << progress << nextButton << previousButton; - fullScreenWindow->takeChildren(view, otherChildren); + fullScreenWindow->takeChildren(view, progress, previousButton, nextButton); + +#if 0 // Adjust geometry of decorations QRect screen = QApplication::desktop()->screenGeometry(); @@ -252,16 +272,16 @@ void MainWindow::showBig() previousButton->setGeometry(0, screen.height() - TranslucentButton::pixels, TranslucentButton::pixels, TranslucentButton::pixels); -#ifdef Q_OS_SYMBIAN - hide(); #endif + +// #ifdef Q_OS_SYMBIAN + hide(); +// #endif + fullScreenWindow->showFullScreen(); #ifdef Q_OS_SYMBIAN fullScreenWindow->activateWindow(); #endif - progress->flash(); - nextButton->flash(); - previousButton->flash(); } void MainWindow::setCurrentBook(const QModelIndex ¤t) @@ -300,7 +320,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)), @@ -313,7 +332,7 @@ void MainWindow::closeEvent(QCloseEvent *event) { TRACE; view->setLastBookmark(); - event->accept(); + AdopterWindow::closeEvent(event); } void MainWindow::onSettingsChanged(const QString &key) @@ -392,7 +411,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(); @@ -428,45 +446,63 @@ void MainWindow::timerEvent(QTimerEvent *event) void MainWindow::resizeEvent(QResizeEvent *e) { - TRACE; - - if (hasChild(progress)) { - qDebug() << "To" << e->size(); - int y = e->size().height() - progress->thickness(); -#if defined(Q_WS_MAEMO_5) - y -= toolBar->height(); + 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 - progress->setGeometry(0, y, e->size().width(), y + progress->thickness()); + QTimer::singleShot(100, this, SLOT(placeChildren())); + AdopterWindow::resizeEvent(e); +} -#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 +void MainWindow::placeChildren() +{ + Trace t("MainWindow::placeChildren"); -#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 + 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(); } - QMainWindow::resizeEvent(e); + } void MainWindow::about() @@ -481,8 +517,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();