first commit
[flip] / src / mainwidget.cpp
diff --git a/src/mainwidget.cpp b/src/mainwidget.cpp
new file mode 100644 (file)
index 0000000..7c6b5f0
--- /dev/null
@@ -0,0 +1,79 @@
+#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()));
+}