diff options
Diffstat (limited to 'src/corelib/platform/darwin/qdarwinpermissionplugin_calendar.mm')
-rw-r--r-- | src/corelib/platform/darwin/qdarwinpermissionplugin_calendar.mm | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/src/corelib/platform/darwin/qdarwinpermissionplugin_calendar.mm b/src/corelib/platform/darwin/qdarwinpermissionplugin_calendar.mm index 79a85ef3d2..a3eddd6d8f 100644 --- a/src/corelib/platform/darwin/qdarwinpermissionplugin_calendar.mm +++ b/src/corelib/platform/darwin/qdarwinpermissionplugin_calendar.mm @@ -5,8 +5,6 @@ #include <EventKit/EventKit.h> -QT_DEFINE_PERMISSION_STATUS_CONVERTER(EKAuthorizationStatus); - @interface QDarwinCalendarPermissionHandler () @property (nonatomic, retain) EKEventStore *eventStore; @end @@ -20,8 +18,24 @@ QT_DEFINE_PERMISSION_STATUS_CONVERTER(EKAuthorizationStatus); - (Qt::PermissionStatus)currentStatus { - const auto status = [EKEventStore authorizationStatusForEntityType:EKEntityTypeEvent]; - return nativeStatusToQtStatus(status); + auto status = [EKEventStore authorizationStatusForEntityType:EKEntityTypeEvent]; + switch (status) { + case EKAuthorizationStatusNotDetermined: + return Qt::PermissionStatus::Undetermined; + case EKAuthorizationStatusRestricted: + case EKAuthorizationStatusDenied: + return Qt::PermissionStatus::Denied; + case EKAuthorizationStatusAuthorized: + return Qt::PermissionStatus::Granted; +#if QT_MACOS_IOS_PLATFORM_SDK_EQUAL_OR_ABOVE(140000, 170000) + case EKAuthorizationStatusWriteOnly: + // FIXME: Add WriteOnly AccessMode + return Qt::PermissionStatus::Denied; +#endif + } + + qCWarning(lcPermissions) << "Unknown permission status" << status << "detected in" << self; + return Qt::PermissionStatus::Denied; } - (QStringList)usageDescriptionsFor:(QPermission)permission |