From a9a50faa23a0a3655665f976ad0da9f94c475975 Mon Sep 17 00:00:00 2001
From: Alessandro Portale <alessandro.portale@nokia.com>
Date: Thu, 8 Mar 2012 19:51:33 +0100
Subject: [PATCH] Project wizard summary page: Order the file list

Alphabetically, and files in sub-directories first

Change-Id: I65a29af7a952e8c3aa63cbac637c6a9395b9a846
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@nokia.com>
---
 .../projectexplorer/projectwizardpage.cpp     | 26 ++++++++++++++++---
 1 file changed, 22 insertions(+), 4 deletions(-)

diff --git a/src/plugins/projectexplorer/projectwizardpage.cpp b/src/plugins/projectexplorer/projectwizardpage.cpp
index 846d732b817..913e21d7ddb 100644
--- a/src/plugins/projectexplorer/projectwizardpage.cpp
+++ b/src/plugins/projectexplorer/projectwizardpage.cpp
@@ -135,6 +135,18 @@ void ProjectWizardPage::changeEvent(QEvent *e)
     }
 }
 
+// Alphabetically, and files in sub-directories first
+static bool generatedFilePathLessThan(const QString &filePath1, const QString &filePath2)
+{
+    const bool filePath1HasDir = filePath1.contains(QLatin1Char('/'));
+    const bool filePath2HasDir = filePath2.contains(QLatin1Char('/'));
+
+    if (filePath1HasDir == filePath2HasDir)
+        return filePath1 < filePath2;
+    else
+        return filePath1HasDir;
+}
+
 void ProjectWizardPage::setFilesDisplay(const QString &commonPath, const QStringList &files)
 {
     QString fileMessage;
@@ -143,15 +155,21 @@ void ProjectWizardPage::setFilesDisplay(const QString &commonPath, const QString
         str << "<qt>"
             << (commonPath.isEmpty() ? tr("Files to be added:") : tr("Files to be added in"))
             << "<pre>";
+
+        QStringList formattedFiles;
         if (commonPath.isEmpty()) {
-            foreach(const QString &f, files)
-                str << QDir::toNativeSeparators(f) << '\n';
+            formattedFiles = files;
         } else {
             str << QDir::toNativeSeparators(commonPath) << ":\n\n";
             const int prefixSize = commonPath.size() + 1;
-            foreach(const QString &f, files)
-                str << QDir::toNativeSeparators(f.right(f.size() - prefixSize)) << '\n';
+            foreach (const QString &f, files)
+                formattedFiles.append(f.right(f.size() - prefixSize));
         }
+        qSort(formattedFiles.begin(), formattedFiles.end(), generatedFilePathLessThan);
+
+        foreach (const QString &f, formattedFiles)
+            str << QDir::toNativeSeparators(f) << '\n';
+
         str << "</pre>";
     }
     m_ui->filesLabel->setText(fileMessage);
-- 
GitLab