#include "fullscreenwindow.h"
#include "translucentbutton.h"
+#include "progress.h"
+#include "trace.h"
+#include "settings.h"
+#include "platform.h"
-FullScreenWindow::FullScreenWindow(QWidget *parent): QMainWindow(parent), child(0)
+static const int MARGIN = 9;
+
+FullScreenWindow::FullScreenWindow(QWidget *parent):
+ AdopterWindow(parent), progress(0), previousButton(0), nextButton(0)
{
+ TRACE;
Q_ASSERT(parent);
#ifdef Q_WS_MAEMO_5
setAttribute(Qt::WA_Maemo5StackedWindow, true);
setAttribute(Qt::WA_Maemo5NonComposited, true);
#endif // Q_WS_MAEMO_5
+#ifndef Q_OS_SYMBIAN
+ toolBar->hide();
+#endif
QFrame *frame = new QFrame(this);
QVBoxLayout *layout = new QVBoxLayout(frame);
layout->setMargin(0);
frame->setLayout(layout);
setCentralWidget(frame);
- restoreButton = new TranslucentButton("view-fullscreen", this);
+ restoreButton = new TranslucentButton("view-normal", this);
+ QRect screen = QApplication::desktop()->screenGeometry();
+ restoreButton->setGeometry(
+ screen.width() - TranslucentButton::pixels - MARGIN,
+ screen.height() - TranslucentButton::pixels - MARGIN,
+ TranslucentButton::pixels,
+ TranslucentButton::pixels);
+ connect(restoreButton, SIGNAL(triggered()), this, SIGNAL(restore()));
}
void FullScreenWindow::showFullScreen()
{
-#ifdef Q_WS_MAEMO_5
- setAttribute(Qt::WA_Maemo5PortraitOrientation, parentWidget()->
- testAttribute(Qt::WA_Maemo5PortraitOrientation));
- setAttribute(Qt::WA_Maemo5LandscapeOrientation, parentWidget()->
- testAttribute(Qt::WA_Maemo5LandscapeOrientation));
-#endif // Q_WS_MAEMO_5
- QWidget::showFullScreen();
- restoreButton->flash();
+ Trace t("FullScreenWindow::showFullScreen");
+ AdopterWindow::showFullScreen();
+ placeChildren();
}
-void FullScreenWindow::MOUSE_ACTIVATE_EVENT(QMouseEvent *event)
+void FullScreenWindow::resizeEvent(QResizeEvent *e)
{
- if (fullScreenZone().contains(event->x(), event->y())) {
- emit restore();
- }
- QMainWindow::MOUSE_ACTIVATE_EVENT(event);
+ Trace t("FullScreenWindow::resizeEvent");
+ QTimer::singleShot(100, this, SLOT(placeChildren()));
+ AdopterWindow::resizeEvent(e);
}
-QRect FullScreenWindow::fullScreenZone() const
+void FullScreenWindow::takeChildren(BookView *view,
+ Progress *prog,
+ TranslucentButton *previous,
+ TranslucentButton *next)
{
- return QRect(width() / 2 - 45, height() - 104, 95, 95);
+ TRACE;
+ progress = prog;
+ previousButton = previous;
+ nextButton = next;
+ QList<QWidget *> otherChildren;
+ otherChildren << progress << previousButton << nextButton;
+ AdopterWindow::takeChildren(view, otherChildren);
}
-void FullScreenWindow::resizeEvent(QResizeEvent *e)
+void FullScreenWindow::placeChildren()
{
- restoreButton->setGeometry(fullScreenZone());
- QMainWindow::resizeEvent(e);
-}
+ Trace t("FullScreenWindow::placeChildren");
-void FullScreenWindow::takeChild(QWidget *c)
-{
- leaveChild();
- if (c) {
- child = c;
- child->setParent(centralWidget());
- centralWidget()->layout()->addWidget(child);
+ QRect screen = QApplication::desktop()->screenGeometry();
+ int w = screen.width();
+ int h = screen.height();
+
+#ifdef Q_WS_MAEMO_5
+ // Hack: FullScreenWindow can lose orientation on Maemo...
+ QString orientation = Settings::instance()->value("orientation",
+ Platform::instance()->defaultOrientation()).toString();
+ if (((orientation == "portrait") && (w > h)) ||
+ ((orientation == "landscape") && (w < h))) {
+ int tmp = w;
+ w = h;
+ h = tmp;
}
-}
+#endif // Q_WS_MAEMO_5
-void FullScreenWindow::leaveChild()
-{
- if (child) {
- centralWidget()->layout()->removeWidget(child);
- child = 0;
+ restoreButton->setGeometry(
+ w - TranslucentButton::pixels - MARGIN,
+ h - TranslucentButton::pixels - MARGIN,
+ TranslucentButton::pixels,
+ TranslucentButton::pixels);
+
+ if (hasChild(progress)) {
+ progress->setGeometry(0, h - progress->thickness(),
+ w, progress->thickness());
+ qDebug() << "Screen (FullScreenWindow::resizeEvent)" << w << "x" << h;
+ qDebug() << "Progress (FullScreenWindow::resizeEvent)"
+ << progress->geometry();
+ }
+ if (hasChild(previousButton)) {
+ previousButton->setGeometry(
+ MARGIN,
+ h - TranslucentButton::pixels - MARGIN,
+ TranslucentButton::pixels,
+ TranslucentButton::pixels);
}
+ if (hasChild(nextButton)) {
+ nextButton->setGeometry(
+ w - TranslucentButton::pixels - MARGIN,
+ MARGIN,
+ TranslucentButton::pixels,
+ TranslucentButton::pixels);
+ }
+
+ restoreButton->flash(3000);
}