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

List:       kde-commits
Subject:    [ksudoku/frameworks] src/gui: Cleanup KSudoku::updateShapesList() to remove manual path fiddling.
From:       Johan Ouwerkerk <null () kde ! org>
Date:       2017-04-30 15:51:30
Message-ID: E1d4r8E-0003kS-Tk () code ! kde ! org
[Download RAW message or body]

Git commit 52bdce6a0d93b21becad5011ffa27b7a5af617b3 by Johan Ouwerkerk.
Committed on 30/04/2017 at 15:51.
Pushed by ouwerkerk into branch 'frameworks'.

Cleanup KSudoku::updateShapesList() to remove manual path fiddling.

Summary: This change resolves Phabricator/Maniphest task T5977.

Test Plan:
Compiled & tested I could still generate custom game variant puzzles: Mathdoku 4x4, \
Killer 9x9.

Also, to confirm the duplicate filtering is redundant I ran ksudoku with a \
deliberately messed up `XDG_DATA_DIRS` environment variable: ```
XDG_DATA_DIRS="$XDG_DATA_DIRS:$PWD/kde-5/share;$PWD/kde-5/share;$PWD/kde-5/share" \
./kde-5/bin/ksudoku ```

(Which still lists each game variant type only once, meaning the filtering was in \
fact redundant.)

Reviewers: #kde_games, ltoscano

Reviewed By: ltoscano

Subscribers: ltoscano, #kde_games

Maniphest Tasks: T5977

Differential Revision: https://phabricator.kde.org/D5669

M  +5    -10   src/gui/ksudoku.cpp

https://commits.kde.org/ksudoku/52bdce6a0d93b21becad5011ffa27b7a5af617b3

diff --git a/src/gui/ksudoku.cpp b/src/gui/ksudoku.cpp
index e54b849..058dd54 100644
--- a/src/gui/ksudoku.cpp
+++ b/src/gui/ksudoku.cpp
@@ -187,14 +187,10 @@ void KSudoku::updateShapesList()
 
 	const QStringList gamevariantdirs = \
QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, "ksudoku", \
QStandardPaths::LocateDirectory);  
-	QStringList filepaths;
+	QFileInfoList filepaths;
 	for (const QString& gamevariantdir : gamevariantdirs) {
-		const QStringList fileNames = QDir(gamevariantdir).entryList(QStringList() << \
                QStringLiteral("*.desktop"));
-		for (const QString &file : fileNames) {
-			if (!filepaths.contains(gamevariantdir + '/' + file)) {
-				filepaths.append(gamevariantdir + '/' + file);
-			}
-		}
+		const auto fileNames = QDir(gamevariantdir).entryInfoList(QStringList() << \
QStringLiteral("*.desktop"), QDir::Files | QDir::Readable | QDir::NoDotAndDotDot); \
+		filepaths.append(fileNames);  }
 
 	QString variantName;
@@ -202,10 +198,9 @@ void KSudoku::updateShapesList()
 	QString variantDataPath;
 	QString variantIcon;
 
-	for (const QString &filepath : qAsConst(filepaths)) {
-		const QFileInfo configFileInfo(filepath);
+	for (const QFileInfo &configFileInfo : qAsConst(filepaths)) {
 		const QDir variantDir = configFileInfo.dir();
-		KConfig variantConfig(filepath, KConfig::SimpleConfig);
+		KConfig variantConfig(configFileInfo.filePath(), KConfig::SimpleConfig);
 		KConfigGroup group = variantConfig.group ("KSudokuVariant");
 
 		variantName = group.readEntry("Name", i18n("Missing Variant Name")); // \
Translated.


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

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