diff options
author | Konstantin Tokarev <annulen@yandex.ru> | 2012-04-16 20:49:39 +0400 |
---|---|---|
committer | Daniel Teske <daniel.teske@nokia.com> | 2012-04-17 09:22:14 +0200 |
commit | 27809bd74893de0869b77fc80e13b5c30c7096e9 (patch) | |
tree | 31fe2807388bc7f51dfab63224e5f705315809b4 | |
parent | 06010713e2ffb9ef4529056e7b3748ec1abfc5c9 (diff) | |
download | qt-creator-27809bd74893de0869b77fc80e13b5c30c7096e9.tar.gz |
Sort projects by displayName in ProjectListWidget.
Change-Id: I5dac445c8868125ec7773479726d065f47e3c48f
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
-rw-r--r-- | src/plugins/projectexplorer/miniprojecttargetselector.cpp | 18 | ||||
-rw-r--r-- | src/plugins/projectexplorer/projectmodels.cpp | 33 | ||||
-rw-r--r-- | src/plugins/projectexplorer/projectmodels.h | 2 |
3 files changed, 36 insertions, 17 deletions
diff --git a/src/plugins/projectexplorer/miniprojecttargetselector.cpp b/src/plugins/projectexplorer/miniprojecttargetselector.cpp index 46d71950ba..ae47eba002 100644 --- a/src/plugins/projectexplorer/miniprojecttargetselector.cpp +++ b/src/plugins/projectexplorer/miniprojecttargetselector.cpp @@ -47,6 +47,7 @@ #include <projectexplorer/project.h> #include <projectexplorer/buildconfiguration.h> #include <projectexplorer/deployconfiguration.h> +#include <projectexplorer/projectmodels.h> #include <projectexplorer/runconfiguration.h> #include <QTimer> @@ -82,6 +83,15 @@ static QIcon createCenteredIcon(const QIcon &icon, const QIcon &overlay) using namespace ProjectExplorer; using namespace ProjectExplorer::Internal; +static bool projectLesserThan(Project *p1, Project *p2) +{ + int result = caseFriendlyCompare(p1->displayName(), p2->displayName()); + if (result != 0) + return result < 0; + else + return p1 < p2; +} + //////// // TargetSelectorDelegate //////// @@ -242,9 +252,10 @@ void ProjectListWidget::addProject(Project *project) int pos = 0; for (int i=0; i < count(); ++i) { Project *p = item(i)->data(Qt::UserRole).value<Project*>(); - QString itemSortName = fullName(p); - if (itemSortName > sortName) + if (projectLesserThan(project, p)) { pos = i; + break; + } } bool useFullName = false; @@ -319,8 +330,7 @@ void ProjectListWidget::projectDisplayNameChanged(Project *project) int pos = count(); for (int i = 0; i < count(); ++i) { Project *p = item(i)->data(Qt::UserRole).value<Project*>(); - QString itemSortName = fullName(p); - if (itemSortName > sortName) { + if (projectLesserThan(project, p)) { pos = i; break; } diff --git a/src/plugins/projectexplorer/projectmodels.cpp b/src/plugins/projectexplorer/projectmodels.cpp index 633a7fdaa6..9eeb72aeca 100644 --- a/src/plugins/projectexplorer/projectmodels.cpp +++ b/src/plugins/projectexplorer/projectmodels.cpp @@ -54,14 +54,6 @@ namespace { // sorting helper function -int fileNameCompare(const QString &a, const QString &b) -{ - int result = a.compare(b, Qt::CaseInsensitive); - if (result != 0) - return result; - return a.compare(b, Qt::CaseSensitive); -} - bool sortNodes(Node *n1, Node *n2) { // Ordering is: project files, project, folder, file @@ -77,7 +69,7 @@ bool sortNodes(Node *n1, Node *n2) const QString fileName1 = QFileInfo(file1->path()).fileName(); const QString fileName2 = QFileInfo(file2->path()).fileName(); - int result = fileNameCompare(fileName1, fileName2); + int result = caseFriendlyCompare(fileName1, fileName2); if (result != 0) return result < 0; else @@ -97,7 +89,7 @@ bool sortNodes(Node *n1, Node *n2) ProjectNode *project1 = static_cast<ProjectNode*>(n1); ProjectNode *project2 = static_cast<ProjectNode*>(n2); - int result = fileNameCompare(project1->displayName(), project2->displayName()); + int result = caseFriendlyCompare(project1->displayName(), project2->displayName()); if (result != 0) return result < 0; else @@ -114,7 +106,7 @@ bool sortNodes(Node *n1, Node *n2) FolderNode *folder1 = static_cast<FolderNode*>(n1); FolderNode *folder2 = static_cast<FolderNode*>(n2); - int result = fileNameCompare(folder1->path(), folder2->path()); + int result = caseFriendlyCompare(folder1->path(), folder2->path()); if (result != 0) return result < 0; else @@ -134,11 +126,11 @@ bool sortNodes(Node *n1, Node *n2) const QString fileName1 = QFileInfo(filePath1).fileName(); const QString fileName2 = QFileInfo(filePath2).fileName(); - int result = fileNameCompare(fileName1, fileName2); + int result = caseFriendlyCompare(fileName1, fileName2); if (result != 0) { return result < 0; // sort by filename } else { - result = fileNameCompare(filePath1, filePath2); + result = caseFriendlyCompare(filePath1, filePath2); if (result != 0) { return result < 0; // sort by filepath } else { @@ -825,3 +817,18 @@ void FlatModel::filesRemoved() { // Do nothing } + +namespace ProjectExplorer { +namespace Internal { + +int caseFriendlyCompare(const QString &a, const QString &b) +{ + int result = a.compare(b, Qt::CaseInsensitive); + if (result != 0) + return result; + return a.compare(b, Qt::CaseSensitive); +} + +} +} + diff --git a/src/plugins/projectexplorer/projectmodels.h b/src/plugins/projectexplorer/projectmodels.h index 24bf4f6deb..f0277f6534 100644 --- a/src/plugins/projectexplorer/projectmodels.h +++ b/src/plugins/projectexplorer/projectmodels.h @@ -122,6 +122,8 @@ private: friend class FlatModelManager; }; +int caseFriendlyCompare(const QString &a, const QString &b); + } // namespace Internal } // namespace ProjectExplorer |