[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdegames
From:       Stefan Majewsky <majewsky () gmx ! net>
Date:       2012-02-21 15:58:15
Message-ID: 20120221155815.B5218AC895 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1281422 by majewsky:

Add KScoreDialog::initFromDifficulty method to integrate with KgDifficulty.

That's just a quick hack; I plan to rewrite the scoring anyway, but I
want to port the other games to KgDifficulty without having to copy this
ugly blob of code anywhere.

 M  +2 -23     kdiamond/src/mainwindow.cpp  
 M  +19 -0     libkdegames/highscore/kscoredialog.cpp  
 M  +13 -0     libkdegames/highscore/kscoredialog.h  


--- trunk/KDE/kdegames/kdiamond/src/mainwindow.cpp #1281421:1281422
@@ -142,20 +142,9 @@
 	scoreInfo[KScoreDialog::Custom1] = m_gameState->mode() == KDiamond::UntimedGame ? i18n("Untimed") : i18n("Timed");
 	//report score
 	QPointer<KScoreDialog> dialog = new KScoreDialog(KScoreDialog::Name | KScoreDialog::Score, this);
-
-	QMap<QByteArray, QString> localizedLevelStrings;
-	QMap<int, QByteArray> levelWeights;
-	foreach (const KgDifficultyLevel* level, m_difficulty->levels())
-	{
-		localizedLevelStrings.insert(level->key(), level->title());
-		levelWeights.insert(level->hardness(), level->key());
-	}
-	dialog->addLocalizedConfigGroupNames(localizedLevelStrings);
-	dialog->setConfigGroupWeights(levelWeights);
 	dialog->addField(KScoreDialog::Custom1, i18n("Mode"), "mode");
-	dialog->setConfigGroup(m_difficulty->currentLevel()->title());
+	dialog->initFromDifficulty(m_difficulty);
 	dialog->addScore(scoreInfo);
-	dialog->exec();
 	delete dialog;
 }
 
@@ -167,18 +156,8 @@
 		actionCollection()->action("game_pause")->setChecked(true);
 	//show dialog
 	QPointer<KScoreDialog> dialog = new KScoreDialog(KScoreDialog::Name | KScoreDialog::Score, this);
-
-	QMap<QByteArray, QString> localizedLevelStrings;
-	QMap<int, QByteArray> levelWeights;
-	foreach (const KgDifficultyLevel* level, m_difficulty->levels())
-	{
-		localizedLevelStrings.insert(level->key(), level->title());
-		levelWeights.insert(level->hardness(), level->key());
-	}
-	dialog->addLocalizedConfigGroupNames(localizedLevelStrings);
-	dialog->setConfigGroupWeights(levelWeights);
 	dialog->addField(KScoreDialog::Custom1, i18n("Mode"), "mode");
-	dialog->setConfigGroup(m_difficulty->currentLevel()->title());
+	dialog->initFromDifficulty(m_difficulty);
 	dialog->exec();
 	delete dialog;
 }
--- trunk/KDE/kdegames/libkdegames/highscore/kscoredialog.cpp #1281421:1281422
@@ -25,6 +25,7 @@
 
 #include "kscoredialog.h"
 #include "khighscore.h"
+#include "../kgdifficulty.h"
 
 #include <KConfig>
 #include <KUser>
@@ -178,6 +179,24 @@
     }
 }
 
+void KScoreDialog::initFromDifficulty(const KgDifficulty* diff, bool doSetConfigGroup)
+{
+    QMap<QByteArray, QString> localizedLevelStrings;
+    QMap<int, QByteArray> levelWeights;
+    foreach (const KgDifficultyLevel* level, diff->levels())
+    {
+        localizedLevelStrings.insert(level->key(), level->title());
+        levelWeights.insert(level->hardness(), level->key());
+    }
+    addLocalizedConfigGroupNames(localizedLevelStrings);
+    setConfigGroupWeights(levelWeights);
+    if (doSetConfigGroup)
+    {
+        const KgDifficultyLevel* curLvl = diff->currentLevel();
+        setConfigGroup(qMakePair(curLvl->key(), curLvl->title()));
+    }
+}
+
 void KScoreDialog::setHiddenConfigGroups(const QList<QByteArray>& hiddenGroups)
 {
     d->hiddenGroups = hiddenGroups;
--- trunk/KDE/kdegames/libkdegames/highscore/kscoredialog.h #1281421:1281422
@@ -34,6 +34,7 @@
 #include <kdialog.h>
 
 class KLocalizedString;
+class KgDifficulty;
 
 /**
  * \class KScoreDialog kscoredialog.h <KScoreDialog>
@@ -250,6 +251,18 @@
          */
         int highScore();
 
+        /**
+         * Assume that config groups (incl. current selection) are equal to
+         * difficulty levels, and initialize them. This is usually equal to the
+         * following code using KGameDifficulty:
+         * @code
+         * addLocalizedConfigGroupNames(KGameDifficulty::localizedLevelStrings());
+         * setConfigGroupWeights(KGameDifficulty::levelWeights());
+         * setConfigGroup(KGameDifficulty::localizedLevelString());
+         * @endcode
+         */
+        void initFromDifficulty(const KgDifficulty* difficulty, bool setConfigGroup = true);
+
         ///Display the dialog as non-modal
         virtual void show();
         ///Display the dialog as modal
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic