aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--share/qtcreator/templates/qml/qtquick_1_1/main.qml (renamed from share/qtcreator/templates/qml/qtquick1_1/main.qml)0
-rw-r--r--share/qtcreator/templates/qml/qtquick_1_1/main.qmlproject (renamed from share/qtcreator/templates/qml/qtquick1_1/main.qmlproject)0
-rw-r--r--share/qtcreator/templates/qml/qtquick_1_1/template.xml (renamed from share/qtcreator/templates/qml/qtquick1_1/template.xml)0
-rw-r--r--share/qtcreator/templates/qml/qtquick_2_0/main.qml (renamed from share/qtcreator/templates/qml/qtquick2/main.qml)0
-rw-r--r--share/qtcreator/templates/qml/qtquick_2_0/main.qmlproject (renamed from share/qtcreator/templates/qml/qtquick2/main.qmlproject)0
-rw-r--r--share/qtcreator/templates/qml/qtquick_2_0/template.xml (renamed from share/qtcreator/templates/qml/qtquick2/template.xml)0
-rw-r--r--share/qtcreator/templates/qml/qtquickcontrols_1_0/main.qml (renamed from share/qtcreator/templates/qml/qtquickcontrols/main.qml)0
-rw-r--r--share/qtcreator/templates/qml/qtquickcontrols_1_0/main.qmlproject (renamed from share/qtcreator/templates/qml/qtquickcontrols/main.qmlproject)0
-rw-r--r--share/qtcreator/templates/qml/qtquickcontrols_1_0/template.xml (renamed from share/qtcreator/templates/qml/qtquickcontrols/template.xml)0
-rw-r--r--share/qtcreator/templates/qtquick/qtquick_1_1/app.pro (renamed from share/qtcreator/templates/qtquick1app/app.pro)0
-rw-r--r--share/qtcreator/templates/qtquick/qtquick_1_1/main.cpp (renamed from share/qtcreator/templates/qtquick1app/main.cpp)2
-rw-r--r--share/qtcreator/templates/qtquick/qtquick_1_1/qml/app/main.qml (renamed from share/qtcreator/templates/qtquick1app/qml/app/main.qml)0
-rw-r--r--share/qtcreator/templates/qtquick/qtquick_1_1/qtquick1applicationviewer/qtquick1applicationviewer.cpp (renamed from share/qtcreator/templates/qtquick1app/qtquick1applicationviewer/qtquick1applicationviewer.cpp)0
-rw-r--r--share/qtcreator/templates/qtquick/qtquick_1_1/qtquick1applicationviewer/qtquick1applicationviewer.h (renamed from share/qtcreator/templates/qtquick1app/qtquick1applicationviewer/qtquick1applicationviewer.h)0
-rw-r--r--share/qtcreator/templates/qtquick/qtquick_1_1/qtquick1applicationviewer/qtquick1applicationviewer.pri (renamed from share/qtcreator/templates/qtquick1app/qtquick1applicationviewer/qtquick1applicationviewer.pri)0
-rw-r--r--share/qtcreator/templates/qtquick/qtquick_1_1/template.xml9
-rw-r--r--share/qtcreator/templates/qtquick/qtquick_2_0/app.pro (renamed from share/qtcreator/templates/qtquick2app/app.pro)0
-rw-r--r--share/qtcreator/templates/qtquick/qtquick_2_0/main.cpp (renamed from share/qtcreator/templates/qtquick2app/main.cpp)2
-rw-r--r--share/qtcreator/templates/qtquick/qtquick_2_0/qml/app/main.qml (renamed from share/qtcreator/templates/qtquick2app/qml/app/main.qml)0
-rw-r--r--share/qtcreator/templates/qtquick/qtquick_2_0/qtquick2applicationviewer/qtquick2applicationviewer.cpp (renamed from share/qtcreator/templates/qtquick2app/qtquick2applicationviewer/qtquick2applicationviewer.cpp)0
-rw-r--r--share/qtcreator/templates/qtquick/qtquick_2_0/qtquick2applicationviewer/qtquick2applicationviewer.h (renamed from share/qtcreator/templates/qtquick2app/qtquick2applicationviewer/qtquick2applicationviewer.h)0
-rw-r--r--share/qtcreator/templates/qtquick/qtquick_2_0/qtquick2applicationviewer/qtquick2applicationviewer.pri (renamed from share/qtcreator/templates/qtquick2app/qtquick2applicationviewer/qtquick2applicationviewer.pri)0
-rw-r--r--share/qtcreator/templates/qtquick/qtquick_2_0/template.xml9
-rw-r--r--share/qtcreator/templates/qtquick/qtquickcontrols_1_0/app.pro (renamed from share/qtcreator/templates/qtquick2controls/app.pro)0
-rw-r--r--share/qtcreator/templates/qtquick/qtquickcontrols_1_0/main.cpp (renamed from share/qtcreator/templates/qtquick2controls/main.cpp)2
-rw-r--r--share/qtcreator/templates/qtquick/qtquickcontrols_1_0/qml/app/main.qml (renamed from share/qtcreator/templates/qtquick2controls/qml/app/main.qml)0
-rw-r--r--share/qtcreator/templates/qtquick/qtquickcontrols_1_0/qtquick2controlsapplicationviewer/qtquick2controlsapplicationviewer.cpp (renamed from share/qtcreator/templates/qtquick2controls/qtquick2controlsapplicationviewer/qtquick2controlsapplicationviewer.cpp)0
-rw-r--r--share/qtcreator/templates/qtquick/qtquickcontrols_1_0/qtquick2controlsapplicationviewer/qtquick2controlsapplicationviewer.h (renamed from share/qtcreator/templates/qtquick2controls/qtquick2controlsapplicationviewer/qtquick2controlsapplicationviewer.h)0
-rw-r--r--share/qtcreator/templates/qtquick/qtquickcontrols_1_0/qtquick2controlsapplicationviewer/qtquick2controlsapplicationviewer.pri (renamed from share/qtcreator/templates/qtquick2controls/qtquick2controlsapplicationviewer/qtquick2controlsapplicationviewer.pri)0
-rw-r--r--share/qtcreator/templates/qtquick/qtquickcontrols_1_0/template.xml9
-rw-r--r--share/qtcreator/translations/extract-qtquickwizards.xq6
-rw-r--r--share/qtcreator/translations/translations.pro9
-rw-r--r--src/plugins/qmakeprojectmanager/qmakeproject.cpp8
-rw-r--r--src/plugins/qmakeprojectmanager/wizards/qtquickapp.cpp179
-rw-r--r--src/plugins/qmakeprojectmanager/wizards/qtquickapp.h29
-rw-r--r--src/plugins/qmakeprojectmanager/wizards/qtquickappwizard.cpp30
-rw-r--r--src/plugins/qmakeprojectmanager/wizards/qtquickappwizardpages.cpp50
-rw-r--r--src/plugins/qmakeprojectmanager/wizards/qtquickappwizardpages.h5
38 files changed, 240 insertions, 109 deletions
diff --git a/share/qtcreator/templates/qml/qtquick1_1/main.qml b/share/qtcreator/templates/qml/qtquick_1_1/main.qml
index 921baa60065..921baa60065 100644
--- a/share/qtcreator/templates/qml/qtquick1_1/main.qml
+++ b/share/qtcreator/templates/qml/qtquick_1_1/main.qml
diff --git a/share/qtcreator/templates/qml/qtquick1_1/main.qmlproject b/share/qtcreator/templates/qml/qtquick_1_1/main.qmlproject
index 558f68d0351..558f68d0351 100644
--- a/share/qtcreator/templates/qml/qtquick1_1/main.qmlproject
+++ b/share/qtcreator/templates/qml/qtquick_1_1/main.qmlproject
diff --git a/share/qtcreator/templates/qml/qtquick1_1/template.xml b/share/qtcreator/templates/qml/qtquick_1_1/template.xml
index ee2868b0af2..ee2868b0af2 100644
--- a/share/qtcreator/templates/qml/qtquick1_1/template.xml
+++ b/share/qtcreator/templates/qml/qtquick_1_1/template.xml
diff --git a/share/qtcreator/templates/qml/qtquick2/main.qml b/share/qtcreator/templates/qml/qtquick_2_0/main.qml
index b3d4ef33d48..b3d4ef33d48 100644
--- a/share/qtcreator/templates/qml/qtquick2/main.qml
+++ b/share/qtcreator/templates/qml/qtquick_2_0/main.qml
diff --git a/share/qtcreator/templates/qml/qtquick2/main.qmlproject b/share/qtcreator/templates/qml/qtquick_2_0/main.qmlproject
index 558f68d0351..558f68d0351 100644
--- a/share/qtcreator/templates/qml/qtquick2/main.qmlproject
+++ b/share/qtcreator/templates/qml/qtquick_2_0/main.qmlproject
diff --git a/share/qtcreator/templates/qml/qtquick2/template.xml b/share/qtcreator/templates/qml/qtquick_2_0/template.xml
index 869805e073f..869805e073f 100644
--- a/share/qtcreator/templates/qml/qtquick2/template.xml
+++ b/share/qtcreator/templates/qml/qtquick_2_0/template.xml
diff --git a/share/qtcreator/templates/qml/qtquickcontrols/main.qml b/share/qtcreator/templates/qml/qtquickcontrols_1_0/main.qml
index f886b99fb9d..f886b99fb9d 100644
--- a/share/qtcreator/templates/qml/qtquickcontrols/main.qml
+++ b/share/qtcreator/templates/qml/qtquickcontrols_1_0/main.qml
diff --git a/share/qtcreator/templates/qml/qtquickcontrols/main.qmlproject b/share/qtcreator/templates/qml/qtquickcontrols_1_0/main.qmlproject
index 558f68d0351..558f68d0351 100644
--- a/share/qtcreator/templates/qml/qtquickcontrols/main.qmlproject
+++ b/share/qtcreator/templates/qml/qtquickcontrols_1_0/main.qmlproject
diff --git a/share/qtcreator/templates/qml/qtquickcontrols/template.xml b/share/qtcreator/templates/qml/qtquickcontrols_1_0/template.xml
index 7494ab1dd79..7494ab1dd79 100644
--- a/share/qtcreator/templates/qml/qtquickcontrols/template.xml
+++ b/share/qtcreator/templates/qml/qtquickcontrols_1_0/template.xml
diff --git a/share/qtcreator/templates/qtquick1app/app.pro b/share/qtcreator/templates/qtquick/qtquick_1_1/app.pro
index 19aef272818..19aef272818 100644
--- a/share/qtcreator/templates/qtquick1app/app.pro
+++ b/share/qtcreator/templates/qtquick/qtquick_1_1/app.pro
diff --git a/share/qtcreator/templates/qtquick1app/main.cpp b/share/qtcreator/templates/qtquick/qtquick_1_1/main.cpp
index 70b2e9ea7eb..da0c3075555 100644
--- a/share/qtcreator/templates/qtquick1app/main.cpp
+++ b/share/qtcreator/templates/qtquick/qtquick_1_1/main.cpp
@@ -8,7 +8,7 @@ int main(int argc, char *argv[])
QtQuick1ApplicationViewer viewer;
viewer.addImportPath(QLatin1String("modules")); // ADDIMPORTPATH
viewer.setOrientation(QtQuick1ApplicationViewer::ScreenOrientationAuto); // ORIENTATION
- viewer.setMainQmlFile(QLatin1String("qml/app/qtquick10/main.qml")); // MAINQML
+ viewer.setMainQmlFile(QLatin1String("qml/app/main.qml")); // MAINQML
viewer.showExpanded();
return app.exec();
diff --git a/share/qtcreator/templates/qtquick1app/qml/app/main.qml b/share/qtcreator/templates/qtquick/qtquick_1_1/qml/app/main.qml
index 460a22fc2cc..460a22fc2cc 100644
--- a/share/qtcreator/templates/qtquick1app/qml/app/main.qml
+++ b/share/qtcreator/templates/qtquick/qtquick_1_1/qml/app/main.qml
diff --git a/share/qtcreator/templates/qtquick1app/qtquick1applicationviewer/qtquick1applicationviewer.cpp b/share/qtcreator/templates/qtquick/qtquick_1_1/qtquick1applicationviewer/qtquick1applicationviewer.cpp
index d487e109f9c..d487e109f9c 100644
--- a/share/qtcreator/templates/qtquick1app/qtquick1applicationviewer/qtquick1applicationviewer.cpp
+++ b/share/qtcreator/templates/qtquick/qtquick_1_1/qtquick1applicationviewer/qtquick1applicationviewer.cpp
diff --git a/share/qtcreator/templates/qtquick1app/qtquick1applicationviewer/qtquick1applicationviewer.h b/share/qtcreator/templates/qtquick/qtquick_1_1/qtquick1applicationviewer/qtquick1applicationviewer.h
index b9dc3a9fee4..b9dc3a9fee4 100644
--- a/share/qtcreator/templates/qtquick1app/qtquick1applicationviewer/qtquick1applicationviewer.h
+++ b/share/qtcreator/templates/qtquick/qtquick_1_1/qtquick1applicationviewer/qtquick1applicationviewer.h
diff --git a/share/qtcreator/templates/qtquick1app/qtquick1applicationviewer/qtquick1applicationviewer.pri b/share/qtcreator/templates/qtquick/qtquick_1_1/qtquick1applicationviewer/qtquick1applicationviewer.pri
index 030edc1d018..030edc1d018 100644
--- a/share/qtcreator/templates/qtquick1app/qtquick1applicationviewer/qtquick1applicationviewer.pri
+++ b/share/qtcreator/templates/qtquick/qtquick_1_1/qtquick1applicationviewer/qtquick1applicationviewer.pri
diff --git a/share/qtcreator/templates/qtquick/qtquick_1_1/template.xml b/share/qtcreator/templates/qtquick/qtquick_1_1/template.xml
new file mode 100644
index 00000000000..78a45b4ba50
--- /dev/null
+++ b/share/qtcreator/templates/qtquick/qtquick_1_1/template.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<template openeditor="main.qml" priority="C"
+ featuresRequired="QtSupport.Wizards.FeatureQtQuick, QtSupport.Wizards.FeatureQtQuick.1.1"
+ viewerdir="qtquick1applicationviewer"
+ viewerclassname="QtQuick1ApplicationViewer"
+ stubversionminor="24">
+ <displayname>Qt Quick 1.1</displayname>
+ <description>Creates a Qt Quick 1 application project that can contain both QML and C++ code and includes a QDeclarativeView. The built-in QML types in the QtQuick 1 namespace allow you to write cross-platform applications with a custom look and feel. Requires Qt 4.8 or newer.</description>
+</template>
diff --git a/share/qtcreator/templates/qtquick2app/app.pro b/share/qtcreator/templates/qtquick/qtquick_2_0/app.pro
index 2495771e53d..2495771e53d 100644
--- a/share/qtcreator/templates/qtquick2app/app.pro
+++ b/share/qtcreator/templates/qtquick/qtquick_2_0/app.pro
diff --git a/share/qtcreator/templates/qtquick2app/main.cpp b/share/qtcreator/templates/qtquick/qtquick_2_0/main.cpp
index fb3846ec627..fd469063288 100644
--- a/share/qtcreator/templates/qtquick2app/main.cpp
+++ b/share/qtcreator/templates/qtquick/qtquick_2_0/main.cpp
@@ -6,7 +6,7 @@ int main(int argc, char *argv[])
QGuiApplication app(argc, argv);
QtQuick2ApplicationViewer viewer;
- viewer.setMainQmlFile(QStringLiteral("qml/app/qtquick20/main.qml")); // MAINQML
+ viewer.setMainQmlFile(QStringLiteral("qml/app/main.qml")); // MAINQML
viewer.showExpanded();
return app.exec();
diff --git a/share/qtcreator/templates/qtquick2app/qml/app/main.qml b/share/qtcreator/templates/qtquick/qtquick_2_0/qml/app/main.qml
index 897812a6cb4..897812a6cb4 100644
--- a/share/qtcreator/templates/qtquick2app/qml/app/main.qml
+++ b/share/qtcreator/templates/qtquick/qtquick_2_0/qml/app/main.qml
diff --git a/share/qtcreator/templates/qtquick2app/qtquick2applicationviewer/qtquick2applicationviewer.cpp b/share/qtcreator/templates/qtquick/qtquick_2_0/qtquick2applicationviewer/qtquick2applicationviewer.cpp
index 127a25e6c41..127a25e6c41 100644
--- a/share/qtcreator/templates/qtquick2app/qtquick2applicationviewer/qtquick2applicationviewer.cpp
+++ b/share/qtcreator/templates/qtquick/qtquick_2_0/qtquick2applicationviewer/qtquick2applicationviewer.cpp
diff --git a/share/qtcreator/templates/qtquick2app/qtquick2applicationviewer/qtquick2applicationviewer.h b/share/qtcreator/templates/qtquick/qtquick_2_0/qtquick2applicationviewer/qtquick2applicationviewer.h
index 6eee3c89b9b..6eee3c89b9b 100644
--- a/share/qtcreator/templates/qtquick2app/qtquick2applicationviewer/qtquick2applicationviewer.h
+++ b/share/qtcreator/templates/qtquick/qtquick_2_0/qtquick2applicationviewer/qtquick2applicationviewer.h
diff --git a/share/qtcreator/templates/qtquick2app/qtquick2applicationviewer/qtquick2applicationviewer.pri b/share/qtcreator/templates/qtquick/qtquick_2_0/qtquick2applicationviewer/qtquick2applicationviewer.pri
index 5123a2567e2..5123a2567e2 100644
--- a/share/qtcreator/templates/qtquick2app/qtquick2applicationviewer/qtquick2applicationviewer.pri
+++ b/share/qtcreator/templates/qtquick/qtquick_2_0/qtquick2applicationviewer/qtquick2applicationviewer.pri
diff --git a/share/qtcreator/templates/qtquick/qtquick_2_0/template.xml b/share/qtcreator/templates/qtquick/qtquick_2_0/template.xml
new file mode 100644
index 00000000000..b3868c71618
--- /dev/null
+++ b/share/qtcreator/templates/qtquick/qtquick_2_0/template.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<template openeditor="main.qml" priority="B"
+ featuresRequired="QtSupport.Wizards.FeatureQtQuick, QtSupport.Wizards.FeatureQtQuick.2"
+ viewerdir="qtquick2applicationviewer"
+ viewerclassname="QtQuick2ApplicationViewer"
+ stubversionminor="5">
+ <displayname>Qt Quick 2.0</displayname>
+ <description>Creates a Qt Quick 2 application project that can contain both QML and C++ code and includes a QQuickView. The built-in QML types in the QtQuick 2 namespace allow you to write cross-platform applications with a custom look and feel. Requires Qt 5.0 or newer.</description>
+</template>
diff --git a/share/qtcreator/templates/qtquick2controls/app.pro b/share/qtcreator/templates/qtquick/qtquickcontrols_1_0/app.pro
index be20dc0770e..be20dc0770e 100644
--- a/share/qtcreator/templates/qtquick2controls/app.pro
+++ b/share/qtcreator/templates/qtquick/qtquickcontrols_1_0/app.pro
diff --git a/share/qtcreator/templates/qtquick2controls/main.cpp b/share/qtcreator/templates/qtquick/qtquickcontrols_1_0/main.cpp
index a06bf0157d4..18fd2076cf2 100644
--- a/share/qtcreator/templates/qtquick2controls/main.cpp
+++ b/share/qtcreator/templates/qtquick/qtquickcontrols_1_0/main.cpp
@@ -5,7 +5,7 @@ int main(int argc, char *argv[])
Application app(argc, argv);
QtQuick2ControlsApplicationViewer viewer;
- viewer.setMainQmlFile(QStringLiteral("qml/app/qtquick21/main.qml")); // MAINQML
+ viewer.setMainQmlFile(QStringLiteral("qml/app/main.qml")); // MAINQML
viewer.show();
return app.exec();
diff --git a/share/qtcreator/templates/qtquick2controls/qml/app/main.qml b/share/qtcreator/templates/qtquick/qtquickcontrols_1_0/qml/app/main.qml
index 4069d1e7131..4069d1e7131 100644
--- a/share/qtcreator/templates/qtquick2controls/qml/app/main.qml
+++ b/share/qtcreator/templates/qtquick/qtquickcontrols_1_0/qml/app/main.qml
diff --git a/share/qtcreator/templates/qtquick2controls/qtquick2controlsapplicationviewer/qtquick2controlsapplicationviewer.cpp b/share/qtcreator/templates/qtquick/qtquickcontrols_1_0/qtquick2controlsapplicationviewer/qtquick2controlsapplicationviewer.cpp
index 7198a903b41..7198a903b41 100644
--- a/share/qtcreator/templates/qtquick2controls/qtquick2controlsapplicationviewer/qtquick2controlsapplicationviewer.cpp
+++ b/share/qtcreator/templates/qtquick/qtquickcontrols_1_0/qtquick2controlsapplicationviewer/qtquick2controlsapplicationviewer.cpp
diff --git a/share/qtcreator/templates/qtquick2controls/qtquick2controlsapplicationviewer/qtquick2controlsapplicationviewer.h b/share/qtcreator/templates/qtquick/qtquickcontrols_1_0/qtquick2controlsapplicationviewer/qtquick2controlsapplicationviewer.h
index 76c12b77203..76c12b77203 100644
--- a/share/qtcreator/templates/qtquick2controls/qtquick2controlsapplicationviewer/qtquick2controlsapplicationviewer.h
+++ b/share/qtcreator/templates/qtquick/qtquickcontrols_1_0/qtquick2controlsapplicationviewer/qtquick2controlsapplicationviewer.h
diff --git a/share/qtcreator/templates/qtquick2controls/qtquick2controlsapplicationviewer/qtquick2controlsapplicationviewer.pri b/share/qtcreator/templates/qtquick/qtquickcontrols_1_0/qtquick2controlsapplicationviewer/qtquick2controlsapplicationviewer.pri
index 32007f73fd0..32007f73fd0 100644
--- a/share/qtcreator/templates/qtquick2controls/qtquick2controlsapplicationviewer/qtquick2controlsapplicationviewer.pri
+++ b/share/qtcreator/templates/qtquick/qtquickcontrols_1_0/qtquick2controlsapplicationviewer/qtquick2controlsapplicationviewer.pri
diff --git a/share/qtcreator/templates/qtquick/qtquickcontrols_1_0/template.xml b/share/qtcreator/templates/qtquick/qtquickcontrols_1_0/template.xml
new file mode 100644
index 00000000000..45b12b8207a
--- /dev/null
+++ b/share/qtcreator/templates/qtquick/qtquickcontrols_1_0/template.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<template openeditor="main.qml" priority="A"
+ featuresRequired="QtSupport.Wizards.FeatureQtQuick, QtSupport.Wizards.FeatureQtQuick.2, QtSupport.Wizards.FeatureQtQuick.Controls"
+ viewerdir="qtquick2controlsapplicationviewer"
+ viewerclassname="QtQuick2ControlsApplicationViewer"
+ stubversionminor="1">
+ <displayname>Qt Quick Controls 1.0</displayname>
+ <description>Creates a Qt Quick 2 application project that can contain both QML and C++ code and includes a QQuickView. Creates a deployable Qt Quick application using Qt Quick Controls. All files and directories that reside in the same directory as the main .qml file are deployed. You can modify the contents of the directory any time before deploying. Requires Qt 5.1 or newer.</description>
+</template>
diff --git a/share/qtcreator/translations/extract-qtquickwizards.xq b/share/qtcreator/translations/extract-qtquickwizards.xq
new file mode 100644
index 00000000000..cbe3a3be748
--- /dev/null
+++ b/share/qtcreator/translations/extract-qtquickwizards.xq
@@ -0,0 +1,6 @@
+let $prefix := string("QT_TRANSLATE_NOOP(&quot;QmakeProjectManager::QtQuickAppWizard&quot;, &quot;")
+let $suffix := concat("&quot;)", codepoints-to-string(10))
+for $file in tokenize($files, string("\|"))
+ let $doc := doc($file)
+ for $text in ($doc/*:template/*:description, $doc/*:template/*:displayname)
+ return fn:concat($prefix, data($text), $suffix)
diff --git a/share/qtcreator/translations/translations.pro b/share/qtcreator/translations/translations.pro
index 547f7557a96..d209ca73c13 100644
--- a/share/qtcreator/translations/translations.pro
+++ b/share/qtcreator/translations/translations.pro
@@ -22,6 +22,7 @@ TRANSLATIONS = $$prependAll(LANGUAGES, $$PWD/qtcreator_,.ts)
MIME_TR_H = $$OUT_PWD/mime_tr.h
CUSTOMWIZARD_TR_H = $$OUT_PWD/customwizard_tr.h
QMLWIZARD_TR_H = $$OUT_PWD/qmlwizard_tr.h
+QTQUICKWIZARD_TR_H = $$OUT_PWD/qtquickwizard_tr.h
EXTERNALTOOLS_TR_H = $$OUT_PWD/externaltools_tr.h
for(dir, $$list($$files($$IDE_SOURCE_TREE/src/plugins/*))):MIMETYPES_FILES += $$files($$dir/*.mimetypes.xml)
@@ -33,6 +34,9 @@ CUSTOMWIZARD_FILES = \"$$join(CUSTOMWIZARD_FILES, |)\"
for(dir, $$list($$files($$IDE_SOURCE_TREE/share/qtcreator/templates/qml/*))):QMLWIZARD_FILES += $$files($$dir/template.xml)
QMLWIZARD_FILES = \"$$join(QMLWIZARD_FILES, |)\"
+for(dir, $$list($$files($$IDE_SOURCE_TREE/share/qtcreator/templates/qtquick/*))):QTQUICKWIZARD_FILES += $$files($$dir/template.xml)
+QTQUICKWIZARD_FILES = \"$$join(QTQUICKWIZARD_FILES, |)\"
+
for(file, $$list($$files($$IDE_SOURCE_TREE/src/share/qtcreator/externaltools/*))):EXTERNALTOOLS_FILES += $$files($$file)
EXTERNALTOOLS_FILES = \"$$join(EXTERNALTOOLS_FILES, |)\"
@@ -40,6 +44,7 @@ extract.commands += \
$$XMLPATTERNS -output $$MIME_TR_H -param files=$$MIMETYPES_FILES $$PWD/extract-mimetypes.xq $$escape_expand(\\n\\t) \
$$XMLPATTERNS -output $$CUSTOMWIZARD_TR_H -param files=$$CUSTOMWIZARD_FILES $$PWD/extract-customwizards.xq $$escape_expand(\\n\\t) \
$$XMLPATTERNS -output $$QMLWIZARD_TR_H -param files=$$QMLWIZARD_FILES $$PWD/extract-qmlwizards.xq $$escape_expand(\\n\\t) \
+ $$XMLPATTERNS -output $$QTQUICKWIZARD_TR_H -param files=$$QTQUICKWIZARD_FILES $$PWD/extract-qtquickwizards.xq $$escape_expand(\\n\\t) \
$$XMLPATTERNS -output $$EXTERNALTOOLS_TR_H -param files=$$EXTERNALTOOLS_FILES $$PWD/extract-externaltools.xq
QMAKE_EXTRA_TARGETS += extract
@@ -59,12 +64,12 @@ files = $$files($$PWD/*_??.ts) $$PWD/qtcreator_untranslated.ts
for(file, files) {
lang = $$replace(file, .*_([^/]*)\\.ts, \\1)
v = ts-$${lang}.commands
- $$v = cd $$wd && $$LUPDATE $$sources $$MIME_TR_H $$CUSTOMWIZARD_TR_H $$QMLWIZARD_TR_H $$EXTERNALTOOLS_TR_H -ts $$file
+ $$v = cd $$wd && $$LUPDATE $$sources $$MIME_TR_H $$CUSTOMWIZARD_TR_H $$QMLWIZARD_TR_H $$QTQUICKWIZARD_TR_H $$EXTERNALTOOLS_TR_H -ts $$file
v = ts-$${lang}.depends
$$v = extract
QMAKE_EXTRA_TARGETS += ts-$$lang
}
-ts-all.commands = cd $$wd && $$LUPDATE $$sources $$MIME_TR_H $$CUSTOMWIZARD_TR_H $$QMLWIZARD_TR_H $$EXTERNALTOOLS_TR_H -ts $$files
+ts-all.commands = cd $$wd && $$LUPDATE $$sources $$MIME_TR_H $$CUSTOMWIZARD_TR_H $$QMLWIZARD_TR_H $$QTQUICKWIZARD_TR_H$$EXTERNALTOOLS_TR_H -ts $$files
ts-all.depends = extract
QMAKE_EXTRA_TARGETS += ts-all
diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.cpp b/src/plugins/qmakeprojectmanager/qmakeproject.cpp
index 910f002f72c..c86f57cd6af 100644
--- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp
+++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp
@@ -429,10 +429,10 @@ bool QmakeProject::fromMap(const QVariantMap &map)
foreach (QmakeProFileNode *node, applicationProFiles(QmakeProject::ExactAndCumulativeParse)) {
const QString path = node->path();
- qtQuickApp.setComponentSet(QtQuickApp::QtQuick10Components);
- updateBoilerPlateCodeFiles(&qtQuickApp, path);
- qtQuickApp.setComponentSet(QtQuickApp::QtQuick20Components);
- updateBoilerPlateCodeFiles(&qtQuickApp, path);
+ foreach (TemplateInfo info, QtQuickApp::templateInfos()) {
+ qtQuickApp.setTemplateInfo(info);
+ updateBoilerPlateCodeFiles(&qtQuickApp, path);
+ }
updateBoilerPlateCodeFiles(&html5App, path);
}
return true;
diff --git a/src/plugins/qmakeprojectmanager/wizards/qtquickapp.cpp b/src/plugins/qmakeprojectmanager/wizards/qtquickapp.cpp
index 740ba71ba36..bb93d200431 100644
--- a/src/plugins/qmakeprojectmanager/wizards/qtquickapp.cpp
+++ b/src/plugins/qmakeprojectmanager/wizards/qtquickapp.cpp
@@ -30,6 +30,7 @@
#include "qtquickapp.h"
#include <utils/qtcassert.h>
+#include <utils/fileutils.h>
#include <QDebug>
#include <QDir>
@@ -43,20 +44,152 @@
namespace QmakeProjectManager {
namespace Internal {
-QtQuickApp::QtQuickApp()
- : AbstractMobileApp()
- , m_componentSet(QtQuick10Components)
+static QString templateRootDirectory()
+{
+ return Core::ICore::resourcePath() + QLatin1String("/templates/qtquick/");
+}
+
+static QStringList templateNames()
+{
+ QStringList templateNameList;
+ const QDir templateRoot(templateRootDirectory());
+
+ foreach (const QFileInfo &subDirectory,
+ templateRoot.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot))
+ templateNameList.append(subDirectory.fileName());
+
+ return templateNameList;
+}
+
+// Return locale language attribute "de_UTF8" -> "de", empty string for "C"
+static QString languageSetting()
+{
+#ifdef QT_CREATOR
+ QString name = Core::ICore::userInterfaceLanguage();
+ const int underScorePos = name.indexOf(QLatin1Char('_'));
+ if (underScorePos != -1)
+ name.truncate(underScorePos);
+ if (name.compare(QLatin1String("C"), Qt::CaseInsensitive) == 0)
+ name.clear();
+ return name;
+#else
+ return QLocale::system().name();
+#endif
+}
+
+static inline bool assignLanguageElementText(QXmlStreamReader &reader,
+ const QString &desiredLanguage,
+ QString *target)
+{
+ const QStringRef elementLanguage = reader.attributes().value(QLatin1String("xml:lang"));
+ if (elementLanguage.isEmpty()) {
+ // Try to find a translation for our Wizards
+ *target = QCoreApplication::translate("QmakeProjectManager::QtQuickAppWizard",
+ reader.readElementText().toLatin1().constData());
+ return true;
+ }
+ if (elementLanguage == desiredLanguage) {
+ *target = reader.readElementText();
+ return true;
+ }
+ return false;
+}
+
+static bool parseTemplateXml(QXmlStreamReader &reader, TemplateInfo *info)
+{
+ const QString locale = languageSetting();
+
+ static const QLatin1String tag_template("template");
+ static const QLatin1String tag_displayName("displayname");
+ static const QLatin1String tag_description("description");
+ static const QLatin1String attribute_featuresRequired("featuresRequired");
+ static const QLatin1String attribute_openEditor("openeditor");
+ static const QLatin1String attribute_priority("priority");
+ static const QLatin1String attribute_viewerdir("viewerdir");
+ static const QLatin1String attribute_viewerclassname("viewerclassname");
+ static const QLatin1String attribute_stubversionminor("stubversionminor");
+
+ while (!reader.atEnd() && !reader.hasError()) {
+ reader.readNext();
+ if (reader.tokenType() != QXmlStreamReader::StartElement)
+ continue;
+
+ if (reader.name() == tag_template) {
+ info->openFile = reader.attributes().value(attribute_openEditor).toString();
+ if (reader.attributes().hasAttribute(attribute_priority))
+ info->priority = reader.attributes().value(attribute_priority).toString();
+
+ if (reader.attributes().hasAttribute(attribute_featuresRequired))
+ info->featuresRequired = reader.attributes().value(attribute_featuresRequired).toString();
+
+ if (reader.attributes().hasAttribute(attribute_viewerdir))
+ info->viewerDir = reader.attributes().value(attribute_viewerdir).toString();
+
+ if (reader.attributes().hasAttribute(attribute_viewerclassname))
+ info->viewerClassName = reader.attributes().value(attribute_viewerclassname).toString();
+
+ if (reader.attributes().hasAttribute(attribute_stubversionminor))
+ info->stubVersionMinor = reader.attributes().value(attribute_stubversionminor).toString().toInt();
+
+ } else if (reader.name() == tag_displayName) {
+ if (!assignLanguageElementText(reader, locale, &info->displayName))
+ continue;
+ } else if (reader.name() == tag_description) {
+ if (!assignLanguageElementText(reader, locale, &info->description))
+ continue;
+ }
+ }
+ if (reader.hasError()) {
+ qWarning() << reader.errorString();
+ return false;
+ }
+
+ return true;
+}
+
+class TemplateInfoList
+{
+public:
+ TemplateInfoList()
+ {
+ QMultiMap<QString, TemplateInfo> multiMap;
+ foreach (const QString &templateName, templateNames()) {
+ const QString templatePath = templateRootDirectory() + templateName;
+ QFile xmlFile(templatePath + QLatin1String("/template.xml"));
+ if (!xmlFile.open(QIODevice::ReadOnly)) {
+ qWarning().nospace() << QString::fromLatin1("Cannot open %1").arg(QDir::toNativeSeparators(QFileInfo(xmlFile.fileName()).absoluteFilePath()));
+ continue;
+ }
+ TemplateInfo info;
+ info.templateName = templateName;
+ info.templatePath = templatePath;
+ QXmlStreamReader reader(&xmlFile);
+ if (parseTemplateXml(reader, &info))
+ multiMap.insert(info.priority, info);
+ }
+ m_templateInfoList = multiMap.values();
+ }
+ QList<TemplateInfo> templateInfoList() const { return m_templateInfoList; }
+
+private:
+ QList<TemplateInfo> m_templateInfoList;
+};
+
+Q_GLOBAL_STATIC(TemplateInfoList, templateInfoList)
+
+QList<TemplateInfo> QtQuickApp::templateInfos()
{
+ return templateInfoList()->templateInfoList();
}
-void QtQuickApp::setComponentSet(ComponentSet componentSet)
+QtQuickApp::QtQuickApp()
+ : AbstractMobileApp()
{
- m_componentSet = componentSet;
}
-QtQuickApp::ComponentSet QtQuickApp::componentSet() const
+void QtQuickApp::setTemplateInfo(const TemplateInfo &templateInfo)
{
- return m_componentSet;
+ m_templateInfo = templateInfo;
}
QString QtQuickApp::pathExtended(int fileType) const
@@ -88,28 +221,12 @@ QString QtQuickApp::pathExtended(int fileType) const
QString QtQuickApp::originsRoot() const
{
- switch (m_componentSet) {
- case QtQuickControls10: return templatesRoot() + QLatin1String("qtquick2controls/");
- case QtQuick20Components: return templatesRoot() + QLatin1String("qtquick2app/");
- case QtQuick10Components: return templatesRoot() + QLatin1String("qtquick1app/");
- }
-
- qWarning() << "QtQuickApp::originsRoot() - unhandled component set"
- << m_componentSet;
- return QString();
+ return m_templateInfo.templatePath + QLatin1Char('/');
}
QString QtQuickApp::mainWindowClassName() const
{
- switch (m_componentSet) {
- case QtQuickControls10: return QLatin1String("QtQuick2ControlsApplicationViewer");
- case QtQuick20Components: return QLatin1String("QtQuick2ApplicationViewer");
- case QtQuick10Components: return QLatin1String("QtQuick1ApplicationViewer");
- }
-
- qWarning() << "QtQuickApp::mainWindowClassName() - unhandled component set"
- << m_componentSet;
- return QString();
+ return m_templateInfo.viewerClassName;
}
bool QtQuickApp::adaptCurrentMainCppTemplateLine(QString &line) const
@@ -162,15 +279,7 @@ bool QtQuickApp::useExistingMainQml() const
QString QtQuickApp::appViewerBaseName() const
{
- switch (m_componentSet) {
- case QtQuickControls10: return QLatin1String("qtquick2controlsapplicationviewer");
- case QtQuick20Components: return QLatin1String("qtquick2applicationviewer");
- case QtQuick10Components: return QLatin1String("qtquick1applicationviewer");
- }
-
- qWarning() << "QtQuickApp::appViewerBaseName() - unhandled component set"
- << m_componentSet;
- return QString();
+ return m_templateInfo.viewerDir;
}
QString QtQuickApp::fileName(QtQuickApp::ExtendedFileType type) const
@@ -217,7 +326,7 @@ QByteArray QtQuickApp::generateFileExtended(int fileType,
int QtQuickApp::stubVersionMinor() const
{
- return (m_componentSet == QtQuick20Components || m_componentSet == QtQuickControls10) ? 5 : 24;
+ return m_templateInfo.stubVersionMinor;
}
QList<AbstractGeneratedFileInfo> QtQuickApp::updateableFiles(const QString &mainProFile) const
diff --git a/src/plugins/qmakeprojectmanager/wizards/qtquickapp.h b/src/plugins/qmakeprojectmanager/wizards/qtquickapp.h
index aa77b4ca533..e421a42dcb4 100644
--- a/src/plugins/qmakeprojectmanager/wizards/qtquickapp.h
+++ b/src/plugins/qmakeprojectmanager/wizards/qtquickapp.h
@@ -47,6 +47,22 @@ struct QtQuickAppGeneratedFileInfo : public AbstractGeneratedFileInfo
QtQuickAppGeneratedFileInfo() : AbstractGeneratedFileInfo() {}
};
+class TemplateInfo
+{
+public:
+ TemplateInfo() : stubVersionMinor(9) {}
+ QString templateName;
+ QString templatePath;
+ QString displayName;
+ QString description;
+ QString openFile;
+ QString featuresRequired;
+ QString priority;
+ QString viewerClassName;
+ QString viewerDir;
+ int stubVersionMinor;
+};
+
class QtQuickApp : public AbstractMobileApp
{
public:
@@ -63,16 +79,11 @@ public:
QmlDirProFileRelative
};
- enum ComponentSet {
- QtQuick10Components,
- QtQuick20Components,
- QtQuickControls10
- };
-
QtQuickApp();
- void setComponentSet(ComponentSet componentSet);
- ComponentSet componentSet() const;
+ static QList<TemplateInfo> templateInfos();
+
+ void setTemplateInfo(const TemplateInfo &templateInfo);
#ifndef CREATORLESSTEST
virtual Core::GeneratedFiles generateFiles(QString *errorMessage) const;
@@ -103,7 +114,7 @@ private:
QList<DeploymentFolder> deploymentFolders() const;
QFileInfo m_mainQmlFile;
- ComponentSet m_componentSet;
+ TemplateInfo m_templateInfo;
};
} // namespace Internal
diff --git a/src/plugins/qmakeprojectmanager/wizards/qtquickappwizard.cpp b/src/plugins/qmakeprojectmanager/wizards/qtquickappwizard.cpp
index ddc6f19af96..f2481916889 100644
--- a/src/plugins/qmakeprojectmanager/wizards/qtquickappwizard.cpp
+++ b/src/plugins/qmakeprojectmanager/wizards/qtquickappwizard.cpp
@@ -49,7 +49,7 @@ class QtQuickAppWizardDialog : public AbstractMobileAppWizardDialog
public:
explicit QtQuickAppWizardDialog(QWidget *parent, const Core::WizardDialogParameters &parameters);
- QtQuickApp::ComponentSet componentSet() const { return m_componentSetPage->componentSet(); }
+ TemplateInfo templateInfo() const;
protected:
void initializePage(int id);
@@ -76,26 +76,26 @@ QtQuickAppWizardDialog::QtQuickAppWizardDialog(QWidget *parent,
void QtQuickAppWizardDialog::initializePage(int id)
{
if (page(id) == kitsPage()) {
- Core::FeatureSet features = Core::Feature(QtSupport::Constants::FEATURE_QT_QUICK_1);
- QtQuickApp::ComponentSet components = componentSet();
- switch (components) {
- case QtQuickApp::QtQuick10Components:
- features = Core::Feature(QtSupport::Constants::FEATURE_QT_QUICK_1);
- break;
- case QtQuickApp::QtQuick20Components:
- features = Core::Feature(QtSupport::Constants::FEATURE_QT_QUICK_2);
- break;
- case QtQuickApp::QtQuickControls10:
- features = Core::Feature(QtSupport::Constants::FEATURE_QT_QUICK_2)
- | Core::Feature(QtSupport::Constants::FEATURE_QT_QUICK_CONTROLS);
- break;
+ QStringList stringList =
+ templateInfo().featuresRequired.split(QLatin1Char(','), QString::SkipEmptyParts);
+ Core::FeatureSet features;
+ foreach (const QString &string, stringList) {
+ Core::Feature feature(Core::Id::fromString(string.trimmed()));
+ features |= feature;
}
+
setRequiredFeatures(features);
updateKitsPage();
}
AbstractMobileAppWizardDialog::initializePage(id);
}
+TemplateInfo QtQuickAppWizardDialog::templateInfo() const
+{
+ return m_componentSetPage->templateInfo();
+}
+
+
class QtQuickAppWizardPrivate
{
class QtQuickApp *app;
@@ -143,7 +143,7 @@ void QtQuickAppWizard::prepareGenerateFiles(const QWizard *w,
{
Q_UNUSED(errorMessage)
const QtQuickAppWizardDialog *wizard = qobject_cast<const QtQuickAppWizardDialog*>(w);
- d->app->setComponentSet(wizard->componentSet());
+ d->app->setTemplateInfo(wizard->templateInfo());
}
QString QtQuickAppWizard::fileToOpenPostGeneration() const
diff --git a/src/plugins/qmakeprojectmanager/wizards/qtquickappwizardpages.cpp b/src/plugins/qmakeprojectmanager/wizards/qtquickappwizardpages.cpp
index 0ba72a631ce..899b6722267 100644
--- a/src/plugins/qmakeprojectmanager/wizards/qtquickappwizardpages.cpp
+++ b/src/plugins/qmakeprojectmanager/wizards/qtquickappwizardpages.cpp
@@ -42,31 +42,6 @@ public:
QLabel *m_descriptionLabel;
};
-QString QtQuickComponentSetPage::description(QtQuickApp::ComponentSet componentSet) const
-{
- const QString basicDescription = tr("Creates a Qt Quick 1 application project that can contain "
- "both QML and C++ code and includes a QDeclarativeView.<br><br>");
- const QString basicDescription2 = tr("Creates a Qt Quick 2 application project that can contain "
- "both QML and C++ code and includes a QQuickView.<br><br>");
- switch (componentSet) {
- case QtQuickApp::QtQuickControls10:
- return basicDescription2 + tr("Creates a deployable Qt Quick application using "
- "Qt Quick Controls. All files and directories that "
- "reside in the same directory as the main .qml file "
- "are deployed. You can modify the contents of the "
- "directory any time before deploying.\n\nRequires <b>Qt 5.1</b> or newer.");
- case QtQuickApp::QtQuick20Components:
- return basicDescription2 + tr("The built-in QML types in the QtQuick 2 namespace allow "
- "you to write cross-platform applications with "
- "a custom look and feel.\n\nRequires <b>Qt 5.0</b> or newer.");
- case QtQuickApp::QtQuick10Components:
- return basicDescription + tr("The built-in QML types in the QtQuick 1 namespace allow "
- "you to write cross-platform applications with "
- "a custom look and feel.\n\nRequires <b>Qt 4.8</b> or newer.");
- }
- return QString();
-}
-
QtQuickComponentSetPage::QtQuickComponentSetPage(QWidget *parent)
: QWizardPage(parent)
, d(new QtQuickComponentSetPagePrivate)
@@ -77,9 +52,8 @@ QtQuickComponentSetPage::QtQuickComponentSetPage(QWidget *parent)
QLabel *label = new QLabel(tr("Qt Quick component set:"), this);
d->m_versionComboBox = new QComboBox(this);
- d->m_versionComboBox->addItem(tr("Qt Quick Controls 1.0"), QtQuickApp::QtQuickControls10);
- d->m_versionComboBox->addItem(tr("Qt Quick 2.0"), QtQuickApp::QtQuick20Components);
- d->m_versionComboBox->addItem(tr("Qt Quick 1.1"), QtQuickApp::QtQuick10Components);
+ foreach (const TemplateInfo &templateInfo, QtQuickApp::templateInfos())
+ d->m_versionComboBox->addItem(templateInfo.displayName);
l->addWidget(label);
l->addWidget(d->m_versionComboBox);
@@ -87,7 +61,8 @@ QtQuickComponentSetPage::QtQuickComponentSetPage(QWidget *parent)
d->m_descriptionLabel = new QLabel(this);
d->m_descriptionLabel->setWordWrap(true);
d->m_descriptionLabel->setTextFormat(Qt::RichText);
- connect(d->m_versionComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(updateDescription(int)));
+ connect(d->m_versionComboBox, SIGNAL(currentIndexChanged(int)),
+ this, SLOT(updateDescription(int)));
updateDescription(d->m_versionComboBox->currentIndex());
mainLayout->addLayout(l);
@@ -99,19 +74,20 @@ QtQuickComponentSetPage::~QtQuickComponentSetPage()
delete d;
}
-QtQuickApp::ComponentSet QtQuickComponentSetPage::componentSet(int index) const
+TemplateInfo QtQuickComponentSetPage::templateInfo() const
{
- return (QtQuickApp::ComponentSet)d->m_versionComboBox->itemData(index).toInt();
-}
-
-QtQuickApp::ComponentSet QtQuickComponentSetPage::componentSet() const
-{
- return componentSet(d->m_versionComboBox->currentIndex());
+ if (QtQuickApp::templateInfos().isEmpty())
+ return TemplateInfo();
+ return QtQuickApp::templateInfos().at(d->m_versionComboBox->currentIndex());
}
void QtQuickComponentSetPage::updateDescription(int index)
{
- d->m_descriptionLabel->setText(description(componentSet(index)));
+ if (QtQuickApp::templateInfos().isEmpty())
+ return;
+
+ const TemplateInfo templateInfo = QtQuickApp::templateInfos().at(index);
+ d->m_descriptionLabel->setText(templateInfo.description);
}
} // namespace Internal
diff --git a/src/plugins/qmakeprojectmanager/wizards/qtquickappwizardpages.h b/src/plugins/qmakeprojectmanager/wizards/qtquickappwizardpages.h
index 7530cb2e97c..461b3da0a11 100644
--- a/src/plugins/qmakeprojectmanager/wizards/qtquickappwizardpages.h
+++ b/src/plugins/qmakeprojectmanager/wizards/qtquickappwizardpages.h
@@ -44,15 +44,12 @@ public:
explicit QtQuickComponentSetPage(QWidget *parent = 0);
virtual ~QtQuickComponentSetPage();
- QtQuickApp::ComponentSet componentSet() const;
+ TemplateInfo templateInfo() const;
private slots:
void updateDescription(int index);
private:
- QtQuickApp::ComponentSet componentSet(int index) const;
- QString description(QtQuickApp::ComponentSet componentSet) const;
-
class QtQuickComponentSetPagePrivate *d;
};