Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qdarwinpermissionplugin_p_p.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
4#ifndef QDARWINPERMISSIONPLUGIN_P_P_H
5#define QDARWINPERMISSIONPLUGIN_P_P_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. This header file may change
12// from version to version without notice, or even be removed.
13//
14// We mean it.
15//
16
17#if !defined(QT_DARWIN_PERMISSION_PLUGIN)
18#error "This header should only be included from permission plugins"
19#endif
20
21#include <QtCore/qnamespace.h>
22#include <QtCore/private/qpermissions_p.h>
23#include <QtCore/private/qcore_mac_p.h>
24
26
27using namespace QPermissions::Private;
28
29#ifndef QT_JOIN
30#define QT_JOIN_IMPL(A, B) A ## B
31#define QT_JOIN(A, B) QT_JOIN_IMPL(A, B)
32#endif
33
34#define PERMISSION_PLUGIN_NAME(SUFFIX) \
35 QT_JOIN(QT_JOIN(QT_JOIN( \
36 QDarwin, QT_DARWIN_PERMISSION_PLUGIN), Permission), SUFFIX)
37
38#define PERMISSION_PLUGIN_CLASSNAME PERMISSION_PLUGIN_NAME(Plugin)
39#define PERMISSION_PLUGIN_HANDLER PERMISSION_PLUGIN_NAME(Handler)
40
44)
45
47
48class Q_CORE_EXPORT PERMISSION_PLUGIN_CLASSNAME : public QDarwinPermissionPlugin
49{
53 FILE "QDarwin" QT_STRINGIFY(QT_DARWIN_PERMISSION_PLUGIN) "PermissionPlugin.json")
54public:
56 : QDarwinPermissionPlugin([[PERMISSION_PLUGIN_HANDLER alloc] init])
57 {}
58};
59
61
62// Request
63#if defined(BUILDING_PERMISSION_REQUEST)
64extern "C" void PERMISSION_PLUGIN_NAME(Request)() {}
65#endif
66
67// -------------------------------------------------------
68
69namespace {
70template <typename NativeStatus>
71struct NativeStatusHelper;
72
73template <typename NativeStatus>
74Qt::PermissionStatus nativeStatusToQtStatus(NativeStatus status)
75{
76 using Converter = NativeStatusHelper<NativeStatus>;
77 switch (status) {
78 case Converter::Authorized:
80 case Converter::Denied:
81 case Converter::Restricted:
83 case Converter::Undetermined:
85 }
86 qCWarning(lcPermissions) << "Unknown permission status" << status << "detected in"
87 << QT_STRINGIFY(QT_DARWIN_PERMISSION_PLUGIN);
89}
90} // namespace
91
92#define QT_DEFINE_PERMISSION_STATUS_CONVERTER(NativeStatus) \
93namespace { template<> \
94struct NativeStatusHelper<NativeStatus> \
95{\
96 enum { \
97 Authorized = NativeStatus##Authorized, \
98 Denied = NativeStatus##Denied, \
99 Restricted = NativeStatus##Restricted, \
100 Undetermined = NativeStatus##NotDetermined \
101 }; \
102}; }
103
104#endif // QDARWINPERMISSIONPLUGIN_P_P_H
Combined button and popup list for selecting options.
PermissionStatus
#define QT_DECLARE_NAMESPACED_OBJC_INTERFACE(classname, definition)
Definition qcore_mac_p.h:70
#define PERMISSION_PLUGIN_HANDLER
#define PERMISSION_PLUGIN_CLASSNAME
#define PERMISSION_PLUGIN_NAME(SUFFIX)
#define qCWarning(category,...)
#define QPermissionPluginInterface_iid
static QT_BEGIN_NAMESPACE void init(QTextBoundaryFinder::BoundaryType type, QStringView str, QCharAttributes *attributes)
#define Q_OBJECT
#define Q_PLUGIN_METADATA(x)
#define QT_STRINGIFY(x)