Fixing statistics
[impuzzle] / src / statisticsdialog.cpp
1 #include "statisticsdialog.h"
2 #include "statistics.h"
3
4 #include <QVBoxLayout>
5 #include <QHBoxLayout>
6 #include <QLabel>
7 #include <QPushButton>
8
9 StatisticsDialog::StatisticsDialog(QWidget *parent) :
10         QDialog(parent)
11 {
12     setModal(true);
13     setWindowTitle(tr("Statistics"));
14
15     resetButton_ = new QPushButton(tr("Reset"));
16     doneButton_ = new QPushButton(tr("Close"));
17
18     buttonLayout_ = new QHBoxLayout;
19     buttonLayout_->addStretch();
20     buttonLayout_->addWidget(resetButton_);
21     buttonLayout_->addWidget(doneButton_);
22
23     label_ = new QLabel;
24
25     updateContent();
26
27     mainLayout_ = new QVBoxLayout;
28     mainLayout_->addWidget(label_);
29     mainLayout_->addLayout(buttonLayout_);
30
31     setLayout(mainLayout_);
32
33     connect(resetButton_, SIGNAL(clicked()), this, SLOT(resetClicked()));
34     connect(doneButton_, SIGNAL(clicked()), this, SLOT(close()));
35 }
36
37 void StatisticsDialog::updateContent()
38 {
39     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")
40     .arg(QString::number(Statistics::instance()->gameCount(Statistics::easyDifficulty)))
41     .arg(QString::number(Statistics::instance()->minMoves(Statistics::easyDifficulty)))
42     .arg(QString::number(Statistics::instance()->averageMoves(Statistics::easyDifficulty)))
43     .arg(QString::number(Statistics::instance()->maxMoves(Statistics::easyDifficulty)))
44     .arg(QString::number(Statistics::instance()->gameCount(Statistics::hardDifficulty)))
45     .arg(QString::number(Statistics::instance()->minMoves(Statistics::hardDifficulty)))
46     .arg(QString::number(Statistics::instance()->averageMoves(Statistics::hardDifficulty)))
47     .arg(QString::number(Statistics::instance()->maxMoves(Statistics::hardDifficulty)));
48
49     label_->setText(txt);
50 }
51
52 void StatisticsDialog::resetClicked()
53 {
54     Statistics::instance()->resetStatistics();
55     updateContent();
56 }