forked from qt-creator/qt-creator
ProjectExplorer: Use Guard in favor of setIsUpdating
Change-Id: I4f8448205fe0f90d0b8554f0911e66aa74cbe9b5 Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
@@ -53,7 +53,7 @@ void ProjectImporter::markTemporary(Kit *k)
|
||||
{
|
||||
QTC_ASSERT(!k->hasValue(KIT_IS_TEMPORARY), return);
|
||||
|
||||
bool oldIsUpdating = setIsUpdating(true);
|
||||
UpdateGuard guard(*this);
|
||||
|
||||
const QString name = k->displayName();
|
||||
k->setUnexpandedDisplayName(QCoreApplication::translate("ProjectExplorer::ProjectImporter",
|
||||
@@ -62,8 +62,6 @@ void ProjectImporter::markTemporary(Kit *k)
|
||||
k->setValue(KIT_TEMPORARY_NAME, k->displayName());
|
||||
k->setValue(KIT_FINAL_NAME, name);
|
||||
k->setValue(KIT_IS_TEMPORARY, true);
|
||||
|
||||
setIsUpdating(oldIsUpdating);
|
||||
}
|
||||
|
||||
void ProjectImporter::makePermanent(Kit *k)
|
||||
@@ -71,7 +69,7 @@ void ProjectImporter::makePermanent(Kit *k)
|
||||
if (!k->hasValue(KIT_IS_TEMPORARY))
|
||||
return;
|
||||
|
||||
bool oldIsUpdating = setIsUpdating(true);
|
||||
UpdateGuard guard(*this);
|
||||
|
||||
k->removeKey(KIT_IS_TEMPORARY);
|
||||
k->removeKey(TEMPORARY_OF_PROJECTS);
|
||||
@@ -80,8 +78,6 @@ void ProjectImporter::makePermanent(Kit *k)
|
||||
k->setUnexpandedDisplayName(k->value(KIT_FINAL_NAME).toString());
|
||||
k->removeKey(KIT_TEMPORARY_NAME);
|
||||
k->removeKey(KIT_FINAL_NAME);
|
||||
|
||||
setIsUpdating(oldIsUpdating);
|
||||
}
|
||||
|
||||
void ProjectImporter::cleanupKit(Kit *k)
|
||||
@@ -94,15 +90,10 @@ void ProjectImporter::addProject(Kit *k)
|
||||
if (!k->hasValue(KIT_IS_TEMPORARY))
|
||||
return;
|
||||
|
||||
UpdateGuard guard(*this);
|
||||
QStringList projects = k->value(TEMPORARY_OF_PROJECTS, QStringList()).toStringList();
|
||||
|
||||
projects.append(m_projectPath); // note: There can be more than one instance of the project added!
|
||||
|
||||
bool oldIsUpdating = setIsUpdating(true);
|
||||
|
||||
k->setValueSilently(TEMPORARY_OF_PROJECTS, projects);
|
||||
|
||||
setIsUpdating(oldIsUpdating);
|
||||
}
|
||||
|
||||
void ProjectImporter::removeProject(Kit *k, const QString &path)
|
||||
@@ -110,17 +101,14 @@ void ProjectImporter::removeProject(Kit *k, const QString &path)
|
||||
if (!k->hasValue(KIT_IS_TEMPORARY))
|
||||
return;
|
||||
|
||||
UpdateGuard guard(*this);
|
||||
QStringList projects = k->value(TEMPORARY_OF_PROJECTS, QStringList()).toStringList();
|
||||
projects.removeOne(path);
|
||||
|
||||
bool oldIsUpdating = setIsUpdating(true);
|
||||
|
||||
if (projects.isEmpty())
|
||||
KitManager::deregisterKit(k);
|
||||
else
|
||||
k->setValueSilently(TEMPORARY_OF_PROJECTS, projects);
|
||||
|
||||
setIsUpdating(oldIsUpdating);
|
||||
}
|
||||
|
||||
bool ProjectImporter::isTemporaryKit(Kit *k)
|
||||
|
||||
@@ -63,15 +63,26 @@ public:
|
||||
bool isTemporaryKit(Kit *k);
|
||||
|
||||
protected:
|
||||
bool setIsUpdating(bool b) {
|
||||
bool old = m_isUpdating;
|
||||
m_isUpdating = b;
|
||||
return old;
|
||||
class UpdateGuard
|
||||
{
|
||||
public:
|
||||
UpdateGuard(ProjectImporter &i) : m_importer(i)
|
||||
{
|
||||
m_wasUpdating = m_importer.isUpdating();
|
||||
m_importer.m_isUpdating = true;
|
||||
}
|
||||
~UpdateGuard() { m_importer.m_isUpdating = m_wasUpdating; }
|
||||
|
||||
private:
|
||||
ProjectImporter &m_importer;
|
||||
bool m_wasUpdating;
|
||||
};
|
||||
|
||||
private:
|
||||
const QString m_projectPath;
|
||||
bool m_isUpdating = false;
|
||||
|
||||
friend class UpdateGuard;
|
||||
};
|
||||
|
||||
} // namespace ProjectExplorer
|
||||
|
||||
@@ -124,9 +124,9 @@ QList<BuildInfo *> QmakeProjectImporter::import(const FileName &importPath, bool
|
||||
if (!version)
|
||||
continue;
|
||||
|
||||
bool oldIsUpdating = setIsUpdating(true);
|
||||
UpdateGuard guard(*this);
|
||||
QtVersionManager::addVersion(version);
|
||||
setIsUpdating(oldIsUpdating);
|
||||
|
||||
temporaryVersion = true;
|
||||
qCDebug(logs) << " created new qt version";
|
||||
}
|
||||
@@ -314,7 +314,8 @@ void QmakeProjectImporter::makePermanent(Kit *k)
|
||||
{
|
||||
if (!isTemporaryKit(k))
|
||||
return;
|
||||
setIsUpdating(true);
|
||||
UpdateGuard guard(*this);
|
||||
|
||||
int tempId = k->value(QT_IS_TEMPORARY, -1).toInt();
|
||||
int qtId = QtKitInformation::qtVersionId(k);
|
||||
if (tempId != qtId) {
|
||||
@@ -329,7 +330,6 @@ void QmakeProjectImporter::makePermanent(Kit *k)
|
||||
foreach (Kit *kit, KitManager::kits())
|
||||
if (kit->value(QT_IS_TEMPORARY, -1).toInt() == tempId)
|
||||
kit->removeKeySilently(QT_IS_TEMPORARY);
|
||||
setIsUpdating(false);
|
||||
ProjectImporter::makePermanent(k);
|
||||
}
|
||||
|
||||
@@ -356,9 +356,9 @@ Kit *QmakeProjectImporter::createTemporaryKit(BaseQtVersion *version,
|
||||
{
|
||||
Q_UNUSED(osType); // TODO use this to select the right toolchain?
|
||||
Kit *k = new Kit;
|
||||
bool oldIsUpdating = setIsUpdating(true);
|
||||
UpdateGuard guard(*this);
|
||||
{
|
||||
KitGuard guard(k);
|
||||
KitGuard kitGuard(k);
|
||||
|
||||
QtKitInformation::setQtVersion(k, version);
|
||||
ToolChainKitInformation::setToolChain(k, preferredToolChain(version, parsedSpec, archConfig));
|
||||
@@ -379,7 +379,6 @@ Kit *QmakeProjectImporter::createTemporaryKit(BaseQtVersion *version,
|
||||
} // ~KitGuard, sending kitUpdated
|
||||
|
||||
KitManager::registerKit(k); // potentially adds kits to other targetsetuppages
|
||||
setIsUpdating(oldIsUpdating);
|
||||
return k;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user