diff --git a/ios/iOS_utils.h b/ios/iOS_utils.h index 666644789..a50bf18f1 100644 --- a/ios/iOS_utils.h +++ b/ios/iOS_utils.h @@ -25,5 +25,7 @@ const char *bundlePath(); const char *frameworksPath(); const char *bundleIdentifier(); + +bool isOsVersionAtLeast(unsigned int osMajorVersion); } #pragma GCC visibility pop diff --git a/ios/iOS_utils.mm b/ios/iOS_utils.mm index 40772519c..7f25a9fdc 100644 --- a/ios/iOS_utils.mm +++ b/ios/iOS_utils.mm @@ -46,4 +46,9 @@ const char *bundlePath() { return NSBundle.mainBundle.bundlePath.fileSystemRepre const char *frameworksPath() { return NSBundle.mainBundle.privateFrameworksPath.fileSystemRepresentation; } const char *bundleIdentifier() { return NSBundle.mainBundle.bundleIdentifier.UTF8String; } + +bool isOsVersionAtLeast(unsigned int osMajorVersion) +{ + return NSProcessInfo.processInfo.operatingSystemVersion.majorVersion >= osMajorVersion; +} } diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index 393c209cf..07d62e805 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -215,6 +215,7 @@ endif() if(APPLE_IOS) target_link_libraries(vcmilauncher + iOS_utils "-framework UniformTypeIdentifiers" ) diff --git a/launcher/firstLaunch/firstlaunch_moc.cpp b/launcher/firstLaunch/firstlaunch_moc.cpp index 0e2a84027..d77790745 100644 --- a/launcher/firstLaunch/firstlaunch_moc.cpp +++ b/launcher/firstLaunch/firstlaunch_moc.cpp @@ -28,6 +28,8 @@ #ifdef VCMI_IOS #include "ios/selectdirectory.h" + +#include "iOS_utils.h" #elif defined(VCMI_ANDROID) #include #include @@ -228,9 +230,12 @@ void FirstLaunchView::heroesDataMissing() #ifdef VCMI_ANDROID // selecting directory with ACTION_OPEN_DOCUMENT_TREE is available only since API level 21 - bool canUseDataCopy = QtAndroid::androidSdkVersion() >= 21; + const bool canUseDataCopy = QtAndroid::androidSdkVersion() >= 21; +#elif defined(VCMI_IOS) + // selecting directory through UIDocumentPickerViewController is available only since iOS 13 + const bool canUseDataCopy = iOS_utils::isOsVersionAtLeast(13); #else - bool canUseDataCopy = true; + const bool canUseDataCopy = true; #endif ui->labelDataCopyTitle->setVisible(canUseDataCopy);