summaryrefslogtreecommitdiffstats
path: root/src/corelib/platform/darwin/qdarwinpermissionplugin_calendar.mm
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/platform/darwin/qdarwinpermissionplugin_calendar.mm')
-rw-r--r--src/corelib/platform/darwin/qdarwinpermissionplugin_calendar.mm22
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