on c021e5f help sign in
unity8/plugins/Utils/deviceconfigparser.cpp
106 lines 3.1 kB history raw
1#include "deviceconfigparser.h"
3#include <QSettings>
4#include <QFileInfo>
6DeviceConfigParser::DeviceConfigParser(QObject *parent): QObject(parent)
7{
9}
11QString DeviceConfigParser::name() const
13 return m_name;
16void DeviceConfigParser::setName(const QString &name)
18 if (m_name == name) {
19 return;
20 }
21 m_name = name;
22 Q_EMIT changed();
25Qt::ScreenOrientation DeviceConfigParser::primaryOrientation() const
27 return stringToOrientation(readOrientationFromConfig("PrimaryOrientation"), Qt::PrimaryOrientation);
30Qt::ScreenOrientations DeviceConfigParser::supportedOrientations() const
32 QStringList values = readOrientationsFromConfig("SupportedOrientations");
33 if (values.isEmpty()) {
34 return Qt::PortraitOrientation
35 | Qt::InvertedPortraitOrientation
36 | Qt::LandscapeOrientation
37 | Qt::InvertedLandscapeOrientation;
38 }
40 Qt::ScreenOrientations ret = Qt::PrimaryOrientation;
41 Q_FOREACH(const QString &orientationString, values) {
42 ret |= stringToOrientation(orientationString, Qt::PrimaryOrientation);
43 }
44 return ret;
47Qt::ScreenOrientation DeviceConfigParser::landscapeOrientation() const
49 return stringToOrientation(readOrientationFromConfig("LandscapeOrientation"), Qt::LandscapeOrientation);
52Qt::ScreenOrientation DeviceConfigParser::invertedLandscapeOrientation() const
54 return stringToOrientation(readOrientationFromConfig("InvertedLandscapeOrientation"), Qt::InvertedLandscapeOrientation);
57Qt::ScreenOrientation DeviceConfigParser::portraitOrientation() const
59 return stringToOrientation(readOrientationFromConfig("PortraitOrientation"), Qt::PortraitOrientation);
62Qt::ScreenOrientation DeviceConfigParser::invertedPortraitOrientation() const
64 return stringToOrientation(readOrientationFromConfig("InvertedPortraitOrientation"), Qt::InvertedPortraitOrientation);
67QStringList DeviceConfigParser::readOrientationsFromConfig(const QString &key) const
69 QFileInfo fi("./devices.conf");
70 QString path;
71 if (fi.exists()) {
72 path = "./devices.conf";
73 } else {
74 path = "/etc/unity8/devices.conf";
75 }
76 QSettings config(path, QSettings::IniFormat);
77 config.beginGroup(m_name);
79 if (config.contains(key)) {
80 return config.value(key).toStringList();
81 }
82 return QStringList();
85QString DeviceConfigParser::readOrientationFromConfig(const QString &key) const
87 QStringList ret = readOrientationsFromConfig(key);
88 return ret.count() > 0 ? ret.first() : QString();
91Qt::ScreenOrientation DeviceConfigParser::stringToOrientation(const QString &orientationString, Qt::ScreenOrientation defaultValue) const
93 if (orientationString == "Landscape") {
94 return Qt::LandscapeOrientation;
95 }
96 if (orientationString == "InvertedLandscape") {
97 return Qt::InvertedLandscapeOrientation;
98 }
99 if (orientationString == "Portrait") {
100 return Qt::PortraitOrientation;
101 }
102 if (orientationString == "InvertedPortrait") {
103 return Qt::InvertedPortraitOrientation;
104 }
105 return defaultValue;