QmlDesigner: Scan imports on startup

This makes the loading of the first project a lot faster.

Task-number: QDS-9442
Change-Id: Ic84aa6df71db158ef5d0450ada79d96f35eb205b
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
Thomas Hartmann
2023-03-15 16:03:24 +01:00
parent 0b5628e502
commit c6489749d4

View File

@@ -17,19 +17,28 @@
#include <coreplugin/imode.h>
#include <coreplugin/modemanager.h>
#include <projectexplorer/jsonwizard/jsonwizardfactory.h>
#include <projectexplorer/projectexplorer.h>
#include <projectexplorer/projectmanager.h>
#include "projectexplorer/target.h"
#include <projectexplorer/devicesupport/idevice.h>
#include <projectexplorer/jsonwizard/jsonwizardfactory.h>
#include <projectexplorer/kitinformation.h>
#include <projectexplorer/kitmanager.h>
#include <projectexplorer/projectexplorer.h>
#include <projectexplorer/projectexplorerconstants.h>.h>
#include <projectexplorer/projectmanager.h>
#include <qmlprojectmanager/projectfilecontenttools.h>
#include <qmlprojectmanager/qmlproject.h>
#include <qtsupport/baseqtversion.h>
#include <qtsupport/qtkitinformation.h>
#include <qmldesigner/components/componentcore/theme.h>
#include <qmldesigner/dynamiclicensecheck.h>
#include <qmldesigner/qmldesignerconstants.h>
#include <qmldesigner/qmldesignerplugin.h>
#include <qmljs/qmljsmodelmanagerinterface.h>
#include <utils/checkablemessagebox.h>
#include <utils/hostosinfo.h>
#include <utils/icon.h>
@@ -638,6 +647,38 @@ void StudioWelcomePlugin::extensionsInitialized()
bool StudioWelcomePlugin::delayedInitialize()
{
QTimer::singleShot(2000, this, []() {
auto modelManager = QmlJS::ModelManagerInterface::instance();
if (!modelManager)
return;
QmlJS::PathsAndLanguages importPaths;
const QList<Kit *> kits = Utils::filtered(KitManager::kits(), [](const Kit *k) {
const QtSupport::QtVersion *version = QtSupport::QtKitAspect::qtVersion(k);
const bool isQt6 = version && version->qtVersion().majorVersion() == 6;
return isQt6
&& ProjectExplorer::DeviceTypeKitAspect::deviceTypeId(k)
== ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE;
});
for (const Kit *kit : kits) {
const QtSupport::QtVersion *version = QtSupport::QtKitAspect::qtVersion(kit);
const Utils::FilePath qmlPath = version->qmlPath();
importPaths.maybeInsert(qmlPath, QmlJS::Dialect::QmlQtQuick2);
QFutureInterface<void> result;
QmlJS::ModelManagerInterface::importScan(result,
QmlJS::ModelManagerInterface::workingCopy(),
importPaths,
modelManager,
false);
}
});
return true;
}