-impuzzle (0.6.3-1maemo0) unstable; urgency=low
+impuzzle (0.7.0-1maemo0) unstable; urgency=low
* Show save game query when quitting if game is incomplete
* Changed new game dialog logic.
+ * Added game statistics
- -- Timo Härkönen <timop.harkonen@gmail.com> Thu, 2 Sep 2010 20:38:00 +0200
+ -- Timo Härkönen <timop.harkonen@gmail.com> Thu26 Sep 2010 15:10:00 +0200
impuzzle (0.6.2-1maemo0) unstable; urgency=low
#define STATS_FILE "imstats.dat"
#define HOME_DIRECTORY ".impuzzle"
-#define IMPUZZLE_VERSION "0.6"
+#define IMPUZZLE_VERSION "0.7"
#endif // DEFINES_H
#include <QTextStream>
#include <QStringList>
+#include <QDebug>
+
Statistics *Statistics::instance_ = 0;
Statistics::Statistics(QObject *parent) :
{
qreal count = 0.0;
if(games_.at(difficulty) > 0) {
- count = moves_.at(difficulty) / static_cast<qreal>(games_.at(difficulty));
+ count = (moves_.at(difficulty) / games_.at(difficulty));
}
return count;
void Statistics::addNewScore(int moves, Difficulty difficulty)
{
if(moves_.count() >= difficulty) {
- moves_[difficulty] += (moves_[difficulty] + moves);
+ moves_[difficulty] += moves;
}
if(maxMoves_.count() >= difficulty) {
.arg(STATS_FILE));
if(!file.exists()) {
+ qDebug() << __PRETTY_FUNCTION__ << "No settings file";
return;
}
void Statistics::saveFile()
{
+ QDir dir(QString("%1/%2")
+ .arg(QDir::homePath())
+ .arg(HOME_DIRECTORY));
+ if(!dir.exists()) {
+ dir.mkpath(QString("%1/%2")
+ .arg(QDir::homePath())
+ .arg(HOME_DIRECTORY));
+ }
+
QFile file(QString("%1/%2/%3")
.arg(QDir::homePath())
.arg(HOME_DIRECTORY)
file.close();
}
+
+void Statistics::resetStatistics()
+{
+ moves_.clear();
+ minMoves_.clear();
+ maxMoves_.clear();
+ games_.clear();
+
+ moves_ << 0 << 0;
+ minMoves_ << 0 << 0;
+ maxMoves_ << 0 << 0;
+ games_ << 0 << 0;
+
+ saveFile();
+}
void saveFile();
+ void resetStatistics();
+
private:
Statistics(QObject *parent = 0);
#include "statisticsdialog.h"
#include "statistics.h"
-#include <QFormLayout>
+#include <QVBoxLayout>
+#include <QHBoxLayout>
#include <QLabel>
+#include <QPushButton>
StatisticsDialog::StatisticsDialog(QWidget *parent) :
QDialog(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)))
.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();
}
class QLabel;
class QVBoxLayout;
+class QHBoxLayout;
+class QPushButton;
class StatisticsDialog : public QDialog
{
public:
StatisticsDialog(QWidget *parent = 0);
+private slots:
+ void updateContent();
+ void resetClicked();
+
private:
QLabel *label_;
+ QPushButton *resetButton_;
+ QPushButton *doneButton_;
QVBoxLayout *mainLayout_;
+ QHBoxLayout *buttonLayout_;
};
#endif