diff options
| author | Nippy <nippy@Nippy-Mac-mini.local> | 2026-09-17 16:14:58 +0200 |
|---|---|---|
| committer | Nippy <nippy@Nippy-Mac-mini.local> | 2026-09-17 16:14:58 +0200 |
| commit | 8839d02e786f5ece0e1a502980fcaada6594e859 (patch) | |
| tree | d96aa79d2014cbb337ee68f3ca4f554a7cd94edc /raveos-calamares-module/desktopselect/DesktopBackend.cpp | |
| parent | f676fc2bad71c23605c846027a6d3691508075fd (diff) | |
| download | RaveOS-PKGBUILD-8839d02e786f5ece0e1a502980fcaada6594e859.tar.gz RaveOS-PKGBUILD-8839d02e786f5ece0e1a502980fcaada6594e859.zip | |
desktop new/fix
Diffstat (limited to 'raveos-calamares-module/desktopselect/DesktopBackend.cpp')
| -rw-r--r-- | raveos-calamares-module/desktopselect/DesktopBackend.cpp | 56 |
1 files changed, 52 insertions, 4 deletions
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 <QLocale> +#include <QVariantMap> + 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; } |