Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qpermissions.h
Go to the documentation of this file.
1
// Copyright (C) 2022 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
// Qt-Security score:significant reason:default
4
5
#
ifndef
QPERMISSIONS_H
6
#
define
QPERMISSIONS_H
7
8
#
if
0
9
#
pragma
qt_class
(
QPermissions
)
10
#
endif
11
12
#
include
<
QtCore
/
qglobal
.
h
>
13
#
include
<
QtCore
/
qtmetamacros
.
h
>
14
#
include
<
QtCore
/
qvariant
.
h
>
15
16
#
include
<
QtCore
/
qshareddata_impl
.
h
>
17
#
include
<
QtCore
/
qtypeinfo
.
h
>
18
#
include
<
QtCore
/
qmetatype
.
h
>
19
20
#
include
<
optional
>
21
22
#
if
!
defined
(
Q_QDOC
)
23
QT_REQUIRE_CONFIG
(
permissions
);
24
#
endif
25
26
QT_BEGIN_NAMESPACE
27
28
#
ifndef
QT_NO_DEBUG_STREAM
29
class
QDebug;
30
#
endif
31
32
struct
QMetaObject;
33
class
QCoreApplication;
34
35
class
QPermission
36
{
37
template
<
typename
T,
typename
Enable =
void
>
38
static
constexpr
inline
bool
is_permission_v =
false
;
39
40
template
<
typename
T
>
41
using
if_permission
=
std
::
enable_if_t
<
is_permission_v
<
T
>,
bool
>;
42
public
:
43
explicit
QPermission
() =
default
;
44
45
template
<
typename
T, if_permission<T> =
true
>
46
QPermission
(
const
T &t) :
m_data
(
QVariant
::
fromValue
(
t
)) {}
47
48
Qt
::
PermissionStatus
status
()
const
{
return
m_status; }
49
50
QMetaType
type
()
const
{
return
m_data.metaType(); }
51
52
template
<
typename
T, if_permission<T> =
true
>
53
std
::optional<T>
value
()
const
54
{
55
if
(
auto
p = data(QMetaType::fromType<T>()))
56
return
*
static_cast
<
const
T *>(p);
57
return
std
::nullopt;
58
}
59
60
#
ifndef
QT_NO_DEBUG_STREAM
61
friend
Q_CORE_EXPORT
QDebug
operator
<<(
QDebug
debug
,
const
QPermission
&);
62
#
endif
63
64
private
:
65
Q_CORE_EXPORT
const
void
*data(QMetaType id)
const
;
66
67
Qt::PermissionStatus m_status =
Qt
::
PermissionStatus
::
Undetermined
;
68
QVariant m_data;
69
70
friend
class
QCoreApplication;
71
};
72
73
template
<
typename
T>
74
constexpr
bool
QPermission
::is_permission_v<T,
typename
T::QtPermissionHelper> =
true
;
75
76
#
define
QT_PERMISSION
(
ClassName
)
77
using
QtPermissionHelper
=
void
;
78
friend
class
QPermission
;
79
union
U
{
80
U
(
)
:
d
(
nullptr
)
{
}
81
U
(
ShortData
_data
)
:
data
(
_data
)
{
}
82
U
(
ClassName
##
Private
*
_d
)
:
d
(
_d
)
{
}
83
ShortData
data
;
84
ClassName
##
Private
*
d
;
85
}
u
;
public
86
:
87
Q_CORE_EXPORT
ClassName
(
)
;
88
Q_CORE_EXPORT
ClassName
(
const
ClassName
&
other
)
noexcept
;
89
ClassName
(
ClassName
&&
other
)
noexcept
90
:
u
{
other
.
u
}
{
other
.
u
.
d
=
nullptr
;
}
91
Q_CORE_EXPORT
~
ClassName
(
)
;
92
Q_CORE_EXPORT
ClassName
&
operator
=
(
const
ClassName
&
other
)
noexcept
;
93
QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_MOVE_AND_SWAP
(
ClassName
)
94
void
swap
(
ClassName
&
other
)
noexcept
{
std
::
swap
(
u
,
other
.
u
)
;
}
private
95
:
96
/*end*/
97
98
class
QLocationPermissionPrivate;
99
class
QLocationPermission
100
{
101
Q_GADGET_EXPORT(Q_CORE_EXPORT)
102
public
:
103
enum
Accuracy
:
quint8
{
104
Approximate
,
105
Precise
,
106
};
107
Q_ENUM(Accuracy)
108
109
Q_CORE_EXPORT
void
setAccuracy
(
Accuracy
accuracy
);
110
Q_CORE_EXPORT
Accuracy
accuracy
()
const
;
111
112
enum
Availability
:
quint8
{
113
WhenInUse
,
114
Always
,
115
};
116
Q_ENUM
(
Availability
)
117
118
Q_CORE_EXPORT
void
setAvailability
(
Availability
availability
);
119
Q_CORE_EXPORT
Availability
availability
()
const
;
120
121
private
:
122
struct
ShortData {
123
Accuracy accuracy;
124
Availability
availability;
125
char
reserved[
sizeof
(
void
*) -
sizeof
(accuracy) -
sizeof
(availability)];
126
};
127
QT_PERMISSION
(
QLocationPermission
)
128
};
129
Q_DECLARE_SHARED(QLocationPermission)
130
131
class
QCalendarPermissionPrivate;
132
class
QCalendarPermission
133
{
134
Q_GADGET_EXPORT(Q_CORE_EXPORT)
135
public
:
136
enum
AccessMode
:
quint8
{
137
ReadOnly
,
138
ReadWrite
,
139
WriteOnly
,
140
};
141
Q_ENUM(AccessMode)
142
143
Q_CORE_EXPORT
void
setAccessMode
(
AccessMode
mode
);
144
Q_CORE_EXPORT
AccessMode
accessMode
()
const
;
145
146
private
:
147
struct
ShortData {
148
AccessMode mode;
149
char
reserved[
sizeof
(
void
*) -
sizeof
(mode)];
150
};
151
QT_PERMISSION
(
QCalendarPermission
)
152
};
153
Q_DECLARE_SHARED(QCalendarPermission)
154
155
class
QContactsPermissionPrivate;
156
class
QContactsPermission
157
{
158
Q_GADGET_EXPORT(Q_CORE_EXPORT)
159
public
:
160
enum
AccessMode
:
quint8
{
161
ReadOnly
,
162
ReadWrite
,
163
};
164
Q_ENUM(AccessMode)
165
166
Q_CORE_EXPORT
void
setAccessMode
(
AccessMode
mode
);
167
Q_CORE_EXPORT
AccessMode
accessMode
()
const
;
168
169
private
:
170
struct
ShortData {
171
AccessMode mode;
172
char
reserved[
sizeof
(
void
*) -
sizeof
(mode)];
173
};
174
QT_PERMISSION
(
QContactsPermission
)
175
};
176
Q_DECLARE_SHARED(QContactsPermission)
177
178
class
QBluetoothPermissionPrivate;
179
class
QBluetoothPermission
180
{
181
Q_GADGET_EXPORT(Q_CORE_EXPORT)
182
public
:
183
enum
CommunicationMode
:
quint8
{
184
Access
= 0x01,
185
Advertise
= 0x02,
186
Default
=
Access
|
Advertise
,
187
};
188
Q_DECLARE_FLAGS(CommunicationModes, CommunicationMode)
189
Q_FLAG
(
CommunicationModes
)
190
191
Q_CORE_EXPORT
void
setCommunicationModes
(
CommunicationModes
modes
);
192
Q_CORE_EXPORT CommunicationModes
communicationModes
()
const
;
193
194
private
:
195
struct
ShortData {
196
CommunicationMode mode;
197
char
reserved[
sizeof
(
void
*) -
sizeof
(mode)];
198
};
199
QT_PERMISSION
(
QBluetoothPermission
)
200
};
201
Q_DECLARE_OPERATORS_FOR_FLAGS(
QBluetoothPermission
::CommunicationModes)
202
Q_DECLARE_SHARED(QBluetoothPermission)
203
204
#
define
Q_DECLARE_MINIMAL_PERMISSION
(
ClassName
)
205
class
ClassName
##
Private
;
206
class
ClassName
207
{
208
struct
ShortData
{
char
reserved
[
sizeof
(
void
*
)
]
;
}
;
209
QT_PERMISSION
(
ClassName
)
210
}
;
211
Q_DECLARE_SHARED
(
ClassName
)
212
213
Q_DECLARE_MINIMAL_PERMISSION
(QCameraPermission)
214
Q_DECLARE_MINIMAL_PERMISSION
(QMicrophonePermission)
215
216
#
undef
QT_PERMISSION
217
#
undef
Q_DECLARE_MINIMAL_PERMISSION
218
219
QT_END_NAMESPACE
220
221
#
endif
// QPERMISSIONS_H
QBluetoothPermission
Access Bluetooth peripherals.
Definition
qpermissions.h:180
QCalendarPermission
Access the user's calendar.
Definition
qpermissions.h:133
QContactsPermission
Access the user's contacts.
Definition
qpermissions.h:157
QLocationPermission
Access the user's location.
Definition
qpermissions.h:100
QLocationPermission::Availability
Availability
This enum is used to control the availability of the location data.
Definition
qpermissions.h:112
QLocationPermission::Always
@ Always
Definition
qpermissions.h:114
QLocationPermission::WhenInUse
@ WhenInUse
Definition
qpermissions.h:113
QPermission
\inmodule QtCore \inheaderfile QPermissions
Definition
qpermissions.h:36
QPermission::value
std::optional< T > value() const
Definition
qpermissions.h:53
QPermission::QPermission
QPermission()=default
QPermission::QPermission
QPermission(const T &t)
Definition
qpermissions.h:46
QPermission::type
QMetaType type() const
Returns the type of the permission.
Definition
qpermissions.h:50
QPermission::status
Qt::PermissionStatus status() const
Returns the status of the permission.
Definition
qpermissions.h:48
QPermissions::Private::requestPermission
void requestPermission(const QPermission &permission, const PermissionCallback &callback)
Definition
qpermissions.cpp:701
QPermissions::Private::checkPermission
Qt::PermissionStatus checkPermission(const QPermission &permission)
Definition
qpermissions.cpp:694
QPermissions
Definition
qpermissions.cpp:693
std
[33]
Definition
src_corelib_tools_qhash.cpp:421
QT_PERMISSION_IMPL_COMMON
#define QT_PERMISSION_IMPL_COMMON(ClassName)
Definition
qpermissions.cpp:300
QT_PERMISSION
#define QT_PERMISSION(ClassName)
Definition
qpermissions.h:76
QT_REQUIRE_CONFIG
QT_REQUIRE_CONFIG(permissions)
Q_DECLARE_MINIMAL_PERMISSION
#define Q_DECLARE_MINIMAL_PERMISSION(ClassName)
Definition
qpermissions.h:204
AlignmentCheck
Definition
qpermissions.cpp:298
AlignmentCheck::p
void * p
Definition
qpermissions.cpp:298
qtbase
src
corelib
kernel
qpermissions.h
Generated on
for Qt by
1.18.0