Lomiri
deviceconfig.h
1 /*
2  * Copyright 2016 Canonical Ltd.
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License as published by
6  * the Free Software Foundation; version 3.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU Lesser General Public License for more details.
12  *
13  * You should have received a copy of the GNU Lesser General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  */
16 
17 #pragma once
18 
19 #include <QObject>
20 #include <memory>
21 
22 class DeviceInfo;
23 class DeviceConfig: public QObject
24 {
25  Q_OBJECT
26  Q_PROPERTY(QString name READ name NOTIFY changed)
27 
28  // NOTE: When changing this properties, also update the examples in docs and data
29  Q_PROPERTY(Qt::ScreenOrientation primaryOrientation READ primaryOrientation NOTIFY changed)
30  Q_PROPERTY(Qt::ScreenOrientations supportedOrientations READ supportedOrientations NOTIFY changed)
31  Q_PROPERTY(Qt::ScreenOrientation landscapeOrientation READ landscapeOrientation NOTIFY changed)
32  Q_PROPERTY(Qt::ScreenOrientation invertedLandscapeOrientation READ invertedLandscapeOrientation NOTIFY changed)
33  Q_PROPERTY(Qt::ScreenOrientation portraitOrientation READ portraitOrientation NOTIFY changed)
34  Q_PROPERTY(Qt::ScreenOrientation invertedPortraitOrientation READ invertedPortraitOrientation NOTIFY changed)
35  Q_PROPERTY(QString category READ category NOTIFY changed)
36  Q_PROPERTY(bool supportsMultiColorLed READ supportsMultiColorLed NOTIFY changed)
37 
38 public:
39  DeviceConfig(QObject *parent = nullptr);
40  ~DeviceConfig() = 0;
41 
42  QString name() const;
43 
44  Qt::ScreenOrientation primaryOrientation() const;
45  Qt::ScreenOrientations supportedOrientations() const;
46  Qt::ScreenOrientation landscapeOrientation() const;
47  Qt::ScreenOrientation invertedLandscapeOrientation() const;
48  Qt::ScreenOrientation portraitOrientation() const;
49  Qt::ScreenOrientation invertedPortraitOrientation() const;
50  QString category() const;
51  bool supportsMultiColorLed() const;
52 
53 // for tests
54  Q_INVOKABLE void refresh() { Q_EMIT changed(); }
55 
56 Q_SIGNALS:
57  void changed();
58 
59 private:
60  std::unique_ptr<DeviceInfo> m_info;
61 
62  Qt::ScreenOrientation stringToOrientation(const std::string &orientationString, Qt::ScreenOrientation defaultValue) const;
63 };