#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);
setCentralWidget(central);
// Book view
- view = new BookView(central);
- view->show();
- layout->addWidget(view);
-
- // Dialogs
- progress = new Progress(this);
+ view = new BookView(this);
// Tool bar actions
-#ifdef Q_OS_SYMBIAN
- fullScreenAction = addToolBarAction(this, SLOT(showBig()),
- "view-fullscreen", tr("Full screen"));
-#endif
-
chaptersAction = addToolBarAction(this, SLOT(showChapters()),
"chapters", tr("Chapters"), true);
bookmarksAction = addToolBarAction(this, SLOT(showBookmarks()),
"bookmarks", tr("Bookmarks"), true);
- infoAction = addToolBarAction(this, SLOT(showInfo()),
- "info", tr("Book info"), true);
libraryAction = addToolBarAction(this, SLOT(showLibrary()),
- "library", tr("Library"), true);
+ "library", tr("Library"), false);
#ifdef Q_WS_MAEMO_5
settingsAction = menuBar()->addAction(tr("Settings"));
connect(settingsAction, SIGNAL(triggered()), this, SLOT(showSettings()));
devToolsAction = menuBar()->addAction(tr("Developer"));
connect(devToolsAction, SIGNAL(triggered()), this, SLOT(showDevTools()));
- QAction *aboutAction = menuBar()->addAction(tr("About"));
- connect(aboutAction, SIGNAL(triggered()), this, SLOT(about()));
#else
settingsAction = addToolBarAction(this, SLOT(showSettings()),
"preferences-system", tr("Settings"));
devToolsAction = addToolBarAction(this, SLOT(showDevTools()),
"developer", tr("Developer"));
- addToolBarAction(this, SLOT(about()), "about", tr("About"));
-#endif // Q_WS_MAEMO_5
+#endif
-#ifndef Q_OS_SYMBIAN
- addToolBarSpace();
+ rotateAction = addToolBarAction(this, SLOT(rotate()),
+ "rotate", tr("Rotate"), true);
+ // addToolBarSpace();
fullScreenAction = addToolBarAction(this, SLOT(showBig()),
- "view-fullscreen", tr("Full screen"));
+ "view-fullscreen", tr("Full screen"), true);
+
+#if defined(Q_WS_MAEMO_5)
+ QAction *aboutAction = menuBar()->addAction(tr("About"));
+ connect(aboutAction, SIGNAL(triggered()), this, SLOT(about()));
#else
- (void)addToolBarAction(this, SLOT(close()), "", tr("Exit"));
-#endif
+ addToolBarAction(this, SLOT(about()), "about", tr("About"));
+#endif // defined(Q_WS_MAEMO_5)
+
+#if defined(Q_OS_SYMBIAN)
+ (void)addToolBarAction(this, SLOT(close()), "", tr("Exit"), false);
+#endif // defined(Q_OS_SYMBIAN)
- // 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()),
// 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()));
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);
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);
library->setNowReading(sorted.mapToSource(sorted.index(0, 0)));
}
}
+
+ // Show in regular (non full-screen) mode
+ showRegular();
}
void MainWindow::onCurrentBookChanged()
TRACE;
// Re-parent children
- fullScreenWindow->leaveChildren();
- QList<QWidget *> otherChildren;
- otherChildren << progress << previousButton << nextButton;
- takeChildren(view, otherChildren);
-
- // Adjust geometry of decorations
-
- QRect geo = geometry();
- qDebug() << geo;
- 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();
-
+ fullScreenWindow->leaveBookView();
+ takeBookView(view, prog, prev, next);
fullScreenWindow->hide();
- show();
-#if defined(Q_OS_SYMBIAN)
- activateWindow();
+
+#ifdef Q_OS_SYMBIAN
+ view->setFixedSize(Platform::availableSize().width(),
+ Platform::availableSize().height() - Platform::softKeyHeight());
#endif
- progress->flash();
- nextButton->flash();
- previousButton->flash();
+ show();
}
void MainWindow::showBig()
TRACE;
// Re-parent children
- leaveChildren();
- fullScreenWindow->takeChildren(view, progress, previousButton, nextButton);
-
- // 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);
+ leaveBookView();
+ fullScreenWindow->takeBookView(view, prog, prev, next);
+ hide();
#ifdef Q_OS_SYMBIAN
- hide();
+ view->setFixedSize(Platform::size());
#endif
fullScreenWindow->showFullScreen();
-#ifdef Q_OS_SYMBIAN
- fullScreenWindow->activateWindow();
-#endif
- progress->flash();
- nextButton->flash();
- previousButton->flash();
}
void MainWindow::setCurrentBook(const QModelIndex ¤t)
(new SettingsWindow(this))->show();
}
-void MainWindow::showInfo()
+void MainWindow::rotate()
{
- if (mCurrent.isValid()) {
- (new InfoDialog(Library::instance()->book(mCurrent), this, false))->
- exec();
- }
+ QString current = Settings::instance()->value("orientation",
+ Platform::instance()->defaultOrientation()).toString();
+ QString target = (current == "landscape")? "portrait": "landscape";
+ Settings::instance()->setValue("orientation", target);
}
void MainWindow::showDevTools()
}
}
-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()
AdopterWindow::timerEvent(event);
}
-void MainWindow::resizeEvent(QResizeEvent *e)
-{
- TRACE;
-
- int toolBarHeight = 0;
-
-#ifdef Q_OS_SYMBIAN
- // Tool bar is only useful in portrait mode
- bool isPortrait = (e->size().width() < e->size().height());
- toolBar->setVisible(isPortrait);
- if (!isPortrait) {
- toolBarHeight = toolBar->height();
- }
-#endif // Q_OS_SYMBIAN
-
- if (bookView) {
- qDebug() << "BookView geometry" << bookView->geometry();
- QRect geo = bookView->geometry();
- 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);
- }
- QMainWindow::resizeEvent(e);
-}
-
void MainWindow::about()
{
Dyalog *aboutDialog = new Dyalog(this, false);
label->setTextFormat(Qt::RichText);
label->setOpenExternalLinks(true);
label->setWordWrap(true);
- label->setText(tr("<b>Dorian %1</b><br><br>Copyright © 2010 "
- "Akos Polster <akos@pipacs.com><br>"
- "Licensed under GNU General Public License, Version 3<br>"
- "Source code:<br><a href='https://garage.maemo.org/projects/dorian/'>"
- "garage.maemo.org/projects/dorian</a>").arg(version));
+ label->setText(tr("<b>Dorian %1</b><br><br>"
+ "Copyright © 2010-2011 by "
+ "Akos Polster <akos@pipacs.com><br><br>"
+ "Licensed under GNU General Public License, Version 3<br><br>"
+ "<a href='http://dorian.garage.maemo.org/'>"
+ "dorian.garage.maemo.org</a><br><br>"
+ ).arg(version));
aboutDialog->addWidget(label);
aboutDialog->addStretch();
aboutDialog->show();
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();
}