From bf249abee98727d517f52b1126dc7fda8af4e302 Mon Sep 17 00:00:00 2001 From: Alex Blasche Date: Wed, 17 Sep 2014 11:22:59 +0200 Subject: Fix shadow build behavior of fluidlauncher example All files are embedded into a qrc file. The image lookup first assumes that local dirs are used. If nothing is found the lookup moves to the qrc file. This enables flexibility whereby the app can still be customized after having been built. Task-number: QTBUG-28377 Change-Id: I99371ecce08a45321e475a7c32d5b368716bdb18 Reviewed-by: Alessandro Portale --- .../svg/embedded/fluidlauncher/demoapplication.cpp | 17 ++++++++- .../svg/embedded/fluidlauncher/fluidlauncher.cpp | 2 +- .../svg/embedded/fluidlauncher/fluidlauncher.pro | 2 +- .../svg/embedded/fluidlauncher/fluidlauncher.qrc | 43 ++++++++++++++++++++++ examples/svg/embedded/fluidlauncher/slideshow.cpp | 6 +++ 5 files changed, 67 insertions(+), 3 deletions(-) create mode 100644 examples/svg/embedded/fluidlauncher/fluidlauncher.qrc diff --git a/examples/svg/embedded/fluidlauncher/demoapplication.cpp b/examples/svg/embedded/fluidlauncher/demoapplication.cpp index a01894f..dfba309 100644 --- a/examples/svg/embedded/fluidlauncher/demoapplication.cpp +++ b/examples/svg/embedded/fluidlauncher/demoapplication.cpp @@ -48,6 +48,11 @@ DemoApplication::DemoApplication(QString executableName, QString caption, QStrin else executablePath = QDir::cleanPath(QDir::currentPath() + QLatin1Char('/') + executableName); +#ifdef WIN32 + if (!executablePath.endsWith(QLatin1String(".exe"))) + executablePath.append(QLatin1String(".exe")); +#endif + arguments = args; process.setProcessChannelMode(QProcess::ForwardedChannels); @@ -69,7 +74,17 @@ void DemoApplication::launch() QImage DemoApplication::getImage() const { - return imagePath.isEmpty() ? QImage() : QImage(imagePath); + if (imagePath.isEmpty()) + return QImage(); + + // in local dir? + QImage result(imagePath); + if (!result.isNull()) + return result; + + // provided by qrc + result = QImage(QString(":/fluidlauncher/%1").arg(imagePath)); + return result; } QString DemoApplication::getCaption() diff --git a/examples/svg/embedded/fluidlauncher/fluidlauncher.cpp b/examples/svg/embedded/fluidlauncher/fluidlauncher.cpp index 599bd56..e9e6492 100644 --- a/examples/svg/embedded/fluidlauncher/fluidlauncher.cpp +++ b/examples/svg/embedded/fluidlauncher/fluidlauncher.cpp @@ -72,7 +72,7 @@ FluidLauncher::FluidLauncher(QStringList* args) if ( (configIndex != -1) && (configIndex != args->count()-1) ) success = loadConfig(args->at(configIndex+1)); else - success = loadConfig("config.xml"); + success = loadConfig(":/fluidlauncher/config.xml"); if (success) { populatePictureFlow(); diff --git a/examples/svg/embedded/fluidlauncher/fluidlauncher.pro b/examples/svg/embedded/fluidlauncher/fluidlauncher.pro index f2d4b60..4046055 100644 --- a/examples/svg/embedded/fluidlauncher/fluidlauncher.pro +++ b/examples/svg/embedded/fluidlauncher/fluidlauncher.pro @@ -15,7 +15,7 @@ SOURCES += \ pictureflow.cpp \ slideshow.cpp -EXAMPLE_FILES += config.xml screenshots slides +RESOURCES = fluidlauncher.qrc target.path = $$[QT_INSTALL_EXAMPLES]/svg/embedded/fluidlauncher INSTALLS += target diff --git a/examples/svg/embedded/fluidlauncher/fluidlauncher.qrc b/examples/svg/embedded/fluidlauncher/fluidlauncher.qrc new file mode 100644 index 0000000..e4a451b --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/fluidlauncher.qrc @@ -0,0 +1,43 @@ + + + slides/demo_1.png + slides/demo_2.png + slides/demo_3.png + slides/demo_4.png + slides/demo_5.png + slides/demo_6.png + screenshots/anomaly_s60.png + screenshots/concentriccircles.png + screenshots/context2d_s60.png + screenshots/deform.png + screenshots/desktopservices_s60.png + screenshots/digiflip.png + screenshots/elasticnodes.png + screenshots/embeddedsvgviewer_s60.png + screenshots/embeddedsvgviewer.png + screenshots/flickable.png + screenshots/flightinfo_s60.png + screenshots/fridgemagnets_s60.png + screenshots/ftp_s60.png + screenshots/lightmaps.png + screenshots/mediaplayer.png + screenshots/pathstroke.png + screenshots/qmlcalculator.png + screenshots/qmlclocks.png + screenshots/qmldialcontrol.png + screenshots/qmleasing.png + screenshots/qmlflickr.jpg + screenshots/qmlphotoviewer.jpg + screenshots/qmltwitter.jpg + screenshots/raycasting.png + screenshots/saxbookmarks_s60.png + screenshots/softkeys_s60.png + screenshots/spectrum.png + screenshots/styledemo_s60.png + screenshots/styledemo.png + screenshots/weatherinfo.png + screenshots/wiggly_s60.png + screenshots/wiggly.png + config.xml + + diff --git a/examples/svg/embedded/fluidlauncher/slideshow.cpp b/examples/svg/embedded/fluidlauncher/slideshow.cpp index efdb97c..2df6642 100644 --- a/examples/svg/embedded/fluidlauncher/slideshow.cpp +++ b/examples/svg/embedded/fluidlauncher/slideshow.cpp @@ -98,8 +98,14 @@ void SlideShow::addImageDir(QString dirName) { QDir dir(dirName); + // lookup in directories QStringList fileNames = dir.entryList(QDir::Files | QDir::Readable, QDir::Name); + for (int i=0; iimagePaths << dir.absoluteFilePath(fileNames[i]); + // lookup in qrc + dir = QDir(QString(":/fluidlauncher/" + dirName)); + fileNames = dir.entryList(QDir::Files | QDir::Readable, QDir::Name); for (int i=0; iimagePaths << dir.absoluteFilePath(fileNames[i]); } -- cgit v1.2.1