#pragma once #include #include #include class DesktopBackend : public QObject { Q_OBJECT Q_PROPERTY(QVariantList desktops READ desktops NOTIFY desktopsChanged) Q_PROPERTY(int selectedIndex READ selectedIndex NOTIFY selectedIndexChanged) Q_PROPERTY(QString locale READ locale WRITE setLocale NOTIFY localeChanged) public: explicit DesktopBackend(QObject* parent = nullptr); QVariantList desktops() const { return m_desktops; } int selectedIndex() const { return m_selectedIndex; } QString locale() const { return m_locale; } void setDesktops(const QVariantList& desktops); void setLocale(const QString& locale); QStringList selectedPackages() const; Q_INVOKABLE void selectDesktop(int index); signals: void desktopsChanged(); void selectedIndexChanged(); void selectionMade(); void localeChanged(); private: void rebuildDesktops(); QVariantList m_rawDesktops; QVariantList m_desktops; int m_selectedIndex = -1; QString m_locale; };