summaryrefslogtreecommitdiff
path: root/src/plugins/qmakeprojectmanager/wizards/qtquickappwizard.cpp
diff options
context:
space:
mode:
authorhjk <hjk121@nokiamail.com>2013-10-29 16:19:24 +0100
committerhjk <hjk121@nokiamail.com>2013-10-29 17:57:06 +0100
commitd7d27fccbc4962fd2b4eaacafa1cd281a5efa037 (patch)
tree72cd8f44e10c5dc559202972c7ae115fd3705ea8 /src/plugins/qmakeprojectmanager/wizards/qtquickappwizard.cpp
parent733057e3a08e9d264d4fb1d543a3b0a13a88df57 (diff)
downloadqt-creator-d7d27fccbc4962fd2b4eaacafa1cd281a5efa037.tar.gz
Rename plugins/qt4projectmanager to qmakeprojectmanager
This finally renames the plugin itself. Change-Id: Ibdf4f4b4e9776c2fdc809e0127f3e1310de44bd1 Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
Diffstat (limited to 'src/plugins/qmakeprojectmanager/wizards/qtquickappwizard.cpp')
-rw-r--r--src/plugins/qmakeprojectmanager/wizards/qtquickappwizard.cpp275
1 files changed, 275 insertions, 0 deletions
diff --git a/src/plugins/qmakeprojectmanager/wizards/qtquickappwizard.cpp b/src/plugins/qmakeprojectmanager/wizards/qtquickappwizard.cpp
new file mode 100644
index 0000000000..1a3ab05c44
--- /dev/null
+++ b/src/plugins/qmakeprojectmanager/wizards/qtquickappwizard.cpp
@@ -0,0 +1,275 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+****************************************************************************/
+
+#include "qtquickappwizard.h"
+
+#include "qtquickapp.h"
+#include "qtquickappwizardpages.h"
+#include "../qmakeprojectmanagerconstants.h"
+
+#include <qtsupport/qtsupportconstants.h>
+#include <qtsupport/baseqtversion.h>
+#include <projectexplorer/projectexplorerconstants.h>
+#include <projectexplorer/targetsetuppage.h>
+
+#include <QIcon>
+#include <QDebug>
+
+namespace QmakeProjectManager {
+namespace Internal {
+
+class QtQuickAppWizardDialog : public AbstractMobileAppWizardDialog
+{
+ Q_OBJECT
+
+public:
+ explicit QtQuickAppWizardDialog(QWidget *parent, const Core::WizardDialogParameters &parameters,
+ QtQuickAppWizard::Kind kind);
+
+protected:
+ bool validateCurrentPage();
+
+private:
+ QtQuickComponentSetOptionsPage *m_componentOptionsPage;
+ int m_componentOptionsPageId;
+
+ Utils::WizardProgressItem *m_componentItem;
+
+ friend class QtQuickAppWizard;
+};
+
+QtQuickAppWizardDialog::QtQuickAppWizardDialog(QWidget *parent,
+ const Core::WizardDialogParameters &parameters,
+ QtQuickAppWizard::Kind kind)
+ : AbstractMobileAppWizardDialog(parent,
+ QtSupport::QtVersionNumber(4, 7, 0),
+ QtSupport::QtVersionNumber(5, INT_MAX, INT_MAX), parameters)
+{
+ setWindowTitle(tr("New Qt Quick Application"));
+ setIntroDescription(tr("This wizard generates a Qt Quick application project."));
+
+ if (kind == QtQuickAppWizard::ImportQml || kind == QtQuickAppWizard::ImportQml2) { //Choose existing qml file
+ m_componentOptionsPage = new Internal::QtQuickComponentSetOptionsPage;
+ m_componentOptionsPageId = addPageWithTitle(m_componentOptionsPage, tr("Select existing QML file"));
+ m_componentItem = wizardProgress()->item(m_componentOptionsPageId);
+ }
+
+ AbstractMobileAppWizardDialog::addMobilePages();
+
+ if (kind == QtQuickAppWizard::ImportQml || kind == QtQuickAppWizard::ImportQml2) {
+ if (targetsPageItem())
+ m_componentItem->setNextItems(QList<Utils::WizardProgressItem *>()
+ << targetsPageItem());
+ }
+}
+
+bool QtQuickAppWizardDialog::validateCurrentPage()
+{
+ if (currentPage() == m_componentOptionsPage)
+ setIgnoreGenericOptionsPage(false);
+ return AbstractMobileAppWizardDialog::validateCurrentPage();
+}
+
+class QtQuickAppWizardPrivate
+{
+ class QtQuickApp *app;
+ class QtQuickAppWizardDialog *wizardDialog;
+ QtQuickAppWizard::Kind kind;
+ friend class QtQuickAppWizard;
+};
+
+QtQuickAppWizard::QtQuickAppWizard()
+ : d(new QtQuickAppWizardPrivate)
+{
+ setWizardKind(ProjectWizard);
+ setIcon(QIcon(QLatin1String(QmakeProjectManager::Constants::ICON_QTQUICK_APP)));
+ setId(QLatin1String("D.QMLA Application"));
+ setCategory(QLatin1String(ProjectExplorer::Constants::QT_APPLICATION_WIZARD_CATEGORY));
+ setDisplayCategory(QLatin1String(ProjectExplorer::Constants::QT_APPLICATION_WIZARD_CATEGORY_DISPLAY));
+
+ d->app = new QtQuickApp;
+ d->wizardDialog = 0;
+}
+
+QtQuickAppWizard::~QtQuickAppWizard()
+{
+ delete d->app;
+ delete d;
+}
+
+void QtQuickAppWizard::createInstances(ExtensionSystem::IPlugin *plugin)
+{
+ const QString basicDescription = tr("Creates a Qt Quick 1 application project that can contain "
+ "both QML and C++ code and includes a QDeclarativeView.\n\n");
+ const QString basicDescription2 = tr("Creates a Qt Quick 2 application project that can contain "
+ "both QML and C++ code and includes a QQuickView.\n\n");
+
+ Core::FeatureSet basicFeatures = Core::Feature(QtSupport::Constants::FEATURE_QT_QUICK_1);
+
+ QtQuickAppWizard *wizard = new QtQuickAppWizard;
+ wizard->setQtQuickKind(QtQuick1_1);
+ wizard->setDisplayName(tr("Qt Quick 1 Application (Built-in Types)"));
+ wizard->setDescription(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.0</b> or newer."));
+ wizard->setRequiredFeatures(basicFeatures);
+ plugin->addAutoReleasedObject(wizard);
+
+
+ wizard = new QtQuickAppWizard;
+ wizard->setQtQuickKind(QtQuick2_0);
+ wizard->setDisplayName(tr("Qt Quick 2 Application (Built-in Types)"));
+ wizard->setDescription(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."));
+ wizard->setRequiredFeatures(Core::Feature(QtSupport::Constants::FEATURE_QT_QUICK_2));
+ plugin->addAutoReleasedObject(wizard);
+
+
+ wizard = new QtQuickAppWizard;
+ wizard->setQtQuickKind(ImportQml);
+ wizard->setDisplayName(tr("Qt Quick 1 Application (from Existing QML File)"));
+ wizard->setDescription(basicDescription + tr("Creates a deployable Qt Quick application from "
+ "existing QML files. 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 4.8.0</b> or newer."));
+ wizard->setRequiredFeatures(basicFeatures);
+ plugin->addAutoReleasedObject(wizard);
+
+
+ wizard = new QtQuickAppWizard;
+ wizard->setQtQuickKind(ImportQml2);
+ wizard->setDisplayName(tr("Qt Quick 2 Application (from Existing QML File)"));
+ wizard->setDescription(basicDescription2 + tr("Creates a deployable Qt Quick application from "
+ "existing QML files. 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.0</b> or newer."));
+
+ wizard->setRequiredFeatures(Core::Feature(QtSupport::Constants::FEATURE_QT_QUICK_2));
+ plugin->addAutoReleasedObject(wizard);
+
+ wizard = new QtQuickAppWizard;
+ wizard->setQtQuickKind(QtQuick_Controls_1_0);
+
+ wizard->setDisplayName(tr("Qt Quick 2 Application (Qt Quick Controls)"));
+ wizard->setDescription(basicDescription + 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.0</b> or newer."));
+ wizard->setRequiredFeatures(Core::Feature(QtSupport::Constants::FEATURE_QT_QUICK_2)
+ | Core::Feature(QtSupport::Constants::FEATURE_QT_QUICK_CONTROLS));
+ plugin->addAutoReleasedObject(wizard);
+}
+
+AbstractMobileAppWizardDialog *QtQuickAppWizard::createWizardDialogInternal(QWidget *parent,
+ const Core::WizardDialogParameters &parameters) const
+{
+ d->wizardDialog = new QtQuickAppWizardDialog(parent, parameters, qtQuickKind());
+
+ switch (qtQuickKind()) {
+ case QtQuick1_1:
+ d->app->setComponentSet(QtQuickApp::QtQuick10Components);
+ d->app->setMainQml(QtQuickApp::ModeGenerate);
+ break;
+ case ImportQml:
+ d->app->setComponentSet(QtQuickApp::QtQuick10Components);
+ d->app->setMainQml(QtQuickApp::ModeImport);
+ break;
+ case ImportQml2:
+ d->app->setComponentSet(QtQuickApp::QtQuick20Components);
+ d->app->setMainQml(QtQuickApp::ModeImport);
+ break;
+ case QtQuick2_0:
+ d->app->setComponentSet(QtQuickApp::QtQuick20Components);
+ d->app->setMainQml(QtQuickApp::ModeGenerate);
+ break;
+ case QtQuick_Controls_1_0:
+ d->app->setComponentSet(QtQuickApp::QtQuickControls10);
+ d->app->setMainQml(QtQuickApp::ModeGenerate);
+ break;
+ default:
+ qWarning() << "QtQuickAppWizard illegal subOption:" << qtQuickKind();
+ break;
+ }
+
+ return d->wizardDialog;
+}
+
+void QtQuickAppWizard::projectPathChanged(const QString &path) const
+{
+ if (d->wizardDialog->targetsPage())
+ d->wizardDialog->targetsPage()->setProjectPath(path);
+}
+
+void QtQuickAppWizard::prepareGenerateFiles(const QWizard *w,
+ QString *errorMessage) const
+{
+ Q_UNUSED(errorMessage)
+ const QtQuickAppWizardDialog *wizard = qobject_cast<const QtQuickAppWizardDialog*>(w);
+
+ if (d->app->mainQmlMode() == QtQuickApp::ModeGenerate) {
+ d->app->setMainQml(QtQuickApp::ModeGenerate);
+ } else {
+ const QString mainQmlFile = wizard->m_componentOptionsPage->mainQmlFile();
+ d->app->setMainQml(QtQuickApp::ModeImport, mainQmlFile);
+ }
+}
+
+void QtQuickAppWizard::setQtQuickKind(QtQuickAppWizard::Kind kind)
+{
+ d->kind = kind;
+}
+
+QtQuickAppWizard::Kind QtQuickAppWizard::qtQuickKind() const
+{
+ return d->kind;
+}
+
+QString QtQuickAppWizard::fileToOpenPostGeneration() const
+{
+ return d->app->path(QtQuickApp::MainQml);
+}
+
+AbstractMobileApp *QtQuickAppWizard::app() const
+{
+ return d->app;
+}
+
+AbstractMobileAppWizardDialog *QtQuickAppWizard::wizardDialog() const
+{
+ return d->wizardDialog;
+}
+
+} // namespace Internal
+} // namespace QmakeProjectManager
+
+#include "qtquickappwizard.moc"