AdopterWindow to inherit from MainBase.
authorAkos Polster <akos@pipacs.com>
Sun, 5 Dec 2010 01:24:47 +0000 (02:24 +0100)
committerAkos Polster <akos@pipacs.com>
Sun, 5 Dec 2010 01:24:47 +0000 (02:24 +0100)
adopterwindow.cpp
adopterwindow.h
widgets/mainbase.cpp
widgets/mainbase.h

index 8d8e6d0..0ed8670 100644 (file)
 #include "progress.h"
 #include "translucentbutton.h"
 
-AdopterWindow::AdopterWindow(QWidget *parent):
-    QMainWindow(parent), bookView(0), grabbingVolumeKeys(false), toolBar(0),
-    progress(0), previousButton(0), nextButton(0)
+AdopterWindow::AdopterWindow(QWidget *parent): MainBase(parent), bookView(0),
+    grabbingVolumeKeys(false), progress(0), previousButton(0), nextButton(0)
 {
     TRACE;
 
-#ifdef Q_WS_MAEMO_5
-    setAttribute(Qt::WA_Maemo5StackedWindow, true);
-#endif
-
-    QFrame *frame = new QFrame(this);
-    QVBoxLayout *layout = new QVBoxLayout(frame);
-    layout->setMargin(0);
-    frame->setLayout(layout);
-    //frame->show();
-    setCentralWidget(frame);
-
-#ifdef Q_OS_SYMBIAN
-    QAction *closeAction = new QAction(parent? tr("Back"): tr("Exit"), this);
-    closeAction->setSoftKeyRole(QAction::NegativeSoftKey);
-    connect(closeAction, SIGNAL(triggered()), this, SLOT(close()));
-    QMainWindow::addAction(closeAction);
-#else
-    // Tool bar
-    setUnifiedTitleAndToolBarOnMac(true);
-    toolBar = addToolBar("");
-    toolBar->setMovable(false);
-    toolBar->setFloatable(false);
-    toolBar->toggleViewAction()->setVisible(false);
-#if defined(Q_WS_X11) && !defined(Q_WS_MAEMO_5)
-    toolBar->setIconSize(QSize(42, 42));
-#endif
-#endif // Q_OS_SYMBIAN
-
     // Monitor settings
     connect(Settings::instance(), SIGNAL(valueChanged(const QString &)),
             this, SLOT(onSettingsChanged(const QString &)));
@@ -108,76 +79,6 @@ bool AdopterWindow::hasBookView()
     return bookView != 0;
 }
 
-void AdopterWindow::show()
-{
-    Trace t("AdopterWindow::show");
-#ifdef Q_OS_SYMBIAN
-    foreach (QWidget *w, QApplication::allWidgets()) {
-        w->setContextMenuPolicy(Qt::NoContextMenu);
-    }
-    showMaximized();
-#else
-    QMainWindow::show();
-#endif
-}
-
-QAction *AdopterWindow::addToolBarAction(QObject *receiver,
-                                         const char *member,
-                                         const QString &iconName,
-                                         const QString &text,
-                                         bool important)
-{
-    TRACE;
-    qDebug() << "icon" << iconName << "text" << text;
-    QAction *action;
-#ifndef Q_OS_SYMBIAN
-    Q_UNUSED(important);
-    action = toolBar->addAction(QIcon(Platform::instance()->icon(iconName)),
-                                text, receiver, member);
-#else
-    if (!toolBar && important) {
-        // Create tool bar if needed
-        toolBar = new QToolBar("", this);
-        // toolBar->setFixedHeight(63);
-        toolBar->setStyleSheet("margin:0; border:0; padding:0");
-        toolBar->setSizePolicy(QSizePolicy::MinimumExpanding,
-                               QSizePolicy::Maximum);
-        addToolBar(Qt::BottomToolBarArea, toolBar);
-    }
-    if (important) {
-        // Add tool bar action
-        QPushButton *button = new QPushButton(this);
-        button->setIconSize(QSize(60, 60));
-        button->setFixedSize(89, 60);
-        button->setIcon(QIcon(Platform::instance()->icon(iconName)));
-        button->setSizePolicy(QSizePolicy::MinimumExpanding,
-                              QSizePolicy::Maximum);
-        connect(button, SIGNAL(clicked()), receiver, member);
-        toolBar->addWidget(button);
-    }
-    // Add menu action, too
-    action = new QAction(text, this);
-    menuBar()->addAction(action);
-    connect(action, SIGNAL(triggered()), receiver, member);
-#endif
-
-#if defined Q_WS_MAEMO_5
-    action->setText("");
-    action->setToolTip("");
-#endif
-
-    return action;
-}
-
-void AdopterWindow::addToolBarSpace()
-{
-#ifndef Q_OS_SYMBIAN
-    QFrame *frame = new QFrame(toolBar);
-    frame->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
-    toolBar->addWidget(frame);
-#endif
-}
-
 void AdopterWindow::grabVolumeKeys(bool grab)
 {
     TRACE;
@@ -220,41 +121,11 @@ void AdopterWindow::doGrabVolumeKeys(bool grab)
 
 #endif // Q_WS_MAEMO_5
 
-#ifdef Q_OS_SYMBIAN
-
-void AdopterWindow::updateToolBar()
-{
-    TRACE;
-    if (toolBar) {
-        QRect geometry = QApplication::desktop()->geometry();
-        bool isPortrait = geometry.width() < geometry.height();
-        bool isToolBarHidden = toolBar->isHidden();
-        if (isPortrait && isToolBarHidden) {
-            qDebug() << "Show tool bar";
-            toolBar->setVisible(true);
-        } else if (!isPortrait && !isToolBarHidden) {
-            qDebug() << "Hide tool bar";
-            toolBar->setVisible(false);
-        }
-    }
-}
-
-bool AdopterWindow::portrait()
-{
-    QRect geometry = QApplication::desktop()->geometry();
-    return geometry.width() < geometry.height();
-}
-
-#endif // Q_OS_SYMBIAN
-
 void AdopterWindow::showEvent(QShowEvent *e)
 {
     Trace t("AdopterWindow::showEvent");
 
-#ifdef Q_OS_SYMBIAN
-    updateToolBar();
-#endif
-    QMainWindow::showEvent(e);
+    MainBase::showEvent(e);
 #if defined(Q_WS_MAEMO_5)
     doGrabVolumeKeys(grabbingVolumeKeys);
 #endif
@@ -264,10 +135,7 @@ void AdopterWindow::showEvent(QShowEvent *e)
 void AdopterWindow::resizeEvent(QResizeEvent *event)
 {
     Trace t("AdopterWindow::resizeEvent");
-#ifdef Q_OS_SYMBIAN
-    updateToolBar();
-#endif
-    QMainWindow::resizeEvent(event);
+    MainBase::resizeEvent(event);
     placeDecorations();
     if (bookView) {
         QTimer::singleShot(110, bookView, SLOT(restoreLastBookmark()));
@@ -280,7 +148,7 @@ void AdopterWindow::closeEvent(QCloseEvent *event)
     if (bookView) {
         bookView->setLastBookmark();
     }
-    QMainWindow::closeEvent(event);
+    MainBase::closeEvent(event);
 }
 
 void AdopterWindow::leaveEvent(QEvent *event)
@@ -289,7 +157,7 @@ void AdopterWindow::leaveEvent(QEvent *event)
     if (bookView) {
         bookView->setLastBookmark();
     }
-    QMainWindow::leaveEvent(event);
+    MainBase::leaveEvent(event);
 }
 
 void AdopterWindow::keyPressEvent(QKeyEvent *event)
@@ -313,7 +181,7 @@ void AdopterWindow::keyPressEvent(QKeyEvent *event)
     default:
         ;
     }
-    QMainWindow::keyPressEvent(event);
+    MainBase::keyPressEvent(event);
 }
 
 void AdopterWindow::onSettingsChanged(const QString &key)
@@ -333,7 +201,7 @@ void AdopterWindow::placeDecorations()
         return;
     }
 
-    int toolBarHeight = 0;
+    int extraHeight = 0;
 
     QRect geo = bookView->geometry();
     qDebug() << "bookView:" << geo;
@@ -341,8 +209,8 @@ void AdopterWindow::placeDecorations()
 #ifdef Q_OS_SYMBIAN
     // Work around Symbian bug: If tool bar is hidden, increase bottom
     // decorator widgets' Y coordinates by the tool bar's height
-    if (toolBar && toolBar->isHidden()) {
-        toolBarHeight = toolBar->height();
+    if (isToolBarHidden()) {
+        extraHeight = toolBarHeight();
     }
 
     // Work around another Symbian bug: When returning from full screen mode
@@ -350,18 +218,17 @@ void AdopterWindow::placeDecorations()
     // My apologies for this kludge
     if (geo.height() == 288) {
         qDebug() << "Adjusting bottom Y";
-        toolBarHeight -= 288 - 223;
+        extraHeight -= 288 - 223;
     }
 #endif // Q_OS_SYMBIAN
 
     progress->setGeometry(geo.x(),
-        geo.y() + geo.height() - progress->thickness() + toolBarHeight,
+        geo.y() + geo.height() - progress->thickness() + extraHeight,
         geo.width(), progress->thickness());
     previousButton->setGeometry(geo.x(),
-        geo.y() + geo.height() - TranslucentButton::pixels + toolBarHeight,
+        geo.y() + geo.height() - TranslucentButton::pixels + extraHeight,
         TranslucentButton::pixels, TranslucentButton::pixels);
-    nextButton->setGeometry(
-        geo.x() + geo.width() - TranslucentButton::pixels,
+    nextButton->setGeometry(geo.x() + geo.width() - TranslucentButton::pixels,
         geo.y(), TranslucentButton::pixels, TranslucentButton::pixels);
     progress->flash();
     previousButton->flash();
@@ -386,4 +253,3 @@ void AdopterWindow::onPageDown()
         setEnabled(true);
     }
 }
-
index eca7669..7420d2c 100644 (file)
@@ -2,13 +2,11 @@
 #define ADOPTERWINDOW_H
 
 #include <QList>
-#include "mainwindow.h"
+#include "mainbase.h"
 
 class QWidget;
-class QToolBar;
 class QAction;
 class BookView;
-class QVBoxLayout;
 class Progress;
 class TranslucentButton;
 
@@ -16,7 +14,7 @@ class TranslucentButton;
  * A toplevel window that can adopt a BookView and other children.
  * On Maemo, it can also grab the volume keys.
  */
-class AdopterWindow: public MainWindow
+class AdopterWindow: public MainBase
 {
     Q_OBJECT
 
@@ -33,26 +31,6 @@ public:
     /** Return true if the book view is currently adopted. */
     bool hasBookView();
 
-    /**
-     * Add action that is visible on the tool bar.
-     * @param   receiver    Object receiving "activated" signal.
-     * @param   slot        Slot receiving "activated" signal.
-     * @param   iconName    Base name of tool bar icon in resource file.
-     * @param   text        Tool bar item text.
-     * @param   important   On Symbian, only "important" actions are added to
-     *                      the tool bar. All actions are added to the Options
-     *                      menu though.
-     */
-    QAction *addToolBarAction(QObject *receiver, const char *slot,
-                              const QString &iconName, const QString &text,
-                              bool important = false);
-
-    /** Add spacing to tool bar. */
-    void addToolBarSpace();
-
-    /** Show window. */
-    void show();
-
     /** If grab is true, volume keys will navigate the book view. */
     void grabVolumeKeys(bool grab);
 
@@ -86,22 +64,11 @@ protected:
     /** Handle leave event: Save reading position. */
     void leaveEvent(QEvent *event);
 
-#ifdef Q_OS_SYMBIAN
-    /** Update toolbar visibility. */
-    void updateToolBar();
-
-    /** Return true in portrait mode. */
-    bool portrait();
-#endif // Q_OS_SYMBIAN
-
 #ifdef Q_WS_MAEMO_5
     /** Actually grab the volume keys. */
     void doGrabVolumeKeys(bool grab);
 #endif // Q_WS_MAEMO_5
 
-    /** Hide tool bar if visible. */
-    void hideToolBar();
-
 protected slots:
     void placeDecorations();
     void onPageDown();
@@ -110,7 +77,6 @@ protected slots:
 private:
     BookView *bookView;     /**< Book view widget. */
     bool grabbingVolumeKeys;/**< True, if volume keys should be grabbed. */
-    QToolBar *toolBar;      /**< Tool bar. */
     Progress *progress;     /**< Reading progress indicator. */
     TranslucentButton *previousButton;  /**< Previous page indicator. */
     TranslucentButton *nextButton;      /**< Next page indicator. */
index f3d176d..1869d14 100755 (executable)
@@ -1,10 +1,10 @@
 #include <QtGui>\r
 \r
-#include "mainwindow.h"\r
+#include "mainbase.h"\r
 #include "trace.h"\r
 #include "platform.h"\r
 \r
-MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), toolBar(0)\r
+MainBase::MainBase(QWidget *parent): QMainWindow(parent), toolBar(0)\r
 {\r
     TRACE;\r
 \r
@@ -37,11 +37,11 @@ MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), toolBar(0)
 #endif // Q_OS_SYMBIAN\r
 }\r
 \r
-QAction *MainWindow::addToolBarAction(QObject *receiver,\r
-                                      const char *member,\r
-                                      const QString &iconName,\r
-                                      const QString &text,\r
-                                      bool important)\r
+QAction *MainBase::addToolBarAction(QObject *receiver,\r
+                                    const char *member,\r
+                                    const QString &iconName,\r
+                                    const QString &text,\r
+                                    bool important)\r
 {\r
     TRACE;\r
     qDebug() << "icon" << iconName << "text" << text;\r
@@ -83,7 +83,7 @@ QAction *MainWindow::addToolBarAction(QObject *receiver,
     return action;\r
 }\r
 \r
-void MainWindow::addToolBarSpace()\r
+void MainBase::addToolBarSpace()\r
 {\r
 #ifndef Q_OS_SYMBIAN\r
     QFrame *frame = new QFrame(toolBar);\r
@@ -92,10 +92,9 @@ void MainWindow::addToolBarSpace()
 #endif\r
 }\r
 \r
-#ifdef Q_OS_SYMBIAN\r
-\r
-void MainWindow::updateToolBar()\r
+void MainBase::updateToolBar()\r
 {\r
+#ifdef Q_OS_SYMBIAN\r
     TRACE;\r
     if (toolBar) {\r
         QRect geometry = QApplication::desktop()->geometry();\r
@@ -109,38 +108,49 @@ void MainWindow::updateToolBar()
             toolBar->setVisible(false);\r
         }\r
     }\r
-}\r
-\r
-bool MainWindow::portrait()\r
-{\r
-    QRect geometry = QApplication::desktop()->geometry();\r
-    return geometry.width() < geometry.height();\r
-}\r
-\r
 #endif // Q_OS_SYMBIAN\r
+}\r
 \r
-void MainWindow::showEvent(QShowEvent *e)\r
+void MainBase::showEvent(QShowEvent *event)\r
 {\r
-    Trace t("MainWindow::showEvent");\r
-\r
-#ifdef Q_OS_SYMBIAN\r
+    Trace t("MainBase::showEvent");\r
     updateToolBar();\r
-#endif\r
-    QMainWindow::showEvent(e);\r
+    QMainWindow::showEvent(event);\r
 }\r
 \r
-void MainWindow::resizeEvent(QResizeEvent *event)\r
+void MainBase::resizeEvent(QResizeEvent *event)\r
 {\r
-    Trace t("MainWindow::resizeEvent");\r
-#ifdef Q_OS_SYMBIAN\r
+    Trace t("MainBase::resizeEvent");\r
     updateToolBar();\r
-#endif\r
     QMainWindow::resizeEvent(event);\r
 }\r
 \r
-void MainWindow::hideToolBar()\r
+void MainBase::hideToolBar()\r
 {\r
     if (toolBar) {\r
         toolBar->hide();\r
     }\r
 }\r
+\r
+bool MainBase::isToolBarHidden()\r
+{\r
+    return toolBar && toolBar->isHidden();\r
+}\r
+\r
+int MainBase::toolBarHeight()\r
+{\r
+    return toolBar? toolBar->height(): 0;\r
+}\r
+\r
+void MainBase::show()\r
+{\r
+    Trace t("MainBase::show");\r
+#ifdef Q_OS_SYMBIAN\r
+    foreach (QWidget *w, QApplication::allWidgets()) {\r
+        w->setContextMenuPolicy(Qt::NoContextMenu);\r
+    }\r
+    showMaximized();\r
+#else\r
+    QMainWindow::show();\r
+#endif\r
+}\r
index 62b1ba3..3c72999 100755 (executable)
@@ -1,5 +1,5 @@
-#ifndef MAINWINDOW_H\r
-#define MAINWINDOW_H\r
+#ifndef MAINBASE_H\r
+#define MAINBASE_H\r
 \r
 #include <QMainWindow>\r
 \r
@@ -8,12 +8,12 @@ class QToolBar;
 /**\r
  * Main window with a toolbar.\r
  */\r
-class MainWindow: public QMainWindow\r
+class MainBase: public QMainWindow\r
 {\r
     Q_OBJECT\r
 \r
 public:\r
-    explicit MainWindow(QWidget *parent = 0);\r
+    explicit MainBase(QWidget *parent = 0);\r
 \r
     /**\r
      * Add action that is visible on the tool bar.\r
@@ -32,9 +32,8 @@ public:
     /** Add spacing to tool bar. */\r
     void addToolBarSpace();\r
 \r
-signals:\r
-\r
 public slots:\r
+    void show();\r
 \r
 protected:\r
     /** Handle resize event: Manage tool bar visibility. */\r
@@ -43,19 +42,23 @@ protected:
     /** Handle show event: Manage tool bar visibility. */\r
     void showEvent(QShowEvent *event);\r
 \r
-#ifdef Q_OS_SYMBIAN\r
-    /** Update toolbar visibility. */\r
+    /**\r
+     * Update toolb ar visibility.\r
+     * On Symbian, the tool bar is not visible in landscape mode.\r
+     */\r
     void updateToolBar();\r
 \r
-    /** Return true in portrait mode. */\r
-    bool portrait();\r
-#endif // Q_OS_SYMBIAN\r
-\r
     /** Hide tool bar if visible. */\r
     void hideToolBar();\r
 \r
+    /** Return true if the tool bar is present and hidden. */\r
+    bool isToolBarHidden();\r
+\r
+    /** Return the height of the tool bar (or 0 if there is no tool bar). */\r
+    int toolBarHeight();\r
+\r
 private:\r
     QToolBar *toolBar;      /**< Tool bar. */\r
 };\r
 \r
-#endif // MAINWINDOW_H\r
+#endif // MAINBASE_H\r