ClangTools: Attach ClangToolsProjectSettings data to project itself

Easier to reason about life time.

Change-Id: I2c61527532f6faa344fc59d858921e66daaf0b7e
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2020-01-13 17:38:33 +01:00
parent 5a4b0b565a
commit 82265d51a7
10 changed files with 39 additions and 44 deletions

View File

@@ -178,29 +178,19 @@ void ClangToolsProjectSettings::store()
m_project->setNamedSettings(SETTINGS_KEY_MAIN, map);
}
ClangToolsProjectSettingsManager::ClangToolsProjectSettingsManager()
ClangToolsProjectSettings::ClangToolsProjectSettingsPtr
ClangToolsProjectSettings::getSettings(ProjectExplorer::Project *project)
{
QObject::connect(ProjectExplorer::SessionManager::instance(),
&ProjectExplorer::SessionManager::aboutToRemoveProject,
&ClangToolsProjectSettingsManager::handleProjectToBeRemoved);
const QString key = "ClangToolsProjectSettings";
QVariant v = project->extraData(key);
if (v.isNull()) {
v = QVariant::fromValue(
ClangToolsProjectSettingsPtr{new ClangToolsProjectSettings(project)});
project->setExtraData(key, v);
}
return v.value<QSharedPointer<ClangToolsProjectSettings>>();
}
ClangToolsProjectSettings *ClangToolsProjectSettingsManager::getSettings(
ProjectExplorer::Project *project)
{
auto &settings = m_settings[project];
if (!settings)
settings.reset(new ClangToolsProjectSettings(project));
return settings.data();
}
void ClangToolsProjectSettingsManager::handleProjectToBeRemoved(ProjectExplorer::Project *project)
{
m_settings.remove(project);
}
ClangToolsProjectSettingsManager::SettingsMap ClangToolsProjectSettingsManager::m_settings;
SuppressedDiagnostic::SuppressedDiagnostic(const Diagnostic &diag)
: filePath(Utils::FilePath::fromString(diag.location.filePath))
, description(diag.description)