From: Timo Härkönen Date: Sun, 26 Sep 2010 13:41:59 +0000 (+0300) Subject: Fixing statistics X-Git-Tag: 0.7.2~5 X-Git-Url: http://git.maemo.org/git/?p=impuzzle;a=commitdiff_plain;h=197445a53351096fc3d487eccfaaaa2fda10abc1;hp=58ec0e286982cd15beff65303797420c2f913fcb Fixing statistics --- diff --git a/debian/changelog b/debian/changelog index bd7aadd..cf93316 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,10 @@ -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 Thu, 2 Sep 2010 20:38:00 +0200 + -- Timo Härkönen Thu26 Sep 2010 15:10:00 +0200 impuzzle (0.6.2-1maemo0) unstable; urgency=low diff --git a/src/defines.h b/src/defines.h index f58092f..b1b3d1f 100644 --- a/src/defines.h +++ b/src/defines.h @@ -36,6 +36,6 @@ #define STATS_FILE "imstats.dat" #define HOME_DIRECTORY ".impuzzle" -#define IMPUZZLE_VERSION "0.6" +#define IMPUZZLE_VERSION "0.7" #endif // DEFINES_H diff --git a/src/statistics.cpp b/src/statistics.cpp index eb5043e..c979da0 100644 --- a/src/statistics.cpp +++ b/src/statistics.cpp @@ -6,6 +6,8 @@ #include #include +#include + Statistics *Statistics::instance_ = 0; Statistics::Statistics(QObject *parent) : @@ -47,7 +49,7 @@ qreal Statistics::averageMoves(Difficulty difficulty) const { qreal count = 0.0; if(games_.at(difficulty) > 0) { - count = moves_.at(difficulty) / static_cast(games_.at(difficulty)); + count = (moves_.at(difficulty) / games_.at(difficulty)); } return count; @@ -66,7 +68,7 @@ int Statistics::maxMoves(Difficulty difficulty) const void Statistics::addNewScore(int moves, Difficulty difficulty) { if(moves_.count() >= difficulty) { - moves_[difficulty] += (moves_[difficulty] + moves); + moves_[difficulty] += moves; } if(maxMoves_.count() >= difficulty) { @@ -99,6 +101,7 @@ void Statistics::readFile() .arg(STATS_FILE)); if(!file.exists()) { + qDebug() << __PRETTY_FUNCTION__ << "No settings file"; return; } @@ -126,6 +129,15 @@ void Statistics::readFile() 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) @@ -148,3 +160,18 @@ void Statistics::saveFile() 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(); +} diff --git a/src/statistics.h b/src/statistics.h index f2fa380..8b2733c 100644 --- a/src/statistics.h +++ b/src/statistics.h @@ -35,6 +35,8 @@ public slots: void saveFile(); + void resetStatistics(); + private: Statistics(QObject *parent = 0); diff --git a/src/statisticsdialog.cpp b/src/statisticsdialog.cpp index 5cc927e..28ed7ba 100644 --- a/src/statisticsdialog.cpp +++ b/src/statisticsdialog.cpp @@ -1,8 +1,10 @@ #include "statisticsdialog.h" #include "statistics.h" -#include +#include +#include #include +#include 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(); } diff --git a/src/statisticsdialog.h b/src/statisticsdialog.h index 714a014..cabecdd 100644 --- a/src/statisticsdialog.h +++ b/src/statisticsdialog.h @@ -5,6 +5,8 @@ class QLabel; class QVBoxLayout; +class QHBoxLayout; +class QPushButton; class StatisticsDialog : public QDialog { @@ -13,9 +15,16 @@ 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