From 37b86c89d1db1dc89ff9e6c272d1124678902947 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Tue, 13 Mar 2018 15:54:27 +0100 Subject: [PATCH] Utils: Introduce case friendly comparison function to stringutils Use this operator in the miniprojecttargetselector as well as the projectconfigurationmodel. This should unify the sorting of build-/deploy- and runconfigurations in various places in Creator. Task-number: QTCREATORBUG-20023 Change-Id: I7aed2ebcb9d65244395d68b7dc5da599d6503962 Reviewed-by: hjk --- src/libs/utils/stringutils.cpp | 8 ++++++++ src/libs/utils/stringutils.h | 3 +++ .../projectexplorer/miniprojecttargetselector.cpp | 1 + .../projectexplorer/projectconfigurationmodel.cpp | 3 ++- src/plugins/projectexplorer/projectmodels.cpp | 13 +------------ src/plugins/projectexplorer/projectmodels.h | 2 -- 6 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/libs/utils/stringutils.cpp b/src/libs/utils/stringutils.cpp index 1ba85944479..9b2cb294e41 100644 --- a/src/libs/utils/stringutils.cpp +++ b/src/libs/utils/stringutils.cpp @@ -367,4 +367,12 @@ QTCREATOR_UTILS_EXPORT int parseUsedPortFromNetstatOutput(const QByteArray &line return port; } +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); +} + } // namespace Utils diff --git a/src/libs/utils/stringutils.h b/src/libs/utils/stringutils.h index 1ec3a0aeecc..b97063609c9 100644 --- a/src/libs/utils/stringutils.h +++ b/src/libs/utils/stringutils.h @@ -56,6 +56,9 @@ QTCREATOR_UTILS_EXPORT QString stripAccelerator(const QString &text); QTCREATOR_UTILS_EXPORT bool readMultiLineString(const QJsonValue &value, QString *out); +// Compare case insensitive and use case sensitive comparison in case of that being equal. +QTCREATOR_UTILS_EXPORT int caseFriendlyCompare(const QString &a, const QString &b); + class QTCREATOR_UTILS_EXPORT AbstractMacroExpander { public: diff --git a/src/plugins/projectexplorer/miniprojecttargetselector.cpp b/src/plugins/projectexplorer/miniprojecttargetselector.cpp index 293791011cd..f3abfffcdb9 100644 --- a/src/plugins/projectexplorer/miniprojecttargetselector.cpp +++ b/src/plugins/projectexplorer/miniprojecttargetselector.cpp @@ -39,6 +39,7 @@ #include "target.h" #include +#include #include #include #include diff --git a/src/plugins/projectexplorer/projectconfigurationmodel.cpp b/src/plugins/projectexplorer/projectconfigurationmodel.cpp index f27f1bf55b3..111d5a0745d 100644 --- a/src/plugins/projectexplorer/projectconfigurationmodel.cpp +++ b/src/plugins/projectexplorer/projectconfigurationmodel.cpp @@ -32,6 +32,7 @@ #include "projectconfiguration.h" #include +#include using namespace ProjectExplorer; @@ -51,7 +52,7 @@ namespace { const auto ComparisonOperator = [](const ProjectConfiguration *a, const ProjectConfiguration *b) { - return a->displayName() < b->displayName(); + return Utils::caseFriendlyCompare(a->displayName(), b->displayName()) < 0; }; } // namespace diff --git a/src/plugins/projectexplorer/projectmodels.cpp b/src/plugins/projectexplorer/projectmodels.cpp index bbecd98b808..a6512d0b3bc 100644 --- a/src/plugins/projectexplorer/projectmodels.cpp +++ b/src/plugins/projectexplorer/projectmodels.cpp @@ -35,6 +35,7 @@ #include #include #include +#include #include #include @@ -451,17 +452,5 @@ const QLoggingCategory &FlatModel::logger() return logger; } -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); -} - -} - } // namespace ProjectExplorer diff --git a/src/plugins/projectexplorer/projectmodels.h b/src/plugins/projectexplorer/projectmodels.h index 80fdbbc36db..b842f3d5ec4 100644 --- a/src/plugins/projectexplorer/projectmodels.h +++ b/src/plugins/projectexplorer/projectmodels.h @@ -111,7 +111,5 @@ private: QSet m_toExpand; }; -int caseFriendlyCompare(const QString &a, const QString &b); - } // namespace Internal } // namespace ProjectExplorer