diff options
author | hjk <hjk@qt.io> | 2023-08-25 18:12:43 +0200 |
---|---|---|
committer | hjk <hjk@qt.io> | 2023-08-29 12:09:50 +0000 |
commit | 4c81af8c0a6173311c4a5f3ca25b354115220c65 (patch) | |
tree | c7fce32e1eeddbe0623bbb69cc95d789877b9936 /src/plugins/qbsprojectmanager | |
parent | 12fb4e93bdd864819c4863b8e0ac6306690f176a (diff) |
QbsProjectManager: Create QbsProfileManager on request
Task-number: QTCREATORBUG-29546
Change-Id: Ib50ce8cacb4ef26346d0b43401f97093c1c75155
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/plugins/qbsprojectmanager')
-rw-r--r-- | src/plugins/qbsprojectmanager/qbsprofilemanager.cpp | 35 | ||||
-rw-r--r-- | src/plugins/qbsprojectmanager/qbsprofilemanager.h | 2 | ||||
-rw-r--r-- | src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp | 1 |
3 files changed, 19 insertions, 19 deletions
diff --git a/src/plugins/qbsprojectmanager/qbsprofilemanager.cpp b/src/plugins/qbsprojectmanager/qbsprofilemanager.cpp index 2be00a1d9e2..ecab48bc4f9 100644 --- a/src/plugins/qbsprojectmanager/qbsprofilemanager.cpp +++ b/src/plugins/qbsprojectmanager/qbsprofilemanager.cpp @@ -89,21 +89,27 @@ QString toJSLiteral(const QVariant &val) return QString::fromLatin1("Unconvertible type %1").arg(QLatin1String(val.typeName())); } - -static QbsProfileManager *m_instance = nullptr; +static PropertyProvider &defaultPropertyProvider() +{ + static DefaultPropertyProvider theDefaultPropertyProvider; + return theDefaultPropertyProvider; +} static QString kitNameKeyInQbsSettings(const ProjectExplorer::Kit *kit) { return "preferences.qtcreator.kit." + kit->id().toString(); } -QbsProfileManager::QbsProfileManager() : m_defaultPropertyProvider(new DefaultPropertyProvider) +QbsProfileManager::QbsProfileManager() { - m_instance = this; - setObjectName(QLatin1String("QbsProjectManager")); - connect(ProjectExplorer::KitManager::instance(), &ProjectExplorer::KitManager::kitsLoaded, this, - [this] { m_kitsToBeSetupForQbs = ProjectExplorer::KitManager::kits(); } ); + + if (ProjectExplorer::KitManager::instance()->isLoaded()) { + m_kitsToBeSetupForQbs = ProjectExplorer::KitManager::kits(); + } else { + connect(ProjectExplorer::KitManager::instance(), &ProjectExplorer::KitManager::kitsLoaded, + this, [this] { m_kitsToBeSetupForQbs = ProjectExplorer::KitManager::kits(); } ); + } connect(ProjectExplorer::KitManager::instance(), &ProjectExplorer::KitManager::kitAdded, this, &QbsProfileManager::addProfileFromKit); connect(ProjectExplorer::KitManager::instance(), &ProjectExplorer::KitManager::kitUpdated, this, @@ -114,15 +120,12 @@ QbsProfileManager::QbsProfileManager() : m_defaultPropertyProvider(new DefaultPr this, &QbsProfileManager::updateAllProfiles); } -QbsProfileManager::~QbsProfileManager() -{ - delete m_defaultPropertyProvider; - m_instance = nullptr; -} +QbsProfileManager::~QbsProfileManager() = default; QbsProfileManager *QbsProfileManager::instance() { - return m_instance; + static QbsProfileManager theQbsProfileManager; + return &theQbsProfileManager; } QString QbsProfileManager::ensureProfileForKit(const ProjectExplorer::Kit *k) @@ -137,8 +140,8 @@ void QbsProfileManager::updateProfileIfNecessary(const ProjectExplorer::Kit *kit { // kit in list <=> profile update is necessary // Note that the const_cast is safe, as we do not call any non-const methods on the object. - if (m_instance->m_kitsToBeSetupForQbs.removeOne(const_cast<ProjectExplorer::Kit *>(kit))) - m_instance->addProfileFromKit(kit); + if (instance()->m_kitsToBeSetupForQbs.removeOne(const_cast<ProjectExplorer::Kit *>(kit))) + instance()->addProfileFromKit(kit); } void QbsProfileManager::updateAllProfiles() @@ -154,7 +157,7 @@ void QbsProfileManager::addProfileFromKit(const ProjectExplorer::Kit *k) runQbsConfig(QbsConfigOp::Set, kitNameKeyInQbsSettings(k), name); // set up properties: - QVariantMap data = m_defaultPropertyProvider->properties(k, QVariantMap()); + QVariantMap data = defaultPropertyProvider().properties(k, QVariantMap()); for (PropertyProvider *provider : std::as_const(g_propertyProviders)) { if (provider->canHandle(k)) data = provider->properties(k, data); diff --git a/src/plugins/qbsprojectmanager/qbsprofilemanager.h b/src/plugins/qbsprojectmanager/qbsprofilemanager.h index 3b6d98f697c..5e9dacea819 100644 --- a/src/plugins/qbsprojectmanager/qbsprofilemanager.h +++ b/src/plugins/qbsprojectmanager/qbsprofilemanager.h @@ -12,7 +12,6 @@ namespace ProjectExplorer { class Kit; } namespace QbsProjectManager { namespace Internal { -class DefaultPropertyProvider; QString toJSLiteral(const QVariant &val); QVariant fromJSLiteral(const QString &str); @@ -43,7 +42,6 @@ private: void handleKitUpdate(ProjectExplorer::Kit *kit); void handleKitRemoval(ProjectExplorer::Kit *kit); - DefaultPropertyProvider *m_defaultPropertyProvider; QList<ProjectExplorer::Kit *> m_kitsToBeSetupForQbs; }; diff --git a/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp b/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp index 4299f22e293..fc0eb4abebb 100644 --- a/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp +++ b/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp @@ -66,7 +66,6 @@ static QbsProject *currentEditorProject() class QbsProjectManagerPluginPrivate { public: - QbsProfileManager manager; QbsBuildConfigurationFactory buildConfigFactory; QbsBuildStepFactory buildStepFactory; QbsCleanStepFactory cleanStepFactory; |