warehouse for ces2019
[apps/onscreenapp.git] / app / src / appinfo.h
1 /*
2  * Copyright (C) 2016, 2017 Mentor Graphics Development (Deutschland) GmbH
3  * Copyright (C) 2016 The Qt Company Ltd.
4  * Copyright (c) 2018 TOYOTA MOTOR CORPORATION
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *      http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18
19 #ifndef APPINFO_H
20 #define APPINFO_H
21
22 #include <QtCore/QJsonObject>
23 #include <QtCore/QObject>
24 #include <QtCore/QSharedDataPointer>
25
26 class AppInfo {
27   Q_GADGET
28   Q_PROPERTY(QString id READ id)
29   Q_PROPERTY(QString version READ version)
30   Q_PROPERTY(int width READ width)
31   Q_PROPERTY(int height READ height)
32   Q_PROPERTY(QString name READ name)
33   Q_PROPERTY(QString description READ description)
34   Q_PROPERTY(QString shortname READ shortname)
35   Q_PROPERTY(QString author READ author)
36   Q_PROPERTY(QString iconPath READ iconPath)
37   Q_PROPERTY(AppState state READ state WRITE setState)
38   Q_PROPERTY(qreal progress READ progress WRITE setProgress)
39   Q_PROPERTY(QString serverid READ serverId)
40   Q_PROPERTY(QString wgtpath READ wgtPath)
41   Q_PROPERTY(QString filename READ fileName)
42   Q_PROPERTY(QString categoryid READ categoryId)
43   Q_PROPERTY(QString categoryname READ categoryName)
44   Q_PROPERTY(QString deviceid READ deviceId)
45   Q_PROPERTY(QString devicename READ deviceName)
46   Q_PROPERTY(double createdtime READ createdTime)
47  public:
48   enum AppState { Install = 0, Update, Launch, Downloading, Installing };
49   Q_ENUM(AppState)
50
51   AppInfo();
52   AppInfo(const QString& icon, const QString& name, const QString& id);
53   AppInfo(const AppInfo& other);
54   virtual ~AppInfo();
55   AppInfo& operator=(const AppInfo& other);
56   void swap(AppInfo& other) { qSwap(d, other.d); }
57
58   QString id() const;
59   QString version() const;
60   int width() const;
61   int height() const;
62   QString name() const;
63   QString description() const;
64   QString shortname() const;
65   QString author() const;
66   QString iconPath() const;
67   AppState state() const;
68   qreal progress() const;
69
70   QString serverId() const;
71   QString wgtPath() const;
72   QString fileName() const;
73   QString categoryId() const;
74   QString categoryName() const;
75   QString deviceId() const;
76   QString deviceName() const;
77   double createdTime() const;
78
79   void setState(const AppState state);
80   void setProgress(const qreal progress);
81
82   void read(const QJsonObject& json);
83   void readFromServer(const QJsonObject& json);
84
85  private:
86   class Private;
87   QSharedDataPointer<Private> d;
88 };
89
90 Q_DECLARE_SHARED(AppInfo)
91 Q_DECLARE_METATYPE(AppInfo)
92 Q_DECLARE_METATYPE(QList<AppInfo>)
93
94 #endif  // APPINFO_H