hildon fullscreen button is back
[colorflood] / colorflood / src / window.cpp
index 99fa9cc..ef4f63d 100644 (file)
@@ -15,6 +15,7 @@
 #include <QVBoxLayout>
 #include <QHBoxLayout>
 #include <QLabel>
+#include <QSettings>
 #include "window.hpp"
 #include "colorbuttons.hpp"
 #include "field.hpp"
@@ -24,10 +25,9 @@ Window::Window ()
     : QWidget()
 {
     setWindowTitle("Color Flood");
+    setWindowIcon(QIcon(":/images/icon_48x48.png"));
 
-    setWindowState(windowState() | Qt::WindowFullScreen);
-
-    //new FullScreenExitButton(this);
+    new FullScreenExitButton(this);
 
     int turns;
     field = new Field(this, &turns);
@@ -39,6 +39,7 @@ Window::Window ()
                      SLOT(flood(int)));
 
     turnsLabel = new QLabel(this);
+    turnsLabel->setAlignment(Qt::AlignRight);
 
     QObject::connect(field,
                      SIGNAL(turnsChanged(int)),
@@ -47,24 +48,53 @@ Window::Window ()
 
     updateTurns(turns);
 
+    QHBoxLayout *secondary = new QHBoxLayout;
+    QPushButton *toggleFS = new QPushButton(QPixmap("/usr/share/icons/hicolor/64x64/hildon/general_fullsize"), tr("Toggle fullscreen"), this);
+    QObject::connect(toggleFS, SIGNAL(pressed()), this, SLOT(toggleFullscreen()));
+    QPushButton *newGame = new QPushButton(tr("New game"), this);
+    QObject::connect(newGame, SIGNAL(pressed()), field, SLOT(randomize()));
+
+    secondary->addWidget(newGame);
+    secondary->addWidget(toggleFS);
+
     QVBoxLayout *vl = new QVBoxLayout;
+    vl->addWidget(colorButtons);
+    vl->setAlignment(colorButtons, Qt::AlignRight | Qt::AlignTop);
     vl->addWidget(turnsLabel);
-    vl->setAlignment(turnsLabel, Qt::AlignTop);
+    vl->setAlignment(turnsLabel, Qt::AlignRight | Qt::AlignTop);
+    vl->addLayout(secondary);
+    vl->setAlignment(secondary, Qt::AlignRight | Qt::AlignBottom);
 
     QHBoxLayout *hl = new QHBoxLayout;
-    hl->addWidget(colorButtons);
-    hl->setAlignment(colorButtons, Qt::AlignLeft);
     hl->addWidget(field);
-    hl->setAlignment(field, Qt::AlignRight);
+    hl->setAlignment(field, Qt::AlignLeft);
+    hl->addLayout(vl);
+
+    setLayout(hl);
+
+    QSettings settings;
 
-    vl->addLayout(hl);
-    setLayout(vl);
+    if (settings.value("fullscreen", true).toBool())
+        showFullScreen();
 }
 
 void Window::updateTurns (int turns)
 {
     /*: number of turns */
-    turnsLabel->setText(tr("Turns: %1/%2")
+    turnsLabel->setText(tr("<font size=\"16\">Turns: %1/%2</font>")
                         .arg(turns)
                         .arg(field->getNumTurnsOfSize(field->getSize())));
 }
+
+void Window::toggleFullscreen ()
+{
+    bool isFullscreen = windowState() & Qt::WindowFullScreen;
+
+    QSettings settings;
+    settings.setValue("fullscreen", !isFullscreen);
+
+    if (isFullscreen)
+        showNormal();
+    else
+        showFullScreen();
+}