From 6d055b2c2f2bfce35a108a3340d3c98f4b18a6fb Mon Sep 17 00:00:00 2001
From: Fabian Reister <fabian.reister@kit.edu>
Date: Wed, 1 Feb 2023 17:29:38 +0100
Subject: [PATCH] sorting of packages and applications

---
 .../ScenarioManager/ScenarioManagerWidgetController.cpp    | 7 ++++++-
 .../ScenarioManager/gui/applicationdatabaseview.cpp        | 3 ++-
 .../ScenarioManager/gui/applicationdatabaseview.h          | 1 -
 .../gui/filterabletreemodelsortfilterproxymodel.h          | 1 -
 4 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/source/ArmarXGui/gui-plugins/ScenarioManager/ScenarioManagerWidgetController.cpp b/source/ArmarXGui/gui-plugins/ScenarioManager/ScenarioManagerWidgetController.cpp
index ed215e65..ffd369da 100644
--- a/source/ArmarXGui/gui-plugins/ScenarioManager/ScenarioManagerWidgetController.cpp
+++ b/source/ArmarXGui/gui-plugins/ScenarioManager/ScenarioManagerWidgetController.cpp
@@ -33,6 +33,7 @@
 #include <QMetaType>
 #include <ArmarXGui/applications/ArmarXGui/ArmarXMainWindow.h>
 #include <QToolTip>
+#include <SimoxUtility/algorithm/string/string_tools.h>
 
 using namespace armarx;
 using namespace ScenarioManager;
@@ -72,7 +73,11 @@ void ScenarioManagerWidgetController::autoDiscoverArmarXPackages()
 {
     QSettings autosettings("KIT", "ScenarioManager");
 
-    const auto packagesStd = CMakePackageFinder::FindAllArmarXSourcePackages();
+    auto packagesStd = CMakePackageFinder::FindAllArmarXSourcePackages();
+    std::sort(packagesStd.begin(), packagesStd.end(),
+    [](const std::string& lhs, const std::string& rhs) -> bool {
+        return simox::alg::to_lower(lhs) < simox::alg::to_lower(rhs);
+    });
 
     QStringList packages;
     ARMARX_INFO << "Discovered: ";
diff --git a/source/ArmarXGui/gui-plugins/ScenarioManager/gui/applicationdatabaseview.cpp b/source/ArmarXGui/gui-plugins/ScenarioManager/gui/applicationdatabaseview.cpp
index 8c1fc45e..9b1c70f8 100644
--- a/source/ArmarXGui/gui-plugins/ScenarioManager/gui/applicationdatabaseview.cpp
+++ b/source/ArmarXGui/gui-plugins/ScenarioManager/gui/applicationdatabaseview.cpp
@@ -37,6 +37,8 @@ ApplicationDatabaseView::ApplicationDatabaseView(QWidget* parent) :
     ui->setupUi(this);
 
     ui->treeView->setModel(model.get());
+
+    ui->treeView->header()->setSortIndicator(0, Qt::SortOrder::AscendingOrder);
     ui->treeView->setSortingEnabled(true);
 
     ui->treeView->setSelectionMode(QAbstractItemView::ExtendedSelection);
@@ -78,4 +80,3 @@ std::mutex& ApplicationDatabaseView::getMutex()
 {
     return mutex;
 }
-
diff --git a/source/ArmarXGui/gui-plugins/ScenarioManager/gui/applicationdatabaseview.h b/source/ArmarXGui/gui-plugins/ScenarioManager/gui/applicationdatabaseview.h
index 25720df8..ba359a38 100644
--- a/source/ArmarXGui/gui-plugins/ScenarioManager/gui/applicationdatabaseview.h
+++ b/source/ArmarXGui/gui-plugins/ScenarioManager/gui/applicationdatabaseview.h
@@ -80,4 +80,3 @@ private:
 
     std::mutex mutex;
 };
-
diff --git a/source/ArmarXGui/gui-plugins/ScenarioManager/gui/filterabletreemodelsortfilterproxymodel.h b/source/ArmarXGui/gui-plugins/ScenarioManager/gui/filterabletreemodelsortfilterproxymodel.h
index f1e62a4f..71558f40 100644
--- a/source/ArmarXGui/gui-plugins/ScenarioManager/gui/filterabletreemodelsortfilterproxymodel.h
+++ b/source/ArmarXGui/gui-plugins/ScenarioManager/gui/filterabletreemodelsortfilterproxymodel.h
@@ -63,4 +63,3 @@ public:
 };
 
 using FilterableTreeModelSortFilterProxyModelPtr = std::shared_ptr<FilterableTreeModelSortFilterProxyModel>;
-
-- 
GitLab