Fixing statistics
authorTimo Härkönen <timo@plip.(none)>
Sun, 26 Sep 2010 13:41:59 +0000 (16:41 +0300)
committerTimo Härkönen <timop.harkonen@gmail.com>
Sun, 26 Sep 2010 13:45:11 +0000 (16:45 +0300)
debian/changelog
src/defines.h
src/statistics.cpp
src/statistics.h
src/statisticsdialog.cpp
src/statisticsdialog.h

index bd7aadd..cf93316 100644 (file)
@@ -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.
 
   * 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
 
 
 impuzzle (0.6.2-1maemo0) unstable; urgency=low
 
index f58092f..b1b3d1f 100644 (file)
@@ -36,6 +36,6 @@
 #define STATS_FILE "imstats.dat"
 #define HOME_DIRECTORY ".impuzzle"
 
 #define STATS_FILE "imstats.dat"
 #define HOME_DIRECTORY ".impuzzle"
 
-#define IMPUZZLE_VERSION "0.6"
+#define IMPUZZLE_VERSION "0.7"
 
 #endif // DEFINES_H
 
 #endif // DEFINES_H
index eb5043e..c979da0 100644 (file)
@@ -6,6 +6,8 @@
 #include <QTextStream>
 #include <QStringList>
 
 #include <QTextStream>
 #include <QStringList>
 
+#include <QDebug>
+
 Statistics *Statistics::instance_ = 0;
 
 Statistics::Statistics(QObject *parent) :
 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) {
 {
     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;
     }
 
     return count;
@@ -66,7 +68,7 @@ int Statistics::maxMoves(Difficulty difficulty) const
 void Statistics::addNewScore(int moves, Difficulty difficulty)
 {
     if(moves_.count() >= difficulty) {
 void Statistics::addNewScore(int moves, Difficulty difficulty)
 {
     if(moves_.count() >= difficulty) {
-        moves_[difficulty] += (moves_[difficulty] + moves);
+        moves_[difficulty] += moves;
     }
 
     if(maxMoves_.count() >= difficulty) {
     }
 
     if(maxMoves_.count() >= difficulty) {
@@ -99,6 +101,7 @@ void Statistics::readFile()
                .arg(STATS_FILE));
 
     if(!file.exists()) {
                .arg(STATS_FILE));
 
     if(!file.exists()) {
+        qDebug() << __PRETTY_FUNCTION__ << "No settings file";
         return;
     }
 
         return;
     }
 
@@ -126,6 +129,15 @@ void Statistics::readFile()
 
 void Statistics::saveFile()
 {
 
 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)
     QFile file(QString("%1/%2/%3")
                .arg(QDir::homePath())
                .arg(HOME_DIRECTORY)
@@ -148,3 +160,18 @@ void Statistics::saveFile()
 
     file.close();
 }
 
     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();
+}
index f2fa380..8b2733c 100644 (file)
@@ -35,6 +35,8 @@ public slots:
 
     void saveFile();
 
 
     void saveFile();
 
+    void resetStatistics();
+
 private:
     Statistics(QObject *parent = 0);
 
 private:
     Statistics(QObject *parent = 0);
 
index 5cc927e..28ed7ba 100644 (file)
@@ -1,8 +1,10 @@
 #include "statisticsdialog.h"
 #include "statistics.h"
 
 #include "statisticsdialog.h"
 #include "statistics.h"
 
-#include <QFormLayout>
+#include <QVBoxLayout>
+#include <QHBoxLayout>
 #include <QLabel>
 #include <QLabel>
+#include <QPushButton>
 
 StatisticsDialog::StatisticsDialog(QWidget *parent) :
         QDialog(parent)
 
 StatisticsDialog::StatisticsDialog(QWidget *parent) :
         QDialog(parent)
@@ -10,9 +12,31 @@ StatisticsDialog::StatisticsDialog(QWidget *parent) :
     setModal(true);
     setWindowTitle(tr("Statistics"));
 
     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;
 
     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()->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);
     .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();
 }
 }
index 714a014..cabecdd 100644 (file)
@@ -5,6 +5,8 @@
 
 class QLabel;
 class QVBoxLayout;
 
 class QLabel;
 class QVBoxLayout;
+class QHBoxLayout;
+class QPushButton;
 
 class StatisticsDialog : public QDialog
 {
 
 class StatisticsDialog : public QDialog
 {
@@ -13,9 +15,16 @@ class StatisticsDialog : public QDialog
 public:
     StatisticsDialog(QWidget *parent = 0);
 
 public:
     StatisticsDialog(QWidget *parent = 0);
 
+private slots:
+    void updateContent();
+    void resetClicked();
+
 private:
     QLabel *label_;
 private:
     QLabel *label_;
+    QPushButton *resetButton_;
+    QPushButton *doneButton_;
     QVBoxLayout *mainLayout_;
     QVBoxLayout *mainLayout_;
+    QHBoxLayout *buttonLayout_;
 };
 
 #endif
 };
 
 #endif