-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDesktopConfigListModel.h
66 lines (55 loc) · 1.65 KB
/
DesktopConfigListModel.h
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#pragma once
#include <QAbstractListModel>
#include <QList>
#include <QObject>
#include <QQmlEngine>
#include <algorithm>
class DesktopConfigModel final : public QAbstractListModel
{
Q_OBJECT
QML_ELEMENT
QML_SINGLETON
public:
struct DesktopConfig
{
QString name;
bool hasAlias;
QString execAlias;
QStringList envs;
};
explicit DesktopConfigModel(QObject *parent = nullptr);
enum DesktopConfigRole
{
Name = Qt::DisplayRole,
HasAlias,
ExecAlias,
Envs
};
Q_INVOKABLE void insertData(const QString &desktop);
Q_INVOKABLE bool
setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override;
Q_INVOKABLE void remove(int row);
Q_INVOKABLE bool dataIsExist(const QString &desktop) const;
Q_INVOKABLE QVariantMap getFromName(const QString &name) const
{
QVariantMap data;
for (int i = 0; i < m_configs.length(); ++i) {
if (m_configs[i].name == name) {
data.insert("name", m_configs[i].name);
data.insert("hasAlias", m_configs[i].hasAlias);
data.insert("execAlias", m_configs[i].execAlias);
data.insert("envs", m_configs[i].envs);
break;
}
}
return data;
}
private:
int rowCount(const QModelIndex & = QModelIndex()) const override;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
QHash<int, QByteArray> roleNames() const override;
void get_file_config();
void save_file_config();
private:
QList<DesktopConfig> m_configs;
};