From kde-commits Tue Feb 21 15:58:15 2012 From: Stefan Majewsky Date: Tue, 21 Feb 2012 15:58:15 +0000 To: kde-commits Subject: KDE/kdegames Message-Id: <20120221155815.B5218AC895 () svn ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=132983992320336 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 dialog = new KScoreDialog(KScoreDialog::Name | KScoreDialog::Score, this); - - QMap localizedLevelStrings; - QMap 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 dialog = new KScoreDialog(KScoreDialog::Name | KScoreDialog::Score, this); - - QMap localizedLevelStrings; - QMap 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 #include @@ -178,6 +179,24 @@ } } +void KScoreDialog::initFromDifficulty(const KgDifficulty* diff, bool doSetConfigGroup) +{ + QMap localizedLevelStrings; + QMap 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& hiddenGroups) { d->hiddenGroups = hiddenGroups; --- trunk/KDE/kdegames/libkdegames/highscore/kscoredialog.h #1281421:1281422 @@ -34,6 +34,7 @@ #include class KLocalizedString; +class KgDifficulty; /** * \class KScoreDialog kscoredialog.h @@ -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