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 {