9#pragma qt_class(QPermissions)
12#include <QtCore/qglobal.h>
13#include <QtCore/qtmetamacros.h>
14#include <QtCore/qvariant.h>
16#include <QtCore/qshareddata_impl.h>
17#include <QtCore/qtypeinfo.h>
18#include <QtCore/qmetatype.h>
28#ifndef QT_NO_DEBUG_STREAM
33class QCoreApplication;
37 template <
typename T,
typename Enable =
void>
38 static constexpr inline bool is_permission_v =
false;
45 template <
typename T, if_permission<T> =
true>
52 template <
typename T, if_permission<T> =
true>
55 if (
auto p = data(QMetaType::fromType<T>()))
56 return *
static_cast<
const T *>(p);
60#ifndef QT_NO_DEBUG_STREAM
65 Q_CORE_EXPORT
const void *data(QMetaType id)
const;
70 friend class QCoreApplication;
74constexpr bool QPermission::is_permission_v<T,
typename T::QtPermissionHelper> =
true;
76#define QT_PERMISSION(ClassName)
77 using QtPermissionHelper = void;
78 friend class QPermission;
81 U(ShortData _data) : data(_data) {}
82 U(ClassName##Private *_d) : d(_d) {}
84 ClassName##Private *d;
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
98class QLocationPermissionPrivate;
101 Q_GADGET_EXPORT(Q_CORE_EXPORT)
125 char reserved[
sizeof(
void*) -
sizeof(accuracy) -
sizeof(availability)];
129Q_DECLARE_SHARED(QLocationPermission)
131class QCalendarPermissionPrivate;
134 Q_GADGET_EXPORT(Q_CORE_EXPORT)
148 char reserved[
sizeof(
void*) -
sizeof(mode)];
152Q_DECLARE_SHARED(QCalendarPermission)
154class QContactsPermissionPrivate;
157 Q_GADGET_EXPORT(Q_CORE_EXPORT)
171 char reserved[
sizeof(
void*) -
sizeof(mode)];
175Q_DECLARE_SHARED(QContactsPermission)
177class QBluetoothPermissionPrivate;
180 Q_GADGET_EXPORT(Q_CORE_EXPORT)
187 Q_DECLARE_FLAGS(CommunicationModes, CommunicationMode)
195 CommunicationMode mode;
196 char reserved[
sizeof(
void*) -
sizeof(mode)];
201Q_DECLARE_SHARED(QBluetoothPermission)
203#define Q_DECLARE_MINIMAL_PERMISSION(ClassName)
204 class ClassName##Private;
207 struct ShortData { char reserved[sizeof(void*)]; };
208 QT_PERMISSION(ClassName)
210 Q_DECLARE_SHARED(ClassName)
216#undef Q_DECLARE_MINIMAL_PERMISSION
Access Bluetooth peripherals.
Access the user's calendar.
Access the user's location.
Availability
This enum is used to control the availability of the location data.
\inmodule QtCore \inheaderfile QPermissions
std::optional< T > value() const
QMetaType type() const
Returns the type of the permission.
Qt::PermissionStatus status() const
Returns the status of the permission.
void requestPermission(const QPermission &permission, const PermissionCallback &callback)
Qt::PermissionStatus checkPermission(const QPermission &permission)
#define QT_PERMISSION_IMPL_COMMON(ClassName)
#define QT_PERMISSION(ClassName)
QT_REQUIRE_CONFIG(permissions)
#define Q_DECLARE_MINIMAL_PERMISSION(ClassName)