From 8839d02e786f5ece0e1a502980fcaada6594e859 Mon Sep 17 00:00:00 2001 From: Nippy Date: Thu, 17 Sep 2026 16:14:58 +0200 Subject: desktop new/fix --- .../desktopselect/DesktopBackend.cpp | 56 ++++++++++++++++++++-- 1 file changed, 52 insertions(+), 4 deletions(-) (limited to 'raveos-calamares-module/desktopselect/DesktopBackend.cpp') diff --git a/raveos-calamares-module/desktopselect/DesktopBackend.cpp b/raveos-calamares-module/desktopselect/DesktopBackend.cpp index 9fd1cc2..c5c2fec 100644 --- a/raveos-calamares-module/desktopselect/DesktopBackend.cpp +++ b/raveos-calamares-module/desktopselect/DesktopBackend.cpp @@ -1,23 +1,71 @@ #include "DesktopBackend.h" +#include +#include + DesktopBackend::DesktopBackend(QObject* parent) : QObject(parent) + , m_locale(QLocale::system().name()) {} void DesktopBackend::setDesktops(const QVariantList& desktops) { - m_desktops = desktops; + m_rawDesktops = desktops; m_selectedIndex = -1; + rebuildDesktops(); emit desktopsChanged(); emit selectedIndexChanged(); } -void DesktopBackend::selectDesktop(int index) +void DesktopBackend::setLocale(const QString& locale) { - if (index == m_selectedIndex) + if (m_locale == locale) return; + m_locale = locale; + rebuildDesktops(); + emit localeChanged(); + emit desktopsChanged(); +} + +void DesktopBackend::rebuildDesktops() +{ + const bool hungarian = m_locale.startsWith(QLatin1String("hu")); + const bool german = m_locale.startsWith(QLatin1String("de")); + + m_desktops.clear(); + for (const QVariant& v : m_rawDesktops) + { + const QVariantMap raw = v.toMap(); + + QVariantMap item; + item.insert(QStringLiteral("name"), raw.value(QStringLiteral("name"))); + item.insert( + QStringLiteral("description"), + hungarian ? raw.value(QStringLiteral("description_hu"), raw.value(QStringLiteral("description"))) + : german ? raw.value(QStringLiteral("description_de"), raw.value(QStringLiteral("description"))) + : raw.value(QStringLiteral("description_en"), raw.value(QStringLiteral("description")))); + item.insert( + QStringLiteral("badge"), + hungarian ? raw.value(QStringLiteral("badge_hu"), raw.value(QStringLiteral("badge"))) + : german ? raw.value(QStringLiteral("badge_de"), raw.value(QStringLiteral("badge"))) + : raw.value(QStringLiteral("badge_en"), raw.value(QStringLiteral("badge")))); + item.insert(QStringLiteral("badge_color"), raw.value(QStringLiteral("badge_color"))); + item.insert(QStringLiteral("available"), raw.value(QStringLiteral("available"), true)); + item.insert(QStringLiteral("packages"), raw.value(QStringLiteral("packages"))); + + m_desktops.append(item); + } +} + +void DesktopBackend::selectDesktop(int index) +{ if (index < 0 || index >= m_desktops.size()) return; + if (!m_desktops[index].toMap().value(QStringLiteral("available"), true).toBool()) + return; + if (index == m_selectedIndex) + return; + m_selectedIndex = index; emit selectedIndexChanged(); emit selectionMade(); @@ -29,7 +77,7 @@ QStringList DesktopBackend::selectedPackages() const return {}; const QVariantMap desktop = m_desktops[m_selectedIndex].toMap(); QStringList pkgs; - for (const auto& v : desktop.value("packages").toList()) + for (const auto& v : desktop.value(QStringLiteral("packages")).toList()) pkgs << v.toString(); return pkgs; } -- cgit v1.3