Qt
6.x
The Qt SDK
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
25
#include "
qdarwinpermissionplugin_p.h
"
26
27
using 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
41
QT_DECLARE_NAMESPACED_OBJC_INTERFACE
(
42
PERMISSION_PLUGIN_HANDLER
,
43
QDarwinPermissionHandler
44
)
45
46
QT_BEGIN_NAMESPACE
47
48
class
Q_CORE_EXPORT
PERMISSION_PLUGIN_CLASSNAME
:
public
QDarwinPermissionPlugin
49
{
50
Q_OBJECT
51
Q_PLUGIN_METADATA
(
52
IID
QPermissionPluginInterface_iid
53
FILE
"QDarwin"
QT_STRINGIFY
(QT_DARWIN_PERMISSION_PLUGIN)
"PermissionPlugin.json"
)
54
public
:
55
PERMISSION_PLUGIN_CLASSNAME
()
56
: QDarwinPermissionPlugin([[
PERMISSION_PLUGIN_HANDLER
alloc]
init
])
57
{}
58
};
59
60
QT_END_NAMESPACE
61
62
// Request
63
#if defined(BUILDING_PERMISSION_REQUEST)
64
extern
"C"
void
PERMISSION_PLUGIN_NAME
(Request)() {}
65
#endif
66
67
// -------------------------------------------------------
68
69
namespace
{
70
template
<
typename
NativeStatus>
71
struct
NativeStatusHelper;
72
73
template
<
typename
NativeStatus>
74
Qt::PermissionStatus
nativeStatusToQtStatus(NativeStatus status)
75
{
76
using
Converter = NativeStatusHelper<NativeStatus>;
77
switch
(status) {
78
case
Converter::Authorized:
79
return
Qt::PermissionStatus::Granted
;
80
case
Converter::Denied:
81
case
Converter::Restricted:
82
return
Qt::PermissionStatus::Denied
;
83
case
Converter::Undetermined:
84
return
Qt::PermissionStatus::Undetermined
;
85
}
86
qCWarning
(lcPermissions) <<
"Unknown permission status"
<< status <<
"detected in"
87
<<
QT_STRINGIFY
(QT_DARWIN_PERMISSION_PLUGIN);
88
return
Qt::PermissionStatus::Denied
;
89
}
90
}
// namespace
91
92
#define QT_DEFINE_PERMISSION_STATUS_CONVERTER(NativeStatus) \
93
namespace { template<> \
94
struct 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
QDarwinPermissionHandler
Definition
qdarwinpermissionplugin.mm:68
QPermissions::Private
Definition
qpermissions.cpp:674
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qstandardpaths_haiku.cpp:21
QT_END_NAMESPACE
Definition
qsharedpointer.cpp:1545
Qt::PermissionStatus
PermissionStatus
Definition
qnamespace.h:1711
Qt::PermissionStatus::Denied
@ Denied
Qt::PermissionStatus::Granted
@ Granted
Qt::PermissionStatus::Undetermined
@ Undetermined
QT_DECLARE_NAMESPACED_OBJC_INTERFACE
#define QT_DECLARE_NAMESPACED_OBJC_INTERFACE(classname, definition)
Definition
qcore_mac_p.h:69
qdarwinpermissionplugin_p.h
PERMISSION_PLUGIN_HANDLER
#define PERMISSION_PLUGIN_HANDLER
Definition
qdarwinpermissionplugin_p_p.h:39
PERMISSION_PLUGIN_CLASSNAME
#define PERMISSION_PLUGIN_CLASSNAME
Definition
qdarwinpermissionplugin_p_p.h:38
PERMISSION_PLUGIN_NAME
#define PERMISSION_PLUGIN_NAME(SUFFIX)
Definition
qdarwinpermissionplugin_p_p.h:34
qCWarning
#define qCWarning(category,...)
Definition
qloggingcategory.h:125
QPermissionPluginInterface_iid
#define QPermissionPluginInterface_iid
Definition
qpermissions_p.h:41
QtPluginMetaDataKeys::IID
@ IID
init
static QT_BEGIN_NAMESPACE void init(QTextBoundaryFinder::BoundaryType type, QStringView str, QCharAttributes *attributes)
Definition
qtextboundaryfinder.cpp:10
Q_OBJECT
#define Q_OBJECT
Definition
qtmetamacros.h:117
Q_PLUGIN_METADATA
#define Q_PLUGIN_METADATA(x)
Definition
qtmetamacros.h:54
QT_STRINGIFY
#define QT_STRINGIFY(x)
Definition
qtpreprocessorsupport.h:15
qtbase
src
corelib
platform
darwin
qdarwinpermissionplugin_p_p.h
Generated by
1.9.7