summaryrefslogtreecommitdiffstats
path: root/tools/qmlscene/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/qmlscene/main.cpp')
-rw-r--r--tools/qmlscene/main.cpp60
1 files changed, 57 insertions, 3 deletions
diff --git a/tools/qmlscene/main.cpp b/tools/qmlscene/main.cpp
index cc2aa38542..765a9dc2fb 100644
--- a/tools/qmlscene/main.cpp
+++ b/tools/qmlscene/main.cpp
@@ -158,7 +158,10 @@ static QGLFormat getFormat()
class MyQSGView : public QSGView
{
public:
- MyQSGView() : QSGView(getFormat()) {}
+ MyQSGView() : QSGView(getFormat())
+ {
+ setResizeMode(QSGView::SizeRootObjectToView);
+ }
protected:
void paintEvent(QPaintEvent *e) {
@@ -248,6 +251,7 @@ struct Options
, fullscreen(false)
, scenegraphOnGraphicsview(false)
, clip(false)
+ , versionDetection(true)
{
}
@@ -258,6 +262,7 @@ struct Options
bool fullscreen;
bool scenegraphOnGraphicsview;
bool clip;
+ bool versionDetection;
};
#if defined(QMLSCENE_BUNDLE)
@@ -335,6 +340,51 @@ static int displayOptionsDialog(Options *options)
}
#endif
+static void checkAndAdaptVersion(const QUrl &url)
+{
+ if (!qgetenv("QMLSCENE_IMPORT_NAME").isEmpty()) {
+ return;
+ }
+
+ QString fileName = url.toLocalFile();
+ if (fileName.isEmpty())
+ return;
+
+ QFile f(fileName);
+ if (!f.open(QFile::ReadOnly | QFile::Text)) {
+ qWarning("qmlscene: failed to check version of file '%s', could not open...",
+ qPrintable(fileName));
+ return;
+ }
+
+ QRegExp quick1("import +QtQuick +1\\.");
+ QRegExp qt47("import +Qt +4\\.7");
+
+ QString envToWrite;
+ QString compat;
+
+ QTextStream stream(&f);
+ bool codeFound= false;
+ while (!codeFound && envToWrite.isEmpty()) {
+ QString line = stream.readLine();
+ if (line.contains("{"))
+ codeFound = true;
+ if (quick1.indexIn(line) >= 0) {
+ envToWrite = QLatin1String("quick1");
+ compat = QLatin1String("QtQuick 1.0");
+ } else if (qt47.indexIn(line) >= 0) {
+ envToWrite = QLatin1String("qt");
+ compat = QLatin1String("Qt 4.7");
+ }
+ }
+
+ if (!envToWrite.isEmpty()) {
+ qWarning("qmlscene: Autodetecting compatibility import \"%s\"...", qPrintable(compat));
+ if (qgetenv("QMLSCENE_IMPORT_NAME").isEmpty())
+ qputenv("QMLSCENE_IMPORT_NAME", envToWrite.toLatin1().constData());
+ }
+}
+
static void displayFileDialog(Options *options)
{
QString fileName = QFileDialog::getOpenFileName(0, "Open QML file", QString(), "QML Files (*.qml)");
@@ -389,7 +439,7 @@ static void usage()
#ifndef QT_NO_SCENEGRAPHITEM
qWarning(" --sg-on-gv [--clip] ....................... Scenegraph on graphicsview (and clip to item)");
#endif
- qWarning(" --no-vbo .................................. Do not use vertex buffers for geometry data");
+ qWarning(" --no-version-detection .................... Do not try to detect the version of the .qml file");
qWarning(" ");
exit(1);
@@ -420,6 +470,8 @@ int main(int argc, char ** argv)
options.scenegraphOnGraphicsview = true;
else if (QString::fromLatin1(argv[i]).toLower() == QLatin1String("--clip"))
options.clip = true;
+ else if (QString::fromLatin1(argv[i]).toLower() == QLatin1String("--no-version-detection"))
+ options.versionDetection = false;
else if (QString::fromLatin1(argv[i]).toLower() == QLatin1String("-i") && i + 1 < argc)
imports.append(QString::fromLatin1(argv[++i]));
else if (QString::fromLatin1(argv[i]).toLower() == QLatin1String("--help")
@@ -462,9 +514,11 @@ int main(int argc, char ** argv)
loadDummyDataFiles(*engine, fi.path());
}
item->setSource(options.file);
- } else
+ } else
#endif
if (!options.originalQml && !options.originalQmlRaster) {
+ if (options.versionDetection)
+ checkAndAdaptVersion(options.file);
QSGView *qxView = new MyQSGView();
engine = qxView->engine();
for (int i = 0; i < imports.size(); ++i)