#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 &)));
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;
#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
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()));
if (bookView) {
bookView->setLastBookmark();
}
- QMainWindow::closeEvent(event);
+ MainBase::closeEvent(event);
}
void AdopterWindow::leaveEvent(QEvent *event)
if (bookView) {
bookView->setLastBookmark();
}
- QMainWindow::leaveEvent(event);
+ MainBase::leaveEvent(event);
}
void AdopterWindow::keyPressEvent(QKeyEvent *event)
default:
;
}
- QMainWindow::keyPressEvent(event);
+ MainBase::keyPressEvent(event);
}
void AdopterWindow::onSettingsChanged(const QString &key)
return;
}
- int toolBarHeight = 0;
+ int extraHeight = 0;
QRect geo = bookView->geometry();
qDebug() << "bookView:" << geo;
#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
// 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();
setEnabled(true);
}
}
-
#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;
* 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
/** 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);
/** 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();
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. */
#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
#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
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
#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
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