diff options
author | Tapani Mattila <[email protected]> | 2022-06-01 17:33:39 +0300 |
---|---|---|
committer | Tapani Mattila <[email protected]> | 2022-06-08 07:43:52 +0000 |
commit | 0b404c9c7aca1ec6c01d1bd860e33efefc7174df (patch) | |
tree | c177344273376c408277db31c1529ff27c697970 /src/plugins/qmlprojectmanager/qmlprojectplugin.cpp | |
parent | 1445e4180fcdba1e5cb21e4e30f7e39e86df4d0e (diff) |
QmlProjectManager: Load QDS landing page content when it is needed
Task-number: QTCREATORBUG-27583
Change-Id: Ib329816f7282b0c6f88d78d62a0c9f34c961e509
Reviewed-by: Alessandro Portale <[email protected]>
Reviewed-by: <[email protected]>
Diffstat (limited to 'src/plugins/qmlprojectmanager/qmlprojectplugin.cpp')
-rw-r--r-- | src/plugins/qmlprojectmanager/qmlprojectplugin.cpp | 45 |
1 files changed, 28 insertions, 17 deletions
diff --git a/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp b/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp index a29ee607153..58d75e3282f 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp @@ -117,6 +117,7 @@ public: {runConfigFactory.runConfigurationId()}}; QPointer<QMessageBox> lastMessageBox; QdsLandingPage *landingPage = nullptr; + QdsLandingPageWidget *landingPageWidget = nullptr; }; QmlProjectPlugin::~QmlProjectPlugin() @@ -125,6 +126,8 @@ QmlProjectPlugin::~QmlProjectPlugin() d->lastMessageBox->deleteLater(); if (d->landingPage) d->landingPage->deleteLater(); + if (d->landingPageWidget) + d->landingPageWidget->deleteLater(); delete d; } @@ -263,8 +266,19 @@ bool QmlProjectPlugin::initialize(const QStringList &, QString *errorMessage) d = new QmlProjectPluginPrivate; - if (!qmlDesignerEnabled()) - initializeQmlLandingPage(); + if (!qmlDesignerEnabled()) { + d->landingPageWidget = new QdsLandingPageWidget(); + + const QStringList mimeTypes = {QmlJSTools::Constants::QMLUI_MIMETYPE}; + auto context = new Internal::DesignModeContext(d->landingPageWidget); + Core::ICore::addContextObject(context); + + Core::DesignMode::registerDesignWidget(d->landingPageWidget, mimeTypes, context->context()); + + connect(Core::ModeManager::instance(), &Core::ModeManager::currentModeChanged, + this, &QmlProjectPlugin::editorModeChanged); + } + ProjectManager::registerProjectType<QmlProject>(QmlJSTools::Constants::QMLPROJECT_MIMETYPE); Core::FileIconProvider::registerIconOverlayForSuffix(":/qmlproject/images/qmlproject.png", @@ -366,23 +380,12 @@ bool QmlProjectPlugin::initialize(const QStringList &, QString *errorMessage) void QmlProjectPlugin::initializeQmlLandingPage() { - d->landingPage = new QdsLandingPage(); + d->landingPage = new QdsLandingPage(d->landingPageWidget); connect(d->landingPage, &QdsLandingPage::openCreator, this, &QmlProjectPlugin::openQtc); connect(d->landingPage, &QdsLandingPage::openDesigner, this, &QmlProjectPlugin::openQds); connect(d->landingPage, &QdsLandingPage::installDesigner, this, &QmlProjectPlugin::installQds); connect(d->landingPage, &QdsLandingPage::generateCmake, this, &QmlProjectPlugin::generateCmake); connect(d->landingPage, &QdsLandingPage::generateProjectFile, this, &QmlProjectPlugin::generateProjectFile); - - auto dialog = d->landingPage->dialog(); - - const QStringList mimeTypes = {QmlJSTools::Constants::QMLUI_MIMETYPE}; - auto context = new Internal::DesignModeContext(dialog); - Core::ICore::addContextObject(context); - - Core::DesignMode::registerDesignWidget(dialog, mimeTypes, context->context()); - - connect(Core::ModeManager::instance(), &Core::ModeManager::currentModeChanged, - this, &QmlProjectPlugin::editorModeChanged); } void QmlProjectPlugin::displayQmlLandingPage() @@ -390,6 +393,9 @@ void QmlProjectPlugin::displayQmlLandingPage() const QString qtVersionString = ProjectFileContentTools::qtVersion(projectFilePath()); const QString qdsVersionString = ProjectFileContentTools::qdsVersion(projectFilePath()); + if (!d->landingPage) + initializeQmlLandingPage(); + d->landingPage->setQdsInstalled(qdsInstallationExists()); d->landingPage->setProjectFileExists(projectFilePath().exists()); d->landingPage->setCmakeResources(ProjectFileContentTools::rootCmakeFiles()); @@ -400,7 +406,8 @@ void QmlProjectPlugin::displayQmlLandingPage() void QmlProjectPlugin::hideQmlLandingPage() { - d->landingPage->hide(); + if (d->landingPage) + d->landingPage->hide(); } static bool isDesignerMode(Utils::Id mode) @@ -430,7 +437,9 @@ void QmlProjectPlugin::openQtc(bool permanent) if (permanent) setAlwaysOpenWithMode(Core::Constants::MODE_EDIT); - hideQmlLandingPage(); + if (d->landingPage) + hideQmlLandingPage(); + Core::ModeManager::activateMode(Core::Constants::MODE_EDIT); } @@ -439,7 +448,9 @@ void QmlProjectPlugin::openQds(bool permanent) if (permanent) setAlwaysOpenWithMode(Core::Constants::MODE_DESIGN); - hideQmlLandingPage(); + if (d->landingPage) + hideQmlLandingPage(); + auto editor = Core::EditorManager::currentEditor(); if (editor) openInQDSWithProject(editor->document()->filePath()); |