Improve icons. Move some menu items to the toolbar. Don't show buttons in current...
[dorian] / mainwindow.cpp
index 3182b08..b049ab7 100755 (executable)
@@ -31,6 +31,7 @@
 #include "bookfinder.h"
 #include "progress.h"
 #include "dyalog.h"
+#include "translucentbutton.h"
 
 #ifdef DORIAN_TEST_MODEL
 #include "modeltest.h"
@@ -48,7 +49,7 @@ const char *DORIAN_VERSION =
 ;
 
 MainWindow::MainWindow(QWidget *parent):
-    BookWindow(parent), view(0), preventBlankingTimer(-1)
+    AdopterWindow(parent), view(0), preventBlankingTimer(-1)
 {
     Trace t("MainWindow::MainWindow");
 #ifdef Q_WS_MAEMO_5
@@ -73,6 +74,7 @@ MainWindow::MainWindow(QWidget *parent):
     progress = new Progress(central);
 
     // Tool bar
+
     setUnifiedTitleAndToolBarOnMac(true);
     settings = new QDialog(this);
     toolBar = addToolBar("controls");
@@ -83,16 +85,12 @@ MainWindow::MainWindow(QWidget *parent):
     toolBar->setIconSize(QSize(42, 42));
 #endif
 
-    previousAction = addToolBarAction(view, SLOT(goPrevious()), "previous");
-    nextAction = addToolBarAction(view, SLOT(goNext()), "next");
     chaptersAction = addToolBarAction(this, SLOT(showChapters()), "chapters");
     bookmarksAction = addToolBarAction(this, SLOT(showBookmarks()), "bookmarks");
+    infoAction = addToolBarAction(this, SLOT(showInfo()), "info");
+    libraryAction = addToolBarAction(this, SLOT(showLibrary()), "library");
 
 #ifdef Q_WS_MAEMO_5
-    infoAction = menuBar()->addAction(tr("Book details"));
-    connect(infoAction, SIGNAL(triggered()), this, SLOT(showInfo()));
-    libraryAction = menuBar()->addAction(tr("Library"));
-    connect(libraryAction, SIGNAL(triggered()), this, SLOT(showLibrary()));
     settingsAction = menuBar()->addAction(tr("Settings"));
     connect(settingsAction, SIGNAL(triggered()), this, SLOT(showSettings()));
     devToolsAction = menuBar()->addAction(tr("Developer"));
@@ -100,9 +98,6 @@ MainWindow::MainWindow(QWidget *parent):
     QAction *aboutAction = menuBar()->addAction(tr("About"));
     connect(aboutAction, SIGNAL(triggered()), this, SLOT(about()));
 #else
-    infoAction = addToolBarAction(this, SLOT(showInfo()), "document-properties");
-    libraryAction = addToolBarAction(this, SLOT(showLibrary()),
-                                     "system-file-manager");
     settingsAction = addToolBarAction(this, SLOT(showSettings()),
                                       "preferences-system");
     devToolsAction = addToolBarAction(this, SLOT(showDevTools()), "developer");
@@ -113,7 +108,12 @@ MainWindow::MainWindow(QWidget *parent):
     frame->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
     toolBar->addWidget(frame);
 
-    fullScreenAction = addToolBarAction(this, SLOT(showBig()), "view-fullscreen");
+    fullScreenAction = addToolBarAction(this, SLOT(showBig()),
+                                        "view-fullscreen");
+
+    // Buttons on top of the book view
+    previousButton = new TranslucentButton("back", this);
+    nextButton = new TranslucentButton("forward", this);
 
     // Handle model changes
     connect(Library::instance(), SIGNAL(nowReadingChanged()),
@@ -149,7 +149,7 @@ MainWindow::MainWindow(QWidget *parent):
     // Handle progress
     connect(view, SIGNAL(progress(qreal)), progress, SLOT(setProgress(qreal)));
 
-    // Shadow window for full screen
+    // Shadow window for full screen reading
     fullScreenWindow = new FullScreenWindow(this);
     connect(fullScreenWindow, SIGNAL(restore()), this, SLOT(showRegular()));
 
@@ -161,6 +161,10 @@ MainWindow::MainWindow(QWidget *parent):
     settings->setValue("lightson", settings->value("lightson"));
     settings->setValue("usevolumekeys", settings->value("usevolumekeys"));
 
+    // Handle book view buttons
+    connect(nextButton, SIGNAL(triggered()), this, SLOT(goToNextPage()));
+    connect(previousButton, SIGNAL(triggered()), this, SLOT(goToPreviousPage()));
+
 #ifdef DORIAN_TEST_MODEL
     (void)new ModelTest(Library::instance(), this);
 #endif
@@ -180,11 +184,31 @@ void MainWindow::showRegular()
     Trace t("MainWindow::showRegular");
     fullScreenWindow->hide();
     fullScreenWindow->leaveChildren();
-    progress->setGeometry(0, 0, geometry().width(), PROGRESS_HEIGHT);
+
     QList<QWidget *> otherChildren;
-    otherChildren.append(progress);
+    otherChildren << progress << previousButton << nextButton;
     takeChildren(view, otherChildren);
+    QRect geo = geometry();
+    qDebug() << "Geometry" << geo << "toolbar" << toolBar->height();
+    progress->setGeometry(0, 0, geo.width(), PROGRESS_HEIGHT);
+#ifdef 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);
+#else
+    previousButton->setGeometry(0, geo.height() - TranslucentButton::pixels,
+        TranslucentButton::pixels, TranslucentButton::pixels);
+    nextButton->setGeometry(geo.width() - TranslucentButton::pixels,
+        toolBar->height(), TranslucentButton::pixels, TranslucentButton::pixels);
+#endif // Q_WS_MAEMO_5
+    qDebug() << "previousButton geometry" << previousButton->geometry();
     progress->flash();
+    nextButton->show();
+    previousButton->show();
+    nextButton->flash(1500);
+    previousButton->flash(1500);
 }
 
 void MainWindow::showBig()
@@ -192,12 +216,19 @@ void MainWindow::showBig()
     Trace t("MainWindow::showBig");
     leaveChildren();
     QList<QWidget *> otherChildren;
-    otherChildren.append(progress);
-    progress->setGeometry(0, 0, QApplication::desktop()->screenGeometry().width(),
-                          PROGRESS_HEIGHT);
+    otherChildren << progress << nextButton << previousButton;
+    QRect screen = QApplication::desktop()->screenGeometry();
+    progress->setGeometry(0, 0, screen.width(), PROGRESS_HEIGHT);
+    nextButton->setGeometry(screen.width() - TranslucentButton::pixels, 0,
+        TranslucentButton::pixels, TranslucentButton::pixels);
+    previousButton->setGeometry(0, screen.height() - TranslucentButton::pixels,
+        TranslucentButton::pixels, TranslucentButton::pixels);
+
     fullScreenWindow->takeChildren(view, otherChildren);
     fullScreenWindow->showFullScreen();
     progress->flash();
+    nextButton->flash(1500);
+    previousButton->flash(1500);
 }
 
 void MainWindow::setCurrentBook(const QModelIndex &current)
@@ -229,7 +260,7 @@ void MainWindow::showSettings()
 void MainWindow::showInfo()
 {
     if (mCurrent.isValid()) {
-        (new InfoDialog(Library::instance()->book(mCurrent), this))->exec();
+        (new InfoDialog(Library::instance()->book(mCurrent), this, false))->exec();
     }
 }
 
@@ -314,13 +345,7 @@ void MainWindow::onPartLoadEnd(int index)
     }
 #ifdef Q_WS_MAEMO_5
     setAttribute(Qt::WA_Maemo5ShowProgressIndicator, false);
-    previousAction->setIcon(QIcon(enablePrevious?
-        ":/icons/previous.png" : ":/icons/previous-disabled.png"));
-    nextAction->setIcon(QIcon(enableNext?
-        ":/icons/next.png": ":/icons/next-disabled.png"));
 #endif // Q_WS_MAEMO_5
-    previousAction->setEnabled(enablePrevious);
-    nextAction->setEnabled(enableNext);
 }
 
 void MainWindow::onAddBookmark()
@@ -375,7 +400,24 @@ void MainWindow::timerEvent(QTimerEvent *event)
 
 void MainWindow::resizeEvent(QResizeEvent *e)
 {
+    Trace t("MainWindow::resizeEvent");
     progress->setGeometry(QRect(0, 0, e->size().width(), PROGRESS_HEIGHT));
+    qDebug() << "Toolbar height" << toolBar->height();
+#ifdef 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);
+#else
+    previousButton->setGeometry(0, e->size().height() - TranslucentButton::pixels,
+        TranslucentButton::pixels, TranslucentButton::pixels);
+    nextButton->setGeometry(e->size().width() - TranslucentButton::pixels,
+        toolBar->height(), TranslucentButton::pixels, TranslucentButton::pixels);
+#endif // Q_WS_MAEMO_5
+    qDebug() << "previousButton geometry" << previousButton->geometry();
+    previousButton->flash(1500);
+    nextButton->flash(1500);
     QMainWindow::resizeEvent(e);
 }
 
@@ -394,3 +436,18 @@ void MainWindow::about()
     aboutDialog->addWidget(label);
     aboutDialog->show();
 }
+
+
+void MainWindow::goToNextPage()
+{
+    nextButton->flash(1500);
+    previousButton->flash(1500);
+    view->goNextPage();
+}
+
+void MainWindow::goToPreviousPage()
+{
+    nextButton->flash(1500);
+    previousButton->flash(1500);
+    view->goPreviousPage();
+}