qbs: Simplify add/remove file code

There is no need to call setupFiles on the QbsGroupNode before calling
update() on the root node. That will just redo the work anyway.

Change-Id: I54048395f87dd6fb5436f5d9d47b97e82460b568
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
Tobias Hunger
2017-02-17 13:20:26 +01:00
parent 563b5033f8
commit 68b1859f58
3 changed files with 22 additions and 49 deletions

View File

@@ -352,7 +352,7 @@ bool QbsGroupNode::addFiles(const QStringList &filePaths, QStringList *notAdded)
return false; return false;
} }
return prjNode->project()->addFilesToProduct(this, filePaths, prdNode->qbsProductData(), return prjNode->project()->addFilesToProduct(filePaths, prdNode->qbsProductData(),
m_qbsGroupData, notAdded); m_qbsGroupData, notAdded);
} }
@@ -374,7 +374,7 @@ bool QbsGroupNode::removeFiles(const QStringList &filePaths, QStringList *notRem
return false; return false;
} }
return prjNode->project()->removeFilesFromProduct(this, filePaths, prdNode->qbsProductData(), return prjNode->project()->removeFilesFromProduct(filePaths, prdNode->qbsProductData(),
m_qbsGroupData, notRemoved); m_qbsGroupData, notRemoved);
} }
@@ -387,7 +387,7 @@ bool QbsGroupNode::renameFile(const QString &filePath, const QString &newFilePat
if (!prdNode || !prdNode->qbsProductData().isValid()) if (!prdNode || !prdNode->qbsProductData().isValid())
return false; return false;
return prjNode->project()->renameFileInProduct(this, filePath, newFilePath, return prjNode->project()->renameFileInProduct(filePath, newFilePath,
prdNode->qbsProductData(), m_qbsGroupData); prdNode->qbsProductData(), m_qbsGroupData);
} }
@@ -574,8 +574,7 @@ bool QbsProductNode::addFiles(const QStringList &filePaths, QStringList *notAdde
qbs::GroupData grp = findMainQbsGroup(m_qbsProductData); qbs::GroupData grp = findMainQbsGroup(m_qbsProductData);
if (grp.isValid()) { if (grp.isValid()) {
return prjNode->project()->addFilesToProduct(this, filePaths, m_qbsProductData, grp, return prjNode->project()->addFilesToProduct(filePaths, m_qbsProductData, grp, notAdded);
notAdded);
} }
QTC_ASSERT(false, return false); QTC_ASSERT(false, return false);
@@ -595,7 +594,7 @@ bool QbsProductNode::removeFiles(const QStringList &filePaths, QStringList *notR
qbs::GroupData grp = findMainQbsGroup(m_qbsProductData); qbs::GroupData grp = findMainQbsGroup(m_qbsProductData);
if (grp.isValid()) { if (grp.isValid()) {
return prjNode->project()->removeFilesFromProduct(this, filePaths, m_qbsProductData, grp, return prjNode->project()->removeFilesFromProduct(filePaths, m_qbsProductData, grp,
notRemoved); notRemoved);
} }
@@ -609,8 +608,7 @@ bool QbsProductNode::renameFile(const QString &filePath, const QString &newFileP
return false; return false;
const qbs::GroupData grp = findMainQbsGroup(m_qbsProductData); const qbs::GroupData grp = findMainQbsGroup(m_qbsProductData);
QTC_ASSERT(grp.isValid(), return false); QTC_ASSERT(grp.isValid(), return false);
return prjNode->project()->renameFileInProduct(this, filePath, newFilePath, m_qbsProductData, return prjNode->project()->renameFileInProduct(filePath, newFilePath, m_qbsProductData, grp);
grp);
} }
void QbsProductNode::setQbsProductData(const qbs::Project &project, const qbs::ProductData prd) void QbsProductNode::setQbsProductData(const qbs::Project &project, const qbs::ProductData prd)

View File

@@ -300,27 +300,9 @@ bool QbsProject::ensureWriteableQbsFile(const QString &file)
return true; return true;
} }
qbs::GroupData QbsProject::reRetrieveGroupData(const qbs::ProductData &oldProduct, bool QbsProject::addFilesToProduct(const QStringList &filePaths,
const qbs::GroupData &oldGroup) const qbs::ProductData &productData,
{ const qbs::GroupData &groupData, QStringList *notAdded)
qbs::GroupData newGroup;
foreach (const qbs::ProductData &pd, m_projectData.allProducts()) {
if (uniqueProductName(pd) == uniqueProductName(oldProduct)) {
foreach (const qbs::GroupData &gd, pd.groups()) {
if (gd.location() == oldGroup.location()) {
newGroup = gd;
break;
}
}
break;
}
}
QTC_CHECK(newGroup.isValid());
return newGroup;
}
bool QbsProject::addFilesToProduct(QbsBaseProjectNode *node, const QStringList &filePaths,
const qbs::ProductData &productData, const qbs::GroupData &groupData, QStringList *notAdded)
{ {
QTC_ASSERT(m_qbsProject.isValid(), return false); QTC_ASSERT(m_qbsProject.isValid(), return false);
QStringList allPaths = groupData.allFilePaths(); QStringList allPaths = groupData.allFilePaths();
@@ -338,17 +320,16 @@ bool QbsProject::addFilesToProduct(QbsBaseProjectNode *node, const QStringList &
} }
if (notAdded->count() != filePaths.count()) { if (notAdded->count() != filePaths.count()) {
m_projectData = m_qbsProject.projectData(); m_projectData = m_qbsProject.projectData();
QbsGroupNode::setupFiles(node, reRetrieveGroupData(productData, groupData),
allPaths, QFileInfo(productFilePath).absolutePath(), false);
rootProjectNode()->update(); rootProjectNode()->update();
emit fileListChanged(); emit fileListChanged();
} }
return notAdded->isEmpty(); return notAdded->isEmpty();
} }
bool QbsProject::removeFilesFromProduct(QbsBaseProjectNode *node, const QStringList &filePaths, bool QbsProject::removeFilesFromProduct(const QStringList &filePaths,
const qbs::ProductData &productData, const qbs::GroupData &groupData, const qbs::ProductData &productData,
QStringList *notRemoved) const qbs::GroupData &groupData,
QStringList *notRemoved)
{ {
QTC_ASSERT(m_qbsProject.isValid(), return false); QTC_ASSERT(m_qbsProject.isValid(), return false);
QStringList allPaths = groupData.allFilePaths(); QStringList allPaths = groupData.allFilePaths();
@@ -367,22 +348,20 @@ bool QbsProject::removeFilesFromProduct(QbsBaseProjectNode *node, const QStringL
} }
if (notRemoved->count() != filePaths.count()) { if (notRemoved->count() != filePaths.count()) {
m_projectData = m_qbsProject.projectData(); m_projectData = m_qbsProject.projectData();
QbsGroupNode::setupFiles(node, reRetrieveGroupData(productData, groupData), allPaths,
QFileInfo(productFilePath).absolutePath(), false);
rootProjectNode()->update(); rootProjectNode()->update();
emit fileListChanged(); emit fileListChanged();
} }
return notRemoved->isEmpty(); return notRemoved->isEmpty();
} }
bool QbsProject::renameFileInProduct(QbsBaseProjectNode *node, const QString &oldPath, bool QbsProject::renameFileInProduct(const QString &oldPath, const QString &newPath,
const QString &newPath, const qbs::ProductData &productData, const qbs::ProductData &productData,
const qbs::GroupData &groupData) const qbs::GroupData &groupData)
{ {
if (newPath.isEmpty()) if (newPath.isEmpty())
return false; return false;
QStringList dummy; QStringList dummy;
if (!removeFilesFromProduct(node, QStringList() << oldPath, productData, groupData, &dummy)) if (!removeFilesFromProduct(QStringList(oldPath), productData, groupData, &dummy))
return false; return false;
qbs::ProductData newProductData; qbs::ProductData newProductData;
foreach (const qbs::ProductData &p, m_projectData.allProducts()) { foreach (const qbs::ProductData &p, m_projectData.allProducts()) {
@@ -403,7 +382,7 @@ bool QbsProject::renameFileInProduct(QbsBaseProjectNode *node, const QString &ol
if (!newGroupData.isValid()) if (!newGroupData.isValid())
return false; return false;
return addFilesToProduct(node, QStringList() << newPath, newProductData, newGroupData, &dummy); return addFilesToProduct(QStringList() << newPath, newProductData, newGroupData, &dummy);
} }
void QbsProject::invalidate() void QbsProject::invalidate()

View File

@@ -71,13 +71,12 @@ public:
QStringList filesGeneratedFrom(const QString &sourceFile) const override; QStringList filesGeneratedFrom(const QString &sourceFile) const override;
bool isProjectEditable() const; bool isProjectEditable() const;
bool addFilesToProduct(QbsBaseProjectNode *node, const QStringList &filePaths, bool addFilesToProduct(const QStringList &filePaths, const qbs::ProductData &productData,
const qbs::ProductData &productData, const qbs::GroupData &groupData, const qbs::GroupData &groupData, QStringList *notAdded);
QStringList *notAdded); bool removeFilesFromProduct(const QStringList &filePaths,
bool removeFilesFromProduct(QbsBaseProjectNode *node, const QStringList &filePaths,
const qbs::ProductData &productData, const qbs::GroupData &groupData, const qbs::ProductData &productData, const qbs::GroupData &groupData,
QStringList *notRemoved); QStringList *notRemoved);
bool renameFileInProduct(QbsBaseProjectNode *node, const QString &oldPath, bool renameFileInProduct(const QString &oldPath,
const QString &newPath, const qbs::ProductData &productData, const QString &newPath, const qbs::ProductData &productData,
const qbs::GroupData &groupData); const qbs::GroupData &groupData);
@@ -145,9 +144,6 @@ private:
static bool ensureWriteableQbsFile(const QString &file); static bool ensureWriteableQbsFile(const QString &file);
qbs::GroupData reRetrieveGroupData(const qbs::ProductData &oldProduct,
const qbs::GroupData &oldGroup);
const QString m_projectName; const QString m_projectName;
QHash<ProjectExplorer::Target *, qbs::Project> m_qbsProjects; QHash<ProjectExplorer::Target *, qbs::Project> m_qbsProjects;
qbs::Project m_qbsProject; qbs::Project m_qbsProject;