QmakeProjectImporter: Prepare for multiple concurrent imports

Fix logic around temporary qt versions. We want essentially shared
ownership of kits on the temporary qt version.

Change-Id: Ic8c748aa2b04afb5a30444563b3fc2f4272ca47c
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
This commit is contained in:
Daniel Teske
2014-08-06 16:54:18 +02:00
parent 0d8dd285b0
commit e476ff3587
7 changed files with 102 additions and 38 deletions

View File

@@ -57,7 +57,7 @@ void ProjectImporter::markTemporary(Kit *k)
{
QTC_ASSERT(!k->hasValue(KIT_IS_TEMPORARY), return);
setIsUpdating(true);
bool oldIsUpdating = setIsUpdating(true);
const QString name = k->displayName();
k->setUnexpandedDisplayName(QCoreApplication::translate("ProjectExplorer::ProjectImporter",
@@ -67,7 +67,7 @@ void ProjectImporter::markTemporary(Kit *k)
k->setValue(KIT_FINAL_NAME, name);
k->setValue(KIT_IS_TEMPORARY, true);
setIsUpdating(false);
setIsUpdating(oldIsUpdating);
}
void ProjectImporter::makePermanent(Kit *k)
@@ -75,7 +75,7 @@ void ProjectImporter::makePermanent(Kit *k)
if (!k->hasValue(KIT_IS_TEMPORARY))
return;
setIsUpdating(true);
bool oldIsUpdating = setIsUpdating(true);
k->removeKey(KIT_IS_TEMPORARY);
k->removeKey(TEMPORARY_OF_PROJECTS);
@@ -85,7 +85,7 @@ void ProjectImporter::makePermanent(Kit *k)
k->removeKey(KIT_TEMPORARY_NAME);
k->removeKey(KIT_FINAL_NAME);
setIsUpdating(false);
setIsUpdating(oldIsUpdating);
}
void ProjectImporter::cleanupKit(Kit *k)
@@ -102,11 +102,11 @@ void ProjectImporter::addProject(Kit *k)
projects.append(m_projectPath); // note: There can be more than one instance of the project added!
setIsUpdating(true);
bool oldIsUpdating = setIsUpdating(true);
k->setValue(TEMPORARY_OF_PROJECTS, projects);
k->setValueSilently(TEMPORARY_OF_PROJECTS, projects);
setIsUpdating(false);
setIsUpdating(oldIsUpdating);
}
void ProjectImporter::removeProject(Kit *k, const QString &path)
@@ -117,14 +117,19 @@ void ProjectImporter::removeProject(Kit *k, const QString &path)
QStringList projects = k->value(TEMPORARY_OF_PROJECTS, QStringList()).toStringList();
projects.removeOne(path);
setIsUpdating(true);
bool oldIsUpdating = setIsUpdating(true);
if (projects.isEmpty())
ProjectExplorer::KitManager::deregisterKit(k);
else
k->setValue(TEMPORARY_OF_PROJECTS, projects);
k->setValueSilently(TEMPORARY_OF_PROJECTS, projects);
setIsUpdating(false);
setIsUpdating(oldIsUpdating);
}
bool ProjectImporter::isTemporaryKit(Kit *k)
{
return k->hasValue(KIT_IS_TEMPORARY);
}
} // namespace ProjectExplorer