-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathqcdevice.cpp
142 lines (117 loc) · 2.37 KB
/
qcdevice.cpp
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
/* QuickCross Project
* License: APACHE-2.0
* Author: Ben Lau
* Project Site: https://github.com/benlau/quickcross
*
*/
#include <QSysInfo>
#include <QtGlobal>
#include "qcdevice.h"
#ifdef Q_OS_ANDROID
#include <QAndroidJniEnvironment>
#include <QAndroidJniObject>
#endif
static qreal m_dp = 1;
/*!
* \qmltype Device
* \instantiates QCDevice
* \inqmlmodule QuickCross
* \inherits QObject
*
* \brief Provider of device related information
* It is a singleton component
*
*/
QCDevice::QCDevice(QObject *parent) : QObject(parent)
{
#ifdef Q_OS_ANDROID
QAndroidJniObject activity = QAndroidJniObject::callStaticObjectMethod("org/qtproject/qt5/android/QtNative", "activity", "()Landroid/app/Activity;");
QAndroidJniObject resource = activity.callObjectMethod("getResources","()Landroid/content/res/Resources;");
QAndroidJniObject metrics = resource.callObjectMethod("getDisplayMetrics","()Landroid/util/DisplayMetrics;");
m_dp = metrics.getField<float>("density");
#endif
}
/*!
* \qmlproperty string Device::os
* This property hold the product name of the operating system this application is running in.
* It is equivalent to QSysInfo::productType()
*
*/
QString QCDevice::os() const
{
QString res = "unknown";
#ifdef Q_OS_LINUX
// Don't return a distribution name
res = "linux";
#else
res = QSysInfo::productType();
#endif
return res;
}
/*!
* \qmlproperty bool Device::isAndroid
*/
bool QCDevice::isAndroid() const
{
#ifdef Q_OS_ANDROID
return true;
#else
return false;
#endif
}
/*!
* \qmlproperty bool Device::isLinux
*/
bool QCDevice::isLinux() const
{
#ifdef Q_OS_LINUX
return true;
#else
return false;
#endif
}
/*!
* \qmlproperty bool Device::isIOS
*/
bool QCDevice::isIOS() const
{
#ifdef Q_OS_IOS
return true;
#else
return false;
#endif
}
/*!
* \qmlproperty bool Device::isMac
*/
bool QCDevice::isMac() const
{
#ifdef Q_OS_MAC
return true;
#else
return false;
#endif
}
/*!
* \qmlproperty bool Device::isWindows
*/
bool QCDevice::isWindows() const
{
#ifdef Q_OS_WIN32
return true;
#else
return false;
#endif
}
/*!
* \qmlproperty real Device::dp
*
* This property hold the density independent pixel (DP) of the Android device this application is running.
*
* It is valid only in Android system. In other system, the default value is 1.
*
*/
qreal QCDevice::dp() const
{
return m_dp;
}