summaryrefslogtreecommitdiff
path: root/raveos-calamares-module/desktopselect/DesktopBackend.h
blob: a3d23977f39c58963a18d24ef20b37b3c0b60bc8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#pragma once
#include <QObject>
#include <QStringList>
#include <QVariantList>

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;
};