From c00edf9e5e082637542f0c79cdbee7a4fe08fbed Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Thu, 21 Oct 2021 10:32:10 +0200 Subject: vsession icon: Match agains OS display name too --- src/vsession.cpp | 22 ++++++++++++++-------- src/vsession.h | 4 ++++ 2 files changed, 18 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/vsession.cpp b/src/vsession.cpp index b61c759..a7d86e0 100644 --- a/src/vsession.cpp +++ b/src/vsession.cpp @@ -104,27 +104,33 @@ QIcon VSession::icon() const { return res_icon; } // Everything failed, try to guess the OS - QString os(this->os().toLower()); - os = os.replace(cleanNameRegex, QString()); - if (!os.isEmpty()) { + QString os1(this->os().toLower()); + QString os2(this->osDisplayName().toLower()); + os1 = os1.replace(cleanNameRegex, QString()); + os2 = os2.replace(cleanNameRegex, QString()); + if (!os1.isEmpty() || !os2.isEmpty()) { // Now try known good OS names via .startsWith() for (const QString& str : directOsNames) { - if (os.startsWith(str)) + if (os1.startsWith(str) || os2.startsWith(str)) return iconHolder->getIcon(str); } // Fuzzy matching via regex for (const IconMap& map : iconMapping) { - if (map.expr.match(os).hasMatch()) + if (map.expr.match(os1).hasMatch() || map.expr.match(os2).hasMatch()) return iconHolder->getIcon(map.icon); } // Running out of ideas... - if (os.startsWith(QStringLiteral("win"))) + if (os2.startsWith(QStringLiteral("win"))) return iconHolder->getIcon(QStringLiteral("windows")); - if (os.contains(QStringLiteral("linux"))) + if (os2.contains(QStringLiteral("linux"))) return iconHolder->getIcon(QStringLiteral("linux")); } // Fallback to generic virtualizer icon (if found) - return iconHolder->getIcon(virtualizer()); + QIcon ret = iconHolder->getIcon(virtualizer()); + if (ret.isNull()) { + ret = QIcon(QPixmap(64, 64)); + } + return ret; } QString VSession::toXml() const { diff --git a/src/vsession.h b/src/vsession.h index e571805..af01230 100644 --- a/src/vsession.h +++ b/src/vsession.h @@ -47,6 +47,10 @@ class VSession : public Session { return getAttribute(QStringLiteral("os")); } + QString osDisplayName() const { + return getAttribute(QStringLiteral("os_name")); + } + QString uuid() const { return getAttribute(QStringLiteral("uuid")); } -- cgit v1.2.3-55-g7522