aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qbsprojectmanager
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2023-08-25 18:12:43 +0200
committerhjk <hjk@qt.io>2023-08-29 12:09:50 +0000
commit4c81af8c0a6173311c4a5f3ca25b354115220c65 (patch)
treec7fce32e1eeddbe0623bbb69cc95d789877b9936 /src/plugins/qbsprojectmanager
parent12fb4e93bdd864819c4863b8e0ac6306690f176a (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.cpp35
-rw-r--r--src/plugins/qbsprojectmanager/qbsprofilemanager.h2
-rw-r--r--src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp1
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;