QbsProjectManager: Support UI-based file renaming.

Task-number: QBS-652
Change-Id: Iaaf767871b1f546814acec62330e2c8d732b8d75
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
This commit is contained in:
Christian Kandeler
2014-09-11 17:12:03 +02:00
parent d87f3d53c7
commit e50b75eb66
4 changed files with 61 additions and 0 deletions

View File

@@ -307,6 +307,37 @@ bool QbsProject::removeFilesFromProduct(QbsBaseProjectNode *node, const QStringL
return notRemoved->isEmpty();
}
bool QbsProject::renameFileInProduct(QbsBaseProjectNode *node, const QString &oldPath,
const QString &newPath, const qbs::ProductData &productData,
const qbs::GroupData &groupData)
{
if (newPath.isEmpty())
return false;
QStringList dummy;
if (!removeFilesFromProduct(node, QStringList() << oldPath, productData, groupData, &dummy))
return false;
qbs::ProductData newProductData;
foreach (const qbs::ProductData &p, m_projectData.allProducts()) {
if (uniqueProductName(p) == uniqueProductName(productData)) {
newProductData = p;
break;
}
}
if (!newProductData.isValid())
return false;
qbs::GroupData newGroupData;
foreach (const qbs::GroupData &g, newProductData.groups()) {
if (g.name() == groupData.name()) {
newGroupData = g;
break;
}
}
if (!newGroupData.isValid())
return false;
return addFilesToProduct(node, QStringList() << newPath, newProductData, newGroupData, &dummy);
}
void QbsProject::invalidate()
{
prepareForParsing();