Fix forward navigation control on Linux.
[dorian] / fullscreenwindow.cpp
index 507600b..145b425 100644 (file)
@@ -2,18 +2,20 @@
 
 #include "fullscreenwindow.h"
 #include "translucentbutton.h"
+#include "progress.h"
 #include "trace.h"
+#include "settings.h"
+#include "platform.h"
+
+static const int MARGIN = 9;
 
 FullScreenWindow::FullScreenWindow(QWidget *parent): AdopterWindow(parent)
 {
     TRACE;
-    Q_ASSERT(parent);
-#ifdef Q_WS_MAEMO_5
+
+#if defined(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);
@@ -22,32 +24,60 @@ FullScreenWindow::FullScreenWindow(QWidget *parent): AdopterWindow(parent)
     setCentralWidget(frame);
     restoreButton = new TranslucentButton("view-normal", this);
     QRect screen = QApplication::desktop()->screenGeometry();
-    restoreButton->setGeometry((screen.width() - TranslucentButton::pixels) / 2,
-        screen.height() - TranslucentButton::pixels - 9,
-        TranslucentButton::pixels, TranslucentButton::pixels);
+    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()
+void FullScreenWindow::showEvent(QShowEvent *e)
 {
-    TRACE;
-#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(3000);
+    Trace t("FullScreenWindow::showEvent");
+    qDebug() << "Softkeys visible?"
+             << (windowFlags() & Qt::WindowSoftkeysVisibleHint);
+    placeChildren();
+    AdopterWindow::showEvent(e);
 }
 
 void FullScreenWindow::resizeEvent(QResizeEvent *e)
 {
-    TRACE;
-    Q_UNUSED(e);
-    restoreButton->raise();
+    Trace t("FullScreenWindow::resizeEvent");
+    placeChildren();
+    AdopterWindow::resizeEvent(e);
+}
+
+void FullScreenWindow::closeEvent(QCloseEvent *e)
+{
+    Trace t("FullscreenWindow::closeEvent");
+    AdopterWindow::closeEvent(e);
+}
+
+void FullScreenWindow::placeChildren()
+{
+    Trace t("FullScreenWindow::placeChildren");
+
     QRect screen = QApplication::desktop()->screenGeometry();
-    restoreButton->setGeometry(screen.width() - TranslucentButton::pixels - 9,
-        screen.height() - TranslucentButton::pixels - 9,
-        TranslucentButton::pixels, TranslucentButton::pixels);
+    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
+
+    restoreButton->setGeometry(
+        w - TranslucentButton::pixels - MARGIN,
+        h - TranslucentButton::pixels - MARGIN,
+        TranslucentButton::pixels,
+        TranslucentButton::pixels);
+    restoreButton->flash(3000);
 }