--- /dev/null
+#include <QtGui/QGraphicsView>
+#include <QtGui/QHBoxLayout>
+#include <QtGui/QLabel>
+#include <QtGui/QLineEdit>
+#include <QtGui/QMessageBox>
+#include <QtGui/QPushButton>
+#include <QtGui/QVBoxLayout>
+#include "flipscene.h"
+#include "mainwidget.h"
+
+class MainWidgetPrivate
+{
+public:
+ MainWidgetPrivate(MainWidget *widget) : widget_(widget)
+ {
+ setupUi();
+ }
+
+ FlipScene *scene_;
+ MainWidget *widget_;
+ QGraphicsView *graphicsView_;
+ QLineEdit *columnEdit_;
+ QLineEdit *rowEdit_;
+ QPushButton *startButton_;
+
+private:
+ void setupUi()
+ {
+ widget_->setWindowTitle(QObject::tr("Flip"));
+
+ QHBoxLayout *layout = new QHBoxLayout(widget_);
+ layout->setAlignment(Qt::AlignCenter);
+
+ QVBoxLayout *leftLayout = new QVBoxLayout;
+ layout->addLayout(leftLayout);
+ leftLayout->addWidget(new QLabel(QObject::tr("Columns (2-9):")));
+ columnEdit_ = new QLineEdit;
+ columnEdit_->setInputMask("D");
+ leftLayout->addWidget(columnEdit_);
+ leftLayout->addWidget(new QLabel(QObject::tr("Rows (2-9):")));
+ rowEdit_ = new QLineEdit;
+ rowEdit_->setInputMask("D");
+ leftLayout->addWidget(rowEdit_);
+ startButton_ = new QPushButton(QObject::tr("Start"));
+ leftLayout->addWidget(startButton_);
+
+ scene_ = new FlipScene(widget_);
+ graphicsView_ = new QGraphicsView(scene_);
+ layout->addWidget(graphicsView_);
+ }
+};
+
+MainWidget::MainWidget(QWidget *parent) :
+ QWidget(parent),
+ d_(new MainWidgetPrivate(this))
+{
+ connect(d_->startButton_, SIGNAL(clicked()), this, SLOT(startGame()));
+ connect(d_->scene_, SIGNAL(win(int)), this, SLOT(winGame(int)));
+
+ d_->columnEdit_->setText("5");
+ d_->rowEdit_->setText("5");
+ startGame();
+}
+
+MainWidget::~MainWidget()
+{
+ delete d_;
+}
+
+void MainWidget::startGame()
+{
+ d_->scene_->setBoard(d_->columnEdit_->text().toInt(), d_->rowEdit_->text().toInt());
+}
+
+void MainWidget::winGame(int clicks)
+{
+ QMessageBox::information(NULL, tr("You Win!"),
+ tr(QString().sprintf("Congratulations! You made it with only %d clicks!", clicks).toLocal8Bit().data()));
+}