From 64491c9b72258fb16bf7d9c0eb1877a1b5c1c320 Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Tue, 16 Apr 2019 08:32:33 +0200 Subject: iOS: Add a variable to customize where the launch image is taken from MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For those who are providing their own launch images for their iOS projects then QMAKE_IOS_LAUNCH_SCREEN can be set to point to the location where the launch image to be used over the default. [ChangeLog][Platform Specific Changes][iOS] Added support for specifying a launch image to be used for an iOS project. This can be achieved by using QMAKE_IOS_LAUNCH_SCREEN. Change-Id: Ibb236655b282132ab5eee747986a93abb9802200 Reviewed-by: Tor Arne Vestbø --- mkspecs/features/uikit/default_post.prf | 15 +++++++++------ mkspecs/macx-ios-clang/Info.plist.app | 2 +- qmake/doc/src/qmake-manual.qdoc | 10 ++++++++++ qmake/generators/mac/pbuilder_pbx.cpp | 6 ++++++ qmake/generators/unix/unixmake2.cpp | 7 +++++++ 5 files changed, 33 insertions(+), 7 deletions(-) diff --git a/mkspecs/features/uikit/default_post.prf b/mkspecs/features/uikit/default_post.prf index 9a429b1f6e..80c1fc66cd 100644 --- a/mkspecs/features/uikit/default_post.prf +++ b/mkspecs/features/uikit/default_post.prf @@ -29,12 +29,15 @@ macx-xcode { QMAKE_MAC_XCODE_SETTINGS += device_family ios { - # Set up default LaunchScreen - qmake_launch_screen = LaunchScreen.storyboard - qmake_copy_launch_screen.input = $$QMAKESPEC/$$qmake_launch_screen - qmake_copy_launch_screen.output = $$OUT_PWD/$${TARGET}.xcodeproj/$$qmake_launch_screen - QMAKE_SUBSTITUTES += qmake_copy_launch_screen - qmake_launch_screens.files = $$qmake_copy_launch_screen.output + isEmpty(QMAKE_IOS_LAUNCH_SCREEN) { + qmake_launch_screen = LaunchScreen.storyboard + qmake_copy_launch_screen.input = $$QMAKESPEC/$$qmake_launch_screen + qmake_copy_launch_screen.output = $$OUT_PWD/$${TARGET}.xcodeproj/$$qmake_launch_screen + QMAKE_SUBSTITUTES += qmake_copy_launch_screen + qmake_launch_screens.files = $$qmake_copy_launch_screen.output + } else { + qmake_launch_screens.files = $$QMAKE_IOS_LAUNCH_SCREEN + } QMAKE_BUNDLE_DATA += qmake_launch_screens } } diff --git a/mkspecs/macx-ios-clang/Info.plist.app b/mkspecs/macx-ios-clang/Info.plist.app index 03ba3e82b4..ecea6c0377 100644 --- a/mkspecs/macx-ios-clang/Info.plist.app +++ b/mkspecs/macx-ios-clang/Info.plist.app @@ -27,7 +27,7 @@ NOTE This file was generated by Qt/QMake. UILaunchStoryboardName - LaunchScreen + ${IOS_LAUNCH_SCREEN} UISupportedInterfaceOrientations UIInterfaceOrientationPortrait diff --git a/qmake/doc/src/qmake-manual.qdoc b/qmake/doc/src/qmake-manual.qdoc index 085cd5c461..5d77e74dcf 100644 --- a/qmake/doc/src/qmake-manual.qdoc +++ b/qmake/doc/src/qmake-manual.qdoc @@ -2260,6 +2260,9 @@ \row \li \c ${WATCHOS_DEPLOYMENT_TARGET} \li Expands to the value of QMAKE_WATCHOS_DEPLOYMENT_TARGET. + \row + \li \c ${IOS_LAUNCH_SCREEN} + \li Expands to the value of QMAKE_IOS_LAUNCH_SCREEN. \endtable \note When using the Xcode generator, the above \c{${var}}-style @@ -2283,6 +2286,13 @@ For more information, see \l {Expressing Supported iOS Versions}. + \section1 QMAKE_IOS_LAUNCH_SCREEN + + \note This variable is used on the iOS platform only. + + Specifies the launch screen that is used by the application. If this is not set + then a default launch screen is used. + \section1 QMAKE_LFLAGS Specifies a general set of flags that are passed to diff --git a/qmake/generators/mac/pbuilder_pbx.cpp b/qmake/generators/mac/pbuilder_pbx.cpp index c6aab40d85..93b8151c31 100644 --- a/qmake/generators/mac/pbuilder_pbx.cpp +++ b/qmake/generators/mac/pbuilder_pbx.cpp @@ -1615,6 +1615,12 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t) plist_in_text.replace(QLatin1String("@TYPEINFO@"), (project->isEmpty("QMAKE_PKGINFO_TYPEINFO") ? QString::fromLatin1("????") : project->first("QMAKE_PKGINFO_TYPEINFO").left(4).toQString())); + QString launchScreen = var("QMAKE_IOS_LAUNCH_SCREEN"); + if (launchScreen.isEmpty()) + launchScreen = QLatin1String("LaunchScreen"); + else + launchScreen = QFileInfo(launchScreen).baseName(); + plist_in_text.replace(QLatin1String("${IOS_LAUNCH_SCREEN}"), launchScreen); QFile plist_out_file(Option::output_dir + "/Info.plist"); if (plist_out_file.open(QIODevice::WriteOnly | QIODevice::Text)) { QTextStream plist_out(&plist_out_file); diff --git a/qmake/generators/unix/unixmake2.cpp b/qmake/generators/unix/unixmake2.cpp index 48352c0c47..190f5e355a 100644 --- a/qmake/generators/unix/unixmake2.cpp +++ b/qmake/generators/unix/unixmake2.cpp @@ -798,6 +798,13 @@ UnixMakefileGenerator::writeMakeParts(QTextStream &t) commonSedArgs << "-e \"s,\\$${WATCHOS_DEPLOYMENT_TARGET}," << project->first("QMAKE_WATCHOS_DEPLOYMENT_TARGET").toQString() << ",g\" "; + QString launchScreen = var("QMAKE_IOS_LAUNCH_SCREEN"); + if (launchScreen.isEmpty()) + launchScreen = QLatin1String("LaunchScreen"); + else + launchScreen = QFileInfo(launchScreen).baseName(); + commonSedArgs << "-e \"s,\\$${IOS_LAUNCH_SCREEN}," << launchScreen << ",g\" "; + if (!isFramework) { ProString app_bundle_name = var("QMAKE_APPLICATION_BUNDLE_NAME"); if (app_bundle_name.isEmpty()) -- cgit v1.2.3