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 prjNode->project()->addFilesToProduct(this, filePaths, prdNode->qbsProductData(),
return prjNode->project()->addFilesToProduct(filePaths, prdNode->qbsProductData(),
m_qbsGroupData, notAdded);
}
@@ -374,7 +374,7 @@ bool QbsGroupNode::removeFiles(const QStringList &filePaths, QStringList *notRem
return false;
}
return prjNode->project()->removeFilesFromProduct(this, filePaths, prdNode->qbsProductData(),
return prjNode->project()->removeFilesFromProduct(filePaths, prdNode->qbsProductData(),
m_qbsGroupData, notRemoved);
}
@@ -387,7 +387,7 @@ bool QbsGroupNode::renameFile(const QString &filePath, const QString &newFilePat
if (!prdNode || !prdNode->qbsProductData().isValid())
return false;
return prjNode->project()->renameFileInProduct(this, filePath, newFilePath,
return prjNode->project()->renameFileInProduct(filePath, newFilePath,
prdNode->qbsProductData(), m_qbsGroupData);
}
@@ -574,8 +574,7 @@ bool QbsProductNode::addFiles(const QStringList &filePaths, QStringList *notAdde
qbs::GroupData grp = findMainQbsGroup(m_qbsProductData);
if (grp.isValid()) {
return prjNode->project()->addFilesToProduct(this, filePaths, m_qbsProductData, grp,
notAdded);
return prjNode->project()->addFilesToProduct(filePaths, m_qbsProductData, grp, notAdded);
}
QTC_ASSERT(false, return false);
@@ -595,7 +594,7 @@ bool QbsProductNode::removeFiles(const QStringList &filePaths, QStringList *notR
qbs::GroupData grp = findMainQbsGroup(m_qbsProductData);
if (grp.isValid()) {
return prjNode->project()->removeFilesFromProduct(this, filePaths, m_qbsProductData, grp,
return prjNode->project()->removeFilesFromProduct(filePaths, m_qbsProductData, grp,
notRemoved);
}
@@ -609,8 +608,7 @@ bool QbsProductNode::renameFile(const QString &filePath, const QString &newFileP
return false;
const qbs::GroupData grp = findMainQbsGroup(m_qbsProductData);
QTC_ASSERT(grp.isValid(), return false);
return prjNode->project()->renameFileInProduct(this, filePath, newFilePath, m_qbsProductData,
grp);
return prjNode->project()->renameFileInProduct(filePath, newFilePath, m_qbsProductData, grp);
}
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;
}
qbs::GroupData QbsProject::reRetrieveGroupData(const qbs::ProductData &oldProduct,
const qbs::GroupData &oldGroup)
{
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)
bool QbsProject::addFilesToProduct(const QStringList &filePaths,
const qbs::ProductData &productData,
const qbs::GroupData &groupData, QStringList *notAdded)
{
QTC_ASSERT(m_qbsProject.isValid(), return false);
QStringList allPaths = groupData.allFilePaths();
@@ -338,16 +320,15 @@ bool QbsProject::addFilesToProduct(QbsBaseProjectNode *node, const QStringList &
}
if (notAdded->count() != filePaths.count()) {
m_projectData = m_qbsProject.projectData();
QbsGroupNode::setupFiles(node, reRetrieveGroupData(productData, groupData),
allPaths, QFileInfo(productFilePath).absolutePath(), false);
rootProjectNode()->update();
emit fileListChanged();
}
return notAdded->isEmpty();
}
bool QbsProject::removeFilesFromProduct(QbsBaseProjectNode *node, const QStringList &filePaths,
const qbs::ProductData &productData, const qbs::GroupData &groupData,
bool QbsProject::removeFilesFromProduct(const QStringList &filePaths,
const qbs::ProductData &productData,
const qbs::GroupData &groupData,
QStringList *notRemoved)
{
QTC_ASSERT(m_qbsProject.isValid(), return false);
@@ -367,22 +348,20 @@ bool QbsProject::removeFilesFromProduct(QbsBaseProjectNode *node, const QStringL
}
if (notRemoved->count() != filePaths.count()) {
m_projectData = m_qbsProject.projectData();
QbsGroupNode::setupFiles(node, reRetrieveGroupData(productData, groupData), allPaths,
QFileInfo(productFilePath).absolutePath(), false);
rootProjectNode()->update();
emit fileListChanged();
}
return notRemoved->isEmpty();
}
bool QbsProject::renameFileInProduct(QbsBaseProjectNode *node, const QString &oldPath,
const QString &newPath, const qbs::ProductData &productData,
bool QbsProject::renameFileInProduct(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))
if (!removeFilesFromProduct(QStringList(oldPath), productData, groupData, &dummy))
return false;
qbs::ProductData newProductData;
foreach (const qbs::ProductData &p, m_projectData.allProducts()) {
@@ -403,7 +382,7 @@ bool QbsProject::renameFileInProduct(QbsBaseProjectNode *node, const QString &ol
if (!newGroupData.isValid())
return false;
return addFilesToProduct(node, QStringList() << newPath, newProductData, newGroupData, &dummy);
return addFilesToProduct(QStringList() << newPath, newProductData, newGroupData, &dummy);
}
void QbsProject::invalidate()

View File

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