Fixing statistics
[impuzzle] / src / statisticsdialog.cpp
index 5cc927e..28ed7ba 100644 (file)
@@ -1,8 +1,10 @@
 #include "statisticsdialog.h"
 #include "statistics.h"
 
-#include <QFormLayout>
+#include <QVBoxLayout>
+#include <QHBoxLayout>
 #include <QLabel>
+#include <QPushButton>
 
 StatisticsDialog::StatisticsDialog(QWidget *parent) :
         QDialog(parent)
@@ -10,9 +12,31 @@ StatisticsDialog::StatisticsDialog(QWidget *parent) :
     setModal(true);
     setWindowTitle(tr("Statistics"));
 
+    resetButton_ = new QPushButton(tr("Reset"));
+    doneButton_ = new QPushButton(tr("Close"));
+
+    buttonLayout_ = new QHBoxLayout;
+    buttonLayout_->addStretch();
+    buttonLayout_->addWidget(resetButton_);
+    buttonLayout_->addWidget(doneButton_);
+
     label_ = new QLabel;
 
-    QString txt = QString("Easy:\nGames\t%1\nBest\t%2\nAvg\t%3\nWorst\t%4\n\nHard:\nGames\t%5\nBest\t%6\nAvg\t%7\nWorst\t%8")
+    updateContent();
+
+    mainLayout_ = new QVBoxLayout;
+    mainLayout_->addWidget(label_);
+    mainLayout_->addLayout(buttonLayout_);
+
+    setLayout(mainLayout_);
+
+    connect(resetButton_, SIGNAL(clicked()), this, SLOT(resetClicked()));
+    connect(doneButton_, SIGNAL(clicked()), this, SLOT(close()));
+}
+
+void StatisticsDialog::updateContent()
+{
+    QString txt = QString("\tEasy\tHard\nGames\t%1\t%5\nBest\t%2\t%6\nAvg\t%3\t%7\nWorst\t%4\t%8\n")
     .arg(QString::number(Statistics::instance()->gameCount(Statistics::easyDifficulty)))
     .arg(QString::number(Statistics::instance()->minMoves(Statistics::easyDifficulty)))
     .arg(QString::number(Statistics::instance()->averageMoves(Statistics::easyDifficulty)))
@@ -23,9 +47,10 @@ StatisticsDialog::StatisticsDialog(QWidget *parent) :
     .arg(QString::number(Statistics::instance()->maxMoves(Statistics::hardDifficulty)));
 
     label_->setText(txt);
+}
 
-    mainLayout_ = new QVBoxLayout;
-    mainLayout_->addWidget(label_);
-
-    setLayout(mainLayout_);
+void StatisticsDialog::resetClicked()
+{
+    Statistics::instance()->resetStatistics();
+    updateContent();
 }