registerShortcut
[apps/homescreen.git] / homescreen / src / shortcutappmodel.h
1 #ifndef SHORTCUTAPPMODEL_H
2 #define SHORTCUTAPPMODEL_H
3
4 #include <QtCore/QAbstractListModel>
5 #include <QXmlStreamReader>
6 #include <QXmlStreamWriter>
7 #include <QFile>
8 #include <QProcess>
9 #include <QThread>
10 #include <QJsonDocument>
11 #include <QJsonParseError>
12 #include <QJsonObject>
13 #include <json_object.h>
14
15 struct RegisterApp {
16     QString id;
17     QString name;
18     QString icon;
19     bool isBlank;
20 };
21
22 class ShortcutAppModel : public QAbstractListModel
23 {
24     Q_OBJECT
25 public:
26     explicit ShortcutAppModel(QObject *parent = nullptr);
27     ~ShortcutAppModel();
28
29     int rowCount(const QModelIndex &parent = QModelIndex()) const override;
30
31     QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
32     QHash<int, QByteArray> roleNames() const override;
33
34     Q_INVOKABLE QString getId(int index) const;
35     Q_INVOKABLE QString getName(int index) const;
36     Q_INVOKABLE QString getIcon(int index) const;
37     Q_INVOKABLE bool isBlank(int index) const;
38
39     void screenUpdated();
40
41 public slots:
42     void changeShortcut(QString id, QString name, QString position);
43
44 signals:
45     void updateShortcut();
46     void shortcutUpdated(QString id, struct json_object* object);
47
48 private:
49     void getAppQueue();
50     void setAppQueue();
51     bool checkAppFile();
52     void setAppQueuePoint(QString id, QString name);
53     QString getIconPath(QString id);
54     struct json_object* makeAppListJson();
55
56     class Private;
57     Private *d;
58     RegisterApp app;
59
60 };
61
62 #endif // SHORTCUTAPPMODEL_H