Просмотр исходного кода

[launcher] show button to copy existing data on iOS >= 13

Andrey Filipenkov 1 год назад
Родитель
Сommit
9e5b51c86f
4 измененных файлов с 15 добавлено и 2 удалено
  1. 2 0
      ios/iOS_utils.h
  2. 5 0
      ios/iOS_utils.mm
  3. 1 0
      launcher/CMakeLists.txt
  4. 7 2
      launcher/firstLaunch/firstlaunch_moc.cpp

+ 2 - 0
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

+ 5 - 0
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;
+}
 }

+ 1 - 0
launcher/CMakeLists.txt

@@ -215,6 +215,7 @@ endif()
 
 if(APPLE_IOS)
 	target_link_libraries(vcmilauncher
+		iOS_utils
 		"-framework UniformTypeIdentifiers"
 	)
 

+ 7 - 2
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 <QAndroidJniObject>
 #include <QtAndroid>
@@ -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);