4#ifndef QQMLPERMISSIONS_P_H
5#define QQMLPERMISSIONS_P_H
18#include <private/qqmlglobal_p.h>
20#if QT_CONFIG(permissions)
22#include <QtQml/qqmlregistration.h>
24#include <QtCore/qpermissions.h>
25#include <QtCore/qnamespace.h>
26#include <QtCore/qproperty.h>
27#include <QtCore/qglobal.h>
29#include <QtGui/qguiapplication.h>
33#define QML_PERMISSION(Permission) \
35 QML_NAMED_ELEMENT(Permission) \
37 Q_PROPERTY(Qt::PermissionStatus status READ status NOTIFY statusChanged) \
38 Qt::PermissionStatus status() const { return qApp->checkPermission(m_permission); } \
39 Q_SIGNAL void statusChanged(); \
40 Q_INVOKABLE void request() { \
41 const auto previousStatus = status(); \
42 qApp->requestPermission(m_permission, this, \
43 [this, previousStatus](const QPermission &permission) { \
44 if (previousStatus != permission.status()) \
45 emit statusChanged(); \
49 Q##Permission m_permission; \
52#define QML_PERMISSION_PROPERTY(PropertyType, getterName, setterName) \
53 Q_PROPERTY(PropertyType getterName READ getterName WRITE setterName NOTIFY getterName##Changed) \
54 PropertyType getterName() const { return m_permission.getterName(); } \
55 void setterName(const PropertyType &value) { \
56 const auto previousValue = m_permission.getterName(); \
57 const auto previousStatus = status(); \
58 m_permission.setterName(value); \
59 if (m_permission.getterName() != previousValue) { \
60 emit getterName##Changed(); \
61 if (status() != previousStatus) \
62 emit statusChanged(); \
65 Q_SIGNAL void getterName##Changed();
68struct QQmlQLocationPermission :
public QObject
70 QML_PERMISSION(LocationPermission)
76struct QQmlCalendarPermission :
public QObject
78 QML_PERMISSION(CalendarPermission)
83struct QQmlContactsPermission :
public QObject
85 QML_PERMISSION(ContactsPermission)
90struct QQmlBluetoothPermission :
public QObject
92 QML_PERMISSION(BluetoothPermission)
94 QML_PERMISSION_PROPERTY(QBluetoothPermission::CommunicationModes, communicationModes, setCommunicationModes)
97struct QQmlCameraPermission :
public QObject
99 QML_PERMISSION(CameraPermission)
102struct QQmlMicrophonePermission :
public QObject
104 QML_PERMISSION(MicrophonePermission)
Access Bluetooth peripherals.
Access the user's calendar.
AccessMode
This enum is used to control access to the calendar data.
Access the user's location.
Availability
This enum is used to control the availability of the location data.
Accuracy
This enum is used to control the accuracy of the location data.
Combined button and popup list for selecting options.
#define QML_EXTENDED_NAMESPACE(EXTENDED_NAMESPACE)