8#pragma qt_class(QPermissions)
11#include <QtCore/qglobal.h>
12#include <QtCore/qtmetamacros.h>
13#include <QtCore/qvariant.h>
15#include <QtCore/qshareddata_impl.h>
16#include <QtCore/qtypeinfo.h>
17#include <QtCore/qmetatype.h>
27#ifndef QT_NO_DEBUG_STREAM
32class QCoreApplication;
36 template <
typename T,
typename Enable =
void>
37 static constexpr inline bool is_permission_v =
false;
44 template <
typename T, if_permission<T> =
true>
51 template <
typename T, if_permission<T> =
true>
54 if (
auto p = data(QMetaType::fromType<T>()))
55 return *
static_cast<
const T *>(p);
59#ifndef QT_NO_DEBUG_STREAM
64 Q_CORE_EXPORT
const void *data(QMetaType id)
const;
69 friend class QCoreApplication;
73constexpr bool QPermission::is_permission_v<T,
typename T::QtPermissionHelper> =
true;
75#define QT_PERMISSION(ClassName)
76 using QtPermissionHelper = void;
77 friend class QPermission;
80 U(ShortData _data) : data(_data) {}
81 U(ClassName##Private *_d) : d(_d) {}
83 ClassName##Private *d;
86 Q_CORE_EXPORT ClassName();
87 Q_CORE_EXPORT ClassName(const ClassName &other) noexcept;
88 ClassName(ClassName &&other) noexcept
89 : u{other.u} { other.u.d = nullptr; }
90 Q_CORE_EXPORT ~ClassName();
91 Q_CORE_EXPORT ClassName &operator
=(const ClassName &other) noexcept;
92 QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_MOVE_AND_SWAP(ClassName)
93 void swap(ClassName &other) noexcept { std::swap(u, other.u); } private
97class QLocationPermissionPrivate;
100 Q_GADGET_EXPORT(Q_CORE_EXPORT)
124 char reserved[
sizeof(
void*) -
sizeof(accuracy) -
sizeof(availability)];
128Q_DECLARE_SHARED(QLocationPermission)
130class QCalendarPermissionPrivate;
133 Q_GADGET_EXPORT(Q_CORE_EXPORT)
147 char reserved[
sizeof(
void*) -
sizeof(mode)];
151Q_DECLARE_SHARED(QCalendarPermission)
153class QContactsPermissionPrivate;
156 Q_GADGET_EXPORT(Q_CORE_EXPORT)
170 char reserved[
sizeof(
void*) -
sizeof(mode)];
174Q_DECLARE_SHARED(QContactsPermission)
176class QBluetoothPermissionPrivate;
179 Q_GADGET_EXPORT(Q_CORE_EXPORT)
186 Q_DECLARE_FLAGS(CommunicationModes, CommunicationMode)
194 CommunicationMode mode;
195 char reserved[
sizeof(
void*) -
sizeof(mode)];
200Q_DECLARE_SHARED(QBluetoothPermission)
202#define Q_DECLARE_MINIMAL_PERMISSION(ClassName)
203 class ClassName##Private;
206 struct ShortData { char reserved[sizeof(void*)]; };
207 QT_PERMISSION(ClassName)
209 Q_DECLARE_SHARED(ClassName)
215#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)