summaryrefslogtreecommitdiffstats
path: root/src/corelib/platform/darwin
diff options
context:
space:
mode:
authorTor Arne Vestbø <tor.arne.vestbo@qt.io>2023-06-27 17:55:24 +0200
committerTor Arne Vestbø <tor.arne.vestbo@qt.io>2023-06-29 03:13:10 +0200
commit2736e908e9da05ed8a03a8f163237ec68606e1a3 (patch)
tree28d0593fdc238126ffea9aff1552cf73809da35b /src/corelib/platform/darwin
parent9526a7693604c5513a08a4ab08c0c691c3003f39 (diff)
permissions: Handle EKAuthorizationStatusWriteOnly on macOS 14/iOS 17
For now we do not have a QCalendarPermission::AccessMode::WriteOnly, so we have to report Qt::PermissionStatus::Denied. Fixes: QTBUG-114864 Pick-to: 6.5 6.6 Change-Id: I94e92912ef4c24adb524ccf2cf28553115d6781b Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Doris Verria <doris.verria@qt.io>
Diffstat (limited to 'src/corelib/platform/darwin')
-rw-r--r--src/corelib/platform/darwin/qdarwinpermissionplugin_calendar.mm20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/corelib/platform/darwin/qdarwinpermissionplugin_calendar.mm b/src/corelib/platform/darwin/qdarwinpermissionplugin_calendar.mm
index 79a85ef3d2..cf91a4f1cd 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,22 @@ QT_DEFINE_PERMISSION_STATUS_CONVERTER(EKAuthorizationStatus);
- (Qt::PermissionStatus)currentStatus
{
- const auto status = [EKEventStore authorizationStatusForEntityType:EKEntityTypeEvent];
- return nativeStatusToQtStatus(status);
+ switch ([EKEventStore authorizationStatusForEntityType:EKEntityTypeEvent]) {
+ 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
+ }
+
+ Q_UNREACHABLE();
}
- (QStringList)usageDescriptionsFor:(QPermission)permission