diff --git a/build_ios.sh b/build_ios.sh index f2e1a497a701950cdba8b4bd7fcc4bec0cc0dcc2..3d3d8873aafae6fb061b8ba5192274c8673b4125 100755 --- a/build_ios.sh +++ b/build_ios.sh @@ -14,6 +14,7 @@ mkdir -p ${SHADOW_BUILD_DIR} && cd ${SHADOW_BUILD_DIR} && #-- Create project only (build using Xcode) ${QMAKE} -r ${TRAVIS_BUILD_DIR}/qgroundcontrol.pro CONFIG+=WarningsAsErrorsOn CONFIG-=debug_and_release CONFIG+=release CONFIG+=ForAppStore +sed -i .bak 's/com.yourcompany.${PRODUCT_NAME:rfc1034identifier}/org.QGroundControl.qgc/' ${SHADOW_BUILD_DIR}/QGroundControl.xcodeproj/project.pbxproj #-- Create and build #${QMAKE} -r ${TRAVIS_BUILD_DIR}/qgroundcontrol.pro CONFIG+=WarningsAsErrorsOn CONFIG-=debug_and_release CONFIG+=release CONFIG+=ForAppStore && #xcodebuild -configuration Release -xcconfig ${TRAVIS_BUILD_DIR}/ios/qgroundcontrol_appstore.xcconfig diff --git a/ios/AppIcon29x29@2x~ipad.png b/ios/AppIcon29x29@2x~ipad.png deleted file mode 100644 index f7e168a033066189cf58773d56fcff1da8c029b0..0000000000000000000000000000000000000000 Binary files a/ios/AppIcon29x29@2x~ipad.png and /dev/null differ diff --git a/ios/AppIcon29x29~ipad.png b/ios/AppIcon29x29~ipad.png deleted file mode 100644 index 58e563e536b0f2901ae40c69958fdafa9fc79469..0000000000000000000000000000000000000000 Binary files a/ios/AppIcon29x29~ipad.png and /dev/null differ diff --git a/ios/AppIcon40x40@2x~ipad.png b/ios/AppIcon40x40@2x~ipad.png deleted file mode 100644 index 6f3bca5d8053923005a4fda32a035d1a3a36345f..0000000000000000000000000000000000000000 Binary files a/ios/AppIcon40x40@2x~ipad.png and /dev/null differ diff --git a/ios/AppIcon50x50@2x~ipad.png b/ios/AppIcon50x50@2x~ipad.png deleted file mode 100644 index 3ead1ebc856bc1e8579f2e1071d326f812d1edca..0000000000000000000000000000000000000000 Binary files a/ios/AppIcon50x50@2x~ipad.png and /dev/null differ diff --git a/ios/AppIcon50x50~ipad.png b/ios/AppIcon50x50~ipad.png deleted file mode 100644 index 98efa88fafcd45a34d99f6d0e1d8d278932225e1..0000000000000000000000000000000000000000 Binary files a/ios/AppIcon50x50~ipad.png and /dev/null differ diff --git a/ios/AppIcon57x57.png b/ios/AppIcon57x57.png deleted file mode 100644 index 924ae4ef46863a1d95a53a155e5d21b0b8aa6c5b..0000000000000000000000000000000000000000 Binary files a/ios/AppIcon57x57.png and /dev/null differ diff --git a/ios/AppIcon57x57@2x.png b/ios/AppIcon57x57@2x.png deleted file mode 100644 index dc3edd1cdd34a2981b96ade4f7ad2ae2810ec536..0000000000000000000000000000000000000000 Binary files a/ios/AppIcon57x57@2x.png and /dev/null differ diff --git a/ios/AppIcon72x72@2x~ipad.png b/ios/AppIcon72x72@2x~ipad.png deleted file mode 100644 index 77f568f8bf2a9b5de7bf6c3ab6559e4e82cb1cf5..0000000000000000000000000000000000000000 Binary files a/ios/AppIcon72x72@2x~ipad.png and /dev/null differ diff --git a/ios/AppIcon72x72~ipad.png b/ios/AppIcon72x72~ipad.png deleted file mode 100644 index ca7bbd19ef7a6370026f5598240acc6403e0c395..0000000000000000000000000000000000000000 Binary files a/ios/AppIcon72x72~ipad.png and /dev/null differ diff --git a/ios/AppIcon83.5x83.5@2x~ipad.png b/ios/AppIcon83.5x83.5@2x~ipad.png deleted file mode 100644 index 072f3317187340f1385e0741206048be209ec3e6..0000000000000000000000000000000000000000 Binary files a/ios/AppIcon83.5x83.5@2x~ipad.png and /dev/null differ diff --git a/ios/AppIcon29x29.png b/ios/Images.xcassets/AppIcon.appiconset/AppIcon29x29.png similarity index 100% rename from ios/AppIcon29x29.png rename to ios/Images.xcassets/AppIcon.appiconset/AppIcon29x29.png diff --git a/ios/AppIcon29x29@2x.png b/ios/Images.xcassets/AppIcon.appiconset/AppIcon29x29@2x.png similarity index 100% rename from ios/AppIcon29x29@2x.png rename to ios/Images.xcassets/AppIcon.appiconset/AppIcon29x29@2x.png diff --git a/ios/AppIcon40x40@2x.png b/ios/Images.xcassets/AppIcon.appiconset/AppIcon40x40@2x.png similarity index 100% rename from ios/AppIcon40x40@2x.png rename to ios/Images.xcassets/AppIcon.appiconset/AppIcon40x40@2x.png diff --git a/ios/AppIcon40x40~ipad.png b/ios/Images.xcassets/AppIcon.appiconset/AppIcon40x40~ipad.png similarity index 100% rename from ios/AppIcon40x40~ipad.png rename to ios/Images.xcassets/AppIcon.appiconset/AppIcon40x40~ipad.png diff --git a/ios/AppIcon60x60@2x.png b/ios/Images.xcassets/AppIcon.appiconset/AppIcon60x60@2x.png similarity index 100% rename from ios/AppIcon60x60@2x.png rename to ios/Images.xcassets/AppIcon.appiconset/AppIcon60x60@2x.png diff --git a/ios/AppIcon76x76@2x~ipad.png b/ios/Images.xcassets/AppIcon.appiconset/AppIcon76x76@2x~ipad.png similarity index 100% rename from ios/AppIcon76x76@2x~ipad.png rename to ios/Images.xcassets/AppIcon.appiconset/AppIcon76x76@2x~ipad.png diff --git a/ios/AppIcon76x76~ipad.png b/ios/Images.xcassets/AppIcon.appiconset/AppIcon76x76~ipad.png similarity index 100% rename from ios/AppIcon76x76~ipad.png rename to ios/Images.xcassets/AppIcon.appiconset/AppIcon76x76~ipad.png diff --git a/ios/Images.xcassets/AppIcon.appiconset/Contents.json b/ios/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..001862ca607db142d82ece9d374e440e2cf4f1c8 --- /dev/null +++ b/ios/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,116 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-41.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-60.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "AppIcon29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-87.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "AppIcon40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-120.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "AppIcon60x60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-180.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-20.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-40.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "AppIcon29x29.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "AppIcon29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "AppIcon40x40~ipad.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "AppIcon40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "AppIcon76x76~ipad.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "AppIcon76x76@2x~ipad.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-167.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon-1024.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/ios/Images.xcassets/AppIcon.appiconset/Icon-1024.png b/ios/Images.xcassets/AppIcon.appiconset/Icon-1024.png new file mode 100644 index 0000000000000000000000000000000000000000..8da3b548a402ac9cd23125e7f97b434622187e80 Binary files /dev/null and b/ios/Images.xcassets/AppIcon.appiconset/Icon-1024.png differ diff --git a/ios/Images.xcassets/AppIcon.appiconset/Icon-120.png b/ios/Images.xcassets/AppIcon.appiconset/Icon-120.png new file mode 100644 index 0000000000000000000000000000000000000000..f3c3af7cbe9c48a03bd04ce3cb4dc23c37db0f3e Binary files /dev/null and b/ios/Images.xcassets/AppIcon.appiconset/Icon-120.png differ diff --git a/ios/Images.xcassets/AppIcon.appiconset/Icon-167.png b/ios/Images.xcassets/AppIcon.appiconset/Icon-167.png new file mode 100644 index 0000000000000000000000000000000000000000..1393b32d3f2473afa6df43145946e686ea6eb51c Binary files /dev/null and b/ios/Images.xcassets/AppIcon.appiconset/Icon-167.png differ diff --git a/ios/Images.xcassets/AppIcon.appiconset/Icon-180.png b/ios/Images.xcassets/AppIcon.appiconset/Icon-180.png new file mode 100644 index 0000000000000000000000000000000000000000..ce1a454da59bfd18980b214078669ffe9b9a47e3 Binary files /dev/null and b/ios/Images.xcassets/AppIcon.appiconset/Icon-180.png differ diff --git a/ios/Images.xcassets/AppIcon.appiconset/Icon-20.png b/ios/Images.xcassets/AppIcon.appiconset/Icon-20.png new file mode 100644 index 0000000000000000000000000000000000000000..2d04911cf5abe864809cb4425014af3f8935e096 Binary files /dev/null and b/ios/Images.xcassets/AppIcon.appiconset/Icon-20.png differ diff --git a/ios/Images.xcassets/AppIcon.appiconset/Icon-40.png b/ios/Images.xcassets/AppIcon.appiconset/Icon-40.png new file mode 100644 index 0000000000000000000000000000000000000000..9debb9302d9121c49d9deb6403b32f5fd6abd356 Binary files /dev/null and b/ios/Images.xcassets/AppIcon.appiconset/Icon-40.png differ diff --git a/ios/Images.xcassets/AppIcon.appiconset/Icon-41.png b/ios/Images.xcassets/AppIcon.appiconset/Icon-41.png new file mode 100644 index 0000000000000000000000000000000000000000..9debb9302d9121c49d9deb6403b32f5fd6abd356 Binary files /dev/null and b/ios/Images.xcassets/AppIcon.appiconset/Icon-41.png differ diff --git a/ios/Images.xcassets/AppIcon.appiconset/Icon-60.png b/ios/Images.xcassets/AppIcon.appiconset/Icon-60.png new file mode 100644 index 0000000000000000000000000000000000000000..7cbec4ddb3ef60aaaf285bb1710bb7829155cc97 Binary files /dev/null and b/ios/Images.xcassets/AppIcon.appiconset/Icon-60.png differ diff --git a/ios/Images.xcassets/AppIcon.appiconset/Icon-87.png b/ios/Images.xcassets/AppIcon.appiconset/Icon-87.png new file mode 100644 index 0000000000000000000000000000000000000000..2aeaa73875675034aee7b1dde5397b7b10740d17 Binary files /dev/null and b/ios/Images.xcassets/AppIcon.appiconset/Icon-87.png differ diff --git a/ios/Images.xcassets/Contents.json b/ios/Images.xcassets/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..da4a164c918651cdd1e11dca5cc62c333f097601 --- /dev/null +++ b/ios/Images.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/ios/iOS-Info.plist b/ios/iOS-Info.plist index f9ea584bf62e0c494017c7fcc4cea0c2c23a9399..042cab652291a6aa701cf981958d21263f05e69f 100644 --- a/ios/iOS-Info.plist +++ b/ios/iOS-Info.plist @@ -26,8 +26,6 @@ 1 LSRequiresIPhoneOS - UILaunchStoryboardName - QGCLaunchScreen UIRequiresFullScreen CFBundleInfoDictionaryVersion @@ -38,6 +36,8 @@ Ground Station Location NSLocationWhenInUseUsageDescription Ground Station Location + UILaunchStoryboardName + QGCLaunchScreen UISupportedInterfaceOrientations UIInterfaceOrientationLandscapeLeft diff --git a/ios/iOSForAppStore-Info-Source.plist b/ios/iOSForAppStore-Info-Source.plist index de8c15ec7a3cf9955a5b701bfe2cd2450ce407aa..9967773727914d698d56fa3c880450b0f4f34541 100644 --- a/ios/iOSForAppStore-Info-Source.plist +++ b/ios/iOSForAppStore-Info-Source.plist @@ -16,51 +16,12 @@ QGC uses UVC devices for video streaming. NSPhotoLibraryUsageDescription We do not access it. Apple thinks we do. + UILaunchStoryboardName + QGCLaunchScreen UIRequiredDeviceCapabilities armv7 - CFBundleIcons - - CFBundlePrimaryIcon - - CFBundleIconFiles - - AppIcon29x29.png - AppIcon29x29@2x.png - AppIcon40x40@2x.png - AppIcon57x57.png - AppIcon57x57@2x.png - AppIcon60x60@2x.png - - - - CFBundleIcons~ipad - - CFBundlePrimaryIcon - - CFBundleIconFiles - - AppIcon29x29.png - AppIcon29x29@2x.png - AppIcon40x40@2x.png - AppIcon57x57.png - AppIcon57x57@2x.png - AppIcon60x60@2x.png - AppIcon29x29~ipad.png - AppIcon29x29@2x~ipad.png - AppIcon40x40~ipad.png - AppIcon40x40@2x~ipad.png - AppIcon50x50~ipad.png - AppIcon50x50@2x~ipad.png - AppIcon72x72~ipad.png - AppIcon72x72@2x~ipad.png - AppIcon76x76~ipad.png - AppIcon76x76@2x~ipad.png - AppIcon83.5x83.5@2x~ipad.png - - - CFBundleIdentifier org.QGroundControl.qgc CFBundleInfoDictionaryVersion @@ -83,8 +44,8 @@ Ground Station Location NSLocationWhenInUseUsageDescription Ground Station Location - UILaunchStoryboardName - QGCLaunchScreen + NSLocationAlwaysAndWhenInUseUsageDescription + Ground Station Location NSBluetoothPeripheralUsageDescription QGroundControl would like to use bluetooth. UIRequiresFullScreen diff --git a/qgroundcontrol.pro b/qgroundcontrol.pro index b2ca974c1bd8937e84cbff2c9e42662d0ec876ae..b3847f14daf43ce830f1b8d248a96bd08f31df65 100644 --- a/qgroundcontrol.pro +++ b/qgroundcontrol.pro @@ -62,9 +62,9 @@ iOSBuild { QMAKE_INFO_PLIST = $${BASEDIR}/ios/iOS-Info.plist OTHER_FILES += $${BASEDIR}/ios/iOS-Info.plist } - BUNDLE.files = $$files($$PWD/ios/AppIcon*.png) $$PWD/ios/QGCLaunchScreen.xib $$QMAKE_INFO_PLIST - QMAKE_BUNDLE_DATA += BUNDLE - #-- TODO: Add iTunesArtwork + QMAKE_ASSET_CATALOGS += ios/Images.xcassets + BUNDLE.files = ios/QGCLaunchScreen.xib $$QMAKE_INFO_PLIST + QMAKE_BUNDLE_DATA += BUNDLE } LinuxBuild { diff --git a/src/QmlControls/ScreenTools.qml b/src/QmlControls/ScreenTools.qml index 231ac6946b9f31168bed52dd711cb2f82679b2af..5d9da6925f701a2f1de2fb72a829ec6a0cc926d3 100644 --- a/src/QmlControls/ScreenTools.qml +++ b/src/QmlControls/ScreenTools.qml @@ -54,7 +54,20 @@ Item { readonly property real largeFontPointRatio: 1.5 property real realPixelDensity: QGroundControl.corePlugin.options.devicePixelDensity != 0 ? QGroundControl.corePlugin.options.devicePixelDensity : Screen.pixelDensity - property real realPixelRatio: QGroundControl.corePlugin.options.devicePixelRatio != 0 ? QGroundControl.corePlugin.options.devicePixelRatio : Screen.devicePixelRatio + + property real realPixelRatio: { + //-- If a plugin defines it, just use what it tells us + if (QGroundControl.corePlugin.options.devicePixelRatio != 0) + return QGroundControl.corePlugin.options.devicePixelRatio + //-- Mobile is rather unreliable. They all return 1 for Screen.devicePixelRatio. + if(isMobile) { + // Lets assume it's unlikely you have a tablet over 300mm wide + if((Screen.width / Screen.pixelDensity * Screen.devicePixelRatio) > 300) + return 2 + } + //-- Use whatever the system tells us + return Screen.devicePixelRatio + } property bool isAndroid: ScreenToolsController.isAndroid property bool isiOS: ScreenToolsController.isiOS diff --git a/src/VideoStreaming/VideoStreaming.cc b/src/VideoStreaming/VideoStreaming.cc index 9fe2e0d96eb4e63992d4d7f5974d2446df5abccc..87dd76d7303dd837463b00d26ae5ebf0498e059e 100644 --- a/src/VideoStreaming/VideoStreaming.cc +++ b/src/VideoStreaming/VideoStreaming.cc @@ -120,8 +120,8 @@ void initializeVideoStreaming(int &argc, char* argv[], char* logpath, char* debu qgcputenv("GST_PLUGIN_PATH", currentDir, "/gstreamer-plugins"); #endif - // Initialize GStreamer +#if !defined(__ios__) if (logpath) { if (debuglevel) { qputenv("GST_DEBUG", debuglevel); @@ -130,9 +130,8 @@ void initializeVideoStreaming(int &argc, char* argv[], char* logpath, char* debu qputenv("GST_DEBUG_FILE", QString("%1/%2").arg(logpath).arg("gstreamer-log.txt").toUtf8()); qputenv("GST_DEBUG_DUMP_DOT_DIR", logpath); } - - - GError* error = NULL; +#endif + GError* error = nullptr; if (!gst_init_check(&argc, &argv, &error)) { qCritical() << "gst_init_check() failed: " << error->message; g_error_free(error); diff --git a/src/ui/preferences/DebugWindow.qml b/src/ui/preferences/DebugWindow.qml index c070de81082bbd4fb08f4f5e0b3b6d228608b821..8ffe9b4fa31115ca5a5e8ab6663f9ecdfb92c64c 100644 --- a/src/ui/preferences/DebugWindow.qml +++ b/src/ui/preferences/DebugWindow.qml @@ -160,13 +160,13 @@ QGCView { font.family: ScreenTools.normalFontFamily } Text { - text: Screen.pixelDensity.toFixed(4) - color: qgcPal.text + text: Screen.pixelDensity.toFixed(4) + color: qgcPal.text font.family: ScreenTools.normalFontFamily } Text { - text: qsTr("Font Point Size 13.5") - color: qgcPal.text + text: qsTr("Font Point Size 13.5") + color: qgcPal.text font.pointSize: 13.5 font.family: ScreenTools.normalFontFamily } @@ -218,6 +218,38 @@ QGCView { font.pointSize: 15 font.family: ScreenTools.normalFontFamily } + Text { + text: qsTr("Computed Screen Height:") + color: qgcPal.text + font.family: ScreenTools.normalFontFamily + } + Text { + text: (Screen.height / Screen.pixelDensity * Screen.devicePixelRatio).toFixed(0) + color: qgcPal.text + font.family: ScreenTools.normalFontFamily + } + Text { + text: qsTr("Font Point Size 15.5") + color: qgcPal.text + font.pointSize: 15.5 + font.family: ScreenTools.normalFontFamily + } + Text { + text: qsTr("Computed Screen Width:") + color: qgcPal.text + font.family: ScreenTools.normalFontFamily + } + Text { + text: (Screen.width / Screen.pixelDensity * Screen.devicePixelRatio).toFixed(0) + color: qgcPal.text + font.family: ScreenTools.normalFontFamily + } + Text { + text: qsTr("Font Point Size 16") + color: qgcPal.text + font.pointSize: 16 + font.family: ScreenTools.normalFontFamily + } } Rectangle {