diff --git a/app/backend/computermanager.cpp b/app/backend/computermanager.cpp index 6157df23..91b15d11 100644 --- a/app/backend/computermanager.cpp +++ b/app/backend/computermanager.cpp @@ -42,6 +42,7 @@ NvComputer::NvComputer(QSettings& settings) this->appList.append(app); } settings.endArray(); + sortAppList(); this->activeAddress = nullptr; this->currentGameId = 0; @@ -79,6 +80,13 @@ NvComputer::serialize(QSettings& settings) } } +void NvComputer::sortAppList() +{ + std::stable_sort(appList.begin(), appList.end(), [](const NvApp& app1, const NvApp& app2) { + return app1.name.toLower() < app2.name.toLower(); + }); +} + NvComputer::NvComputer(QString address, QString serverInfo) { this->name = NvHTTP::getXmlString(serverInfo, "hostname"); diff --git a/app/backend/computermanager.h b/app/backend/computermanager.h index 4343658f..ae3bf3b3 100644 --- a/app/backend/computermanager.h +++ b/app/backend/computermanager.h @@ -13,6 +13,11 @@ class NvComputer { + friend class PcMonitorThread; + +private: + void sortAppList(); + public: explicit NvComputer(QString address, QString serverInfo); @@ -126,6 +131,7 @@ private: QWriteLocker lock(&m_Computer->lock); if (m_Computer->appList != appList) { m_Computer->appList = appList; + m_Computer->sortAppList(); changed = true; }