6#include <EventKit/EventKit.h>
8@interface QDarwinCalendarPermissionHandler ()
9@property (nonatomic, retain) EKEventStore *eventStore;
12@implementation QDarwinCalendarPermissionHandler
13- (Qt::PermissionStatus)checkPermission:(QPermission)permission
16 return [self currentStatus];
19- (Qt::PermissionStatus)currentStatus
21 auto status = [EKEventStore authorizationStatusForEntityType:EKEntityTypeEvent];
23 case EKAuthorizationStatusNotDetermined:
24 return Qt::PermissionStatus::Undetermined;
25 case EKAuthorizationStatusRestricted:
26 case EKAuthorizationStatusDenied:
27 return Qt::PermissionStatus::Denied;
28 case EKAuthorizationStatusAuthorized:
29 return Qt::PermissionStatus::Granted;
30#if QT_MACOS_IOS_PLATFORM_SDK_EQUAL_OR_ABOVE(140000
, 170000
)
31 case EKAuthorizationStatusWriteOnly:
33 return Qt::PermissionStatus::Denied;
37 qCWarning(lcPermissions) <<
"Unknown permission status" << status <<
"detected in" << self;
38 return Qt::PermissionStatus::Denied;
41- (
QStringList)usageDescriptionsFor:(QPermission)permission
44 return {
"NSCalendarsUsageDescription" };
47- (
void)requestPermission:(QPermission)permission withCallback:(PermissionCallback)callback
49 if (!self.eventStore) {
53 self.eventStore = [[EKEventStore
new] autorelease];
56 [self.eventStore requestAccessToEntityType:EKEntityTypeEvent
57 completion:^(BOOL granted, NSError *
_Nullable error) {
64 callback([self currentStatus]);
71#include "moc_qdarwinpermissionplugin_p_p.cpp"
QList< QString > QStringList
Constructs a string list that contains the given string, str.