Move settings to dedicated class.
[vexed] / mainwindow.cpp
index e4758b1..e80d336 100644 (file)
@@ -26,11 +26,7 @@ MainWindow::MainWindow(QWidget *parent) :
         }
 
         pack=0;
-        QSettings settings("paul","vexed");
-        settings.beginGroup("save");
-        QString savedTitle=settings.value("pack","Classic Levels").toString();
-        int savedLevelNo=settings.value("level",0).toInt();
-        loadPack(savedTitle,savedLevelNo);
+        loadPack(Settings().savedPackName(),Settings().savedLevelNo());
 }
 
 MainWindow::~MainWindow()
@@ -88,8 +84,10 @@ void MainWindow::loadLevel()
     PlayField *pf=pack->levelAt(levelNo);
     ui->playwidget->setPlayField(pf);
     QString title;
-    QTextStream(&title)<<pf->title<<" ("<<levelNo+1<<"/"<<pack->levels.size()<<")";
+    QTextStream(&title)<<pf->title<<" ("<<levelNo+1<<" of "<<pack->levels.size()<<")";
+    levelHiscore=Settings().getHighscore(pack->getTitle(),pf->title);
     ui->levelTitle->setText(title);
+    movesChanged(0);
 }
 
 void MainWindow::loadPack(const QString& packName, int levelToLoad)
@@ -107,38 +105,20 @@ void MainWindow::movesChanged(int moves)
     PlayField *pf=pack->levelAt(levelNo);
     const QString sol=pf->getSolution();
     int total=sol.length()/2;
-    int score=hiscore();
+    //int score=Settings().getHighscore(pack->getTitle(),pf->title);
     QString q;
     QTextStream movesBanner(&q);
     movesBanner<<moves<<"/"<<total;
-    if(score!=9999)
-        movesBanner<<"<b>"<<score<<"</b>";
-
+    if(levelHiscore!=HS::NO_SCORE)
+        movesBanner<<"(<b>"<<levelHiscore<<"</b>)";
     ui->moves->setText(q);
 }
 
 void MainWindow::solved(int moves)
 {
-    hiscore(moves);
-    loadNextLevel();
-}
-
-int MainWindow::hiscore(int score)
-{
-    QSettings settings("paul","vexed");
     PlayField *pf=pack->levelAt(levelNo);
-    QString title=pf->title;
-    settings.beginGroup("score");
-    settings.beginGroup(pack->getTitle());
-    QString saved=settings.value(title,"9999").toString();
-    bool ok;
-    int savedMoves=saved.toInt(&ok);
-    if(!ok) savedMoves=9999;
-    if(score == -1)
-        return savedMoves;
-    if(score<savedMoves)
-        settings.setValue(title,score);
-    return score;
+    Settings().saveHiscore(pack->getTitle(),pf->title, moves);
+    loadNextLevel();
 }
 
 void MainWindow::openPreferences()
@@ -160,8 +140,14 @@ void MainWindow::howToPlay()
 // TODO: save playfield (and undo?)
 void MainWindow::saveState()
 {
-    QSettings settings("paul","vexed");
-    settings.beginGroup("save");
-    settings.setValue("pack",pack->getTitle());
-    settings.setValue("level",levelNo);
+    Settings().saveGame(pack->getTitle(),levelNo);
+}
+
+void MainWindow::loadNextLevel()
+{
+    if(levelNo<(pack->size()-1))
+    {
+        levelNo++;
+        loadLevel();
+    }
 }