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 case EKAuthorizationStatusWriteOnly:
32 return Qt::PermissionStatus::Denied;
35 qCWarning(lcPermissions) <<
"Unknown permission status" << status <<
"detected in" << self;
36 return Qt::PermissionStatus::Denied;
39- (
QStringList)usageDescriptionsFor:(QPermission)permission
42 return {
"NSCalendarsUsageDescription" };
45- (
void)requestPermission:(QPermission)permission withCallback:(PermissionCallback)callback
47 if (!self.eventStore) {
51 self.eventStore = [[EKEventStore
new] autorelease];
54 [self.eventStore requestAccessToEntityType:EKEntityTypeEvent
55 completion:^(BOOL granted, NSError *
_Nullable error) {
62 callback([self currentStatus]);
69#include "moc_qdarwinpermissionplugin_p_p.cpp"
QList< QString > QStringList
Constructs a string list that contains the given string, str.