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 <QtCore/qcoreapplication.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)
77struct QQmlCalendarPermission : public
QObject
79 QML_PERMISSION(CalendarPermission)
85struct QQmlContactsPermission : public
QObject
87 QML_PERMISSION(ContactsPermission)
93struct QQmlBluetoothPermission : public
QObject
95 QML_PERMISSION(BluetoothPermission)
98 QML_PERMISSION_PROPERTY(
QBluetoothPermission::CommunicationModes, communicationModes, setCommunicationModes)
101struct QQmlCameraPermission : public
QObject
103 QML_PERMISSION(CameraPermission)
107struct QQmlMicrophonePermission :
public QObject
109 QML_PERMISSION(MicrophonePermission)
Access Bluetooth peripherals.
Access the user's calendar.
Access the user's location.
Combined button and popup list for selecting options.
#define QML_EXTENDED_NAMESPACE(EXTENDED_NAMESPACE)
#define QML_ADDED_IN_VERSION(MAJOR, MINOR)