From eaaf9522c67bc3b85805ed23bc22f624b953d342 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Thu, 9 Feb 2017 15:35:19 +0100 Subject: [PATCH] qmake: remove some unnecessary members from QmakeParserPriFileNode Replace them with member functions providing the same information. Change-Id: If65bb99c77df0f80562b4559914f4b81ab17a166 Reviewed-by: Tim Jenssen Reviewed-by: Oswald Buddenhagen --- .../qmakeprojectmanager/qmakeparsernodes.cpp | 74 ++++++++++--------- .../qmakeprojectmanager/qmakeparsernodes.h | 9 ++- 2 files changed, 46 insertions(+), 37 deletions(-) diff --git a/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp b/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp index b6d39257591..b2ce3e52623 100644 --- a/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp @@ -235,12 +235,12 @@ public: class QmakePriFileDocument : public Core::IDocument { public: - QmakePriFileDocument(QmakeParserPriFileNode *qmakePriFile) - : IDocument(nullptr), m_priFile(qmakePriFile) + QmakePriFileDocument(QmakeParserPriFileNode *qmakePriFile, const Utils::FileName &filePath) : + IDocument(nullptr), m_priFile(qmakePriFile) { setId("Qmake.PriFile"); setMimeType(QLatin1String(QmakeProjectManager::Constants::PROFILE_MIMETYPE)); - setFilePath(m_priFile->filePath()); + setFilePath(filePath); } ReloadBehavior reloadBehavior(ChangeTrigger state, ChangeType type) const override @@ -455,18 +455,26 @@ QmakeParserPriFileNode::QmakeParserPriFileNode(QmakeProject *project, const FileName &filePath) : ProjectNode(filePath), m_project(project), - m_qmakeProFileNode(qmakeProFileNode), - m_projectFilePath(filePath), - m_projectDir(filePath.toFileInfo().absolutePath()) + m_qmakeProFileNode(qmakeProFileNode) { Q_ASSERT(project); - m_priFileDocument = std::make_unique(this); + m_priFileDocument = std::make_unique(this, filePath); Core::DocumentManager::addDocument(m_priFileDocument.get()); setDisplayName(filePath.toFileInfo().completeBaseName()); setIcon(qmakeParserNodeStaticData()->projectIcon); } +FileName QmakeParserPriFileNode::filePath() const +{ + return m_priFileDocument->filePath(); +} + +FileName QmakeParserPriFileNode::directoryPath() const +{ + return filePath().parentDir(); +} + QmakeParserPriFileNode::~QmakeParserPriFileNode() { watchFolders(QSet()); @@ -474,7 +482,7 @@ QmakeParserPriFileNode::~QmakeParserPriFileNode() void QmakeParserPriFileNode::scheduleUpdate() { - QtSupport::ProFileCacheManager::instance()->discardFile(m_projectFilePath.toString()); + QtSupport::ProFileCacheManager::instance()->discardFile(filePath().toString()); m_qmakeProFileNode->scheduleUpdate(QmakeParserProFileNode::ParseLater); } @@ -595,7 +603,7 @@ void QmakeParserPriFileNode::update(const Internal::QmakePriFileEvalResult &resu { // add project file node if (fileNodes().isEmpty()) - addNode(new FileNode(m_projectFilePath, FileType::Project, false)); + addNode(new FileNode(filePath(), FileType::Project, false)); m_recursiveEnumerateFiles = result.recursiveEnumerateFiles; watchFolders(result.folders.toSet()); @@ -616,14 +624,14 @@ void QmakeParserPriFileNode::update(const Internal::QmakePriFileEvalResult &resu InternalParserNode *subfolder = new InternalParserNode; subfolder->type = type; subfolder->icon = fileTypes.at(i).icon; - subfolder->fullPath = m_projectDir; + subfolder->fullPath = directoryPath().toString(); subfolder->typeName = fileTypes.at(i).typeName; subfolder->addFileFilter = fileTypes.at(i).addFileFilter; subfolder->priority = Node::DefaultVirtualFolderPriority - i; subfolder->displayName = fileTypes.at(i).typeName; contents.virtualfolders.append(subfolder); // create the hierarchy with subdirectories - subfolder->create(m_projectDir, newFilePaths, type); + subfolder->create(directoryPath().toString(), newFilePaths, type); } } @@ -696,13 +704,13 @@ bool QmakeParserPriFileNode::folderChanged(const QString &changedFolder, const Q InternalParserNode *subfolder = new InternalParserNode; subfolder->type = type; subfolder->icon = fileTypes.at(i).icon; - subfolder->fullPath = m_projectDir; + subfolder->fullPath = directoryPath().toString(); subfolder->typeName = fileTypes.at(i).typeName; subfolder->priority = Node::DefaultVirtualFolderPriority - i; subfolder->displayName = fileTypes.at(i).typeName; contents.virtualfolders.append(subfolder); // create the hierarchy with subdirectories - subfolder->create(m_projectDir, m_files[type], type); + subfolder->create(directoryPath().toString(), m_files[type], type); } } @@ -1005,7 +1013,7 @@ bool QmakeParserPriFileNode::priFileWritable(const QString &path) bool QmakeParserPriFileNode::saveModifiedEditors() { Core::IDocument *document - = Core::DocumentModel::documentForFilePath(m_projectFilePath.toString()); + = Core::DocumentModel::documentForFilePath(filePath().toString()); if (!document || !document->isModified()) return true; @@ -1013,8 +1021,8 @@ bool QmakeParserPriFileNode::saveModifiedEditors() return false; // force instant reload of ourselves - QtSupport::ProFileCacheManager::instance()->discardFile(m_projectFilePath.toString()); - m_project->projectManager()->notifyChanged(m_projectFilePath); + QtSupport::ProFileCacheManager::instance()->discardFile(filePath().toString()); + m_project->projectManager()->notifyChanged(filePath()); return true; } @@ -1100,7 +1108,7 @@ QPair QmakeParserPriFileNode::readProFile(const QString bool QmakeParserPriFileNode::prepareForChange() { - return saveModifiedEditors() && ensureWriteableProFile(m_projectFilePath.toString()); + return saveModifiedEditors() && ensureWriteableProFile(filePath().toString()); } bool QmakeParserPriFileNode::renameFile(const QString &oldName, @@ -1111,14 +1119,14 @@ bool QmakeParserPriFileNode::renameFile(const QString &oldName, if (!prepareForChange()) return false; - QPair pair = readProFile(m_projectFilePath.toString()); + QPair pair = readProFile(filePath().toString()); ProFile *includeFile = pair.first; QStringList lines = pair.second; if (!includeFile) return false; - QDir priFileDir = QDir(m_qmakeProFileNode->m_projectDir); + QDir priFileDir = QDir(m_qmakeProFileNode->directoryPath().toString()); QStringList notChanged = ProWriter::removeFiles(includeFile, &lines, priFileDir, QStringList(oldName), varNamesForRemoving()); @@ -1130,7 +1138,7 @@ bool QmakeParserPriFileNode::renameFile(const QString &oldName, QMakeParser parser(0, 0, 0); QString contents = lines.join(QLatin1Char('\n')); includeFile = parser.parsedProBlock(QStringRef(&contents), - m_projectFilePath.toString(), 1, QMakeParser::FullGrammar); + filePath().toString(), 1, QMakeParser::FullGrammar); QTC_ASSERT(includeFile, return false); // The file should still be valid after what we did. ProWriter::addFiles(includeFile, &lines, @@ -1156,7 +1164,7 @@ void QmakeParserPriFileNode::changeFiles(const QString &mimeType, if (!prepareForChange()) return; - QPair pair = readProFile(m_projectFilePath.toString()); + QPair pair = readProFile(filePath().toString()); ProFile *includeFile = pair.first; QStringList lines = pair.second; @@ -1168,7 +1176,7 @@ void QmakeParserPriFileNode::changeFiles(const QString &mimeType, ProWriter::addFiles(includeFile, &lines, filePaths, varNameForAdding(mimeType)); notChanged->clear(); } else { // RemoveFromProFile - QDir priFileDir = QDir(m_qmakeProFileNode->m_projectDir); + QDir priFileDir = QDir(m_qmakeProFileNode->directoryPath().toString()); *notChanged = ProWriter::removeFiles(includeFile, &lines, priFileDir, filePaths, varNamesForRemoving()); } @@ -1183,7 +1191,7 @@ bool QmakeParserPriFileNode::setProVariable(const QString &var, const QStringLis if (!prepareForChange()) return false; - QPair pair = readProFile(m_projectFilePath.toString()); + QPair pair = readProFile(filePath().toString()); ProFile *includeFile = pair.first; QStringList lines = pair.second; @@ -1202,8 +1210,8 @@ bool QmakeParserPriFileNode::setProVariable(const QString &var, const QStringLis void QmakeParserPriFileNode::save(const QStringList &lines) { { - FileChangeBlocker changeGuard(m_projectFilePath.toString()); - FileSaver saver(m_projectFilePath.toString(), QIODevice::Text); + FileChangeBlocker changeGuard(filePath().toString()); + FileSaver saver(filePath().toString(), QIODevice::Text); const QTextCodec *codec = Core::EditorManager::defaultTextCodec(); saver.write(codec->fromUnicode(lines.join(QLatin1Char('\n')))); saver.finalize(Core::ICore::mainWindow()); @@ -1215,7 +1223,7 @@ void QmakeParserPriFileNode::save(const QStringList &lines) // We manually tell each editor to reload it's file. // (The .pro files are notified by the file system watcher.) QStringList errorStrings; - Core::IDocument *document = Core::DocumentModel::documentForFilePath(m_projectFilePath.toString()); + Core::IDocument *document = Core::DocumentModel::documentForFilePath(filePath().toString()); if (document) { QString errorString; if (!document->reload(&errorString, Core::IDocument::FlagReload, Core::IDocument::TypeContents)) @@ -1609,8 +1617,8 @@ void QmakeParserProFileNode::asyncUpdate() QmakeEvalInput QmakeParserProFileNode::evalInput() const { QmakeEvalInput input; - input.projectDir = m_projectDir; - input.projectFilePath = m_projectFilePath; + input.projectDir = directoryPath().toString(); + input.projectFilePath = filePath(); input.buildDirectory = buildDir(); input.sysroot = m_project->qmakeSysroot(); input.readerExact = m_readerExact; @@ -1921,7 +1929,7 @@ void QmakeParserProFileNode::applyEvaluate(QmakeEvalResult *evalResult) if (result->state == QmakeEvalResult::EvalFail) { QmakeProject::proFileParseError(QCoreApplication::translate("QmakeParserProFileNode", "Error while parsing file %1. Giving up.") - .arg(m_projectFilePath.toUserOutput())); + .arg(filePath().toUserOutput())); if (m_projectType == ProjectType::Invalid) return; @@ -1933,7 +1941,7 @@ void QmakeParserProFileNode::applyEvaluate(QmakeEvalResult *evalResult) } if (debug) - qDebug() << "QmakeParserProFileNode - updating files for file " << m_projectFilePath; + qDebug() << "QmakeParserProFileNode - updating files for file " << filePath(); if (result->projectType != m_projectType) { // probably all subfiles/projects have changed anyway @@ -2014,7 +2022,7 @@ void QmakeParserProFileNode::applyEvaluate(QmakeEvalResult *evalResult) const QString projectName = singleVariableValue(Variable::QmakeProjectName); if (projectName.isEmpty()) - setDisplayName(m_projectFilePath.toFileInfo().completeBaseName()); + setDisplayName(filePath().toFileInfo().completeBaseName()); else setDisplayName(projectName); } // result == EvalOk @@ -2247,13 +2255,13 @@ InstallsParserList QmakeParserProFileNode::installsList() const QString QmakeParserProFileNode::sourceDir() const { - return m_projectDir; + return directoryPath().toString(); } QString QmakeParserProFileNode::buildDir(QmakeBuildConfiguration *bc) const { const QDir srcDirRoot = m_project->rootProjectNode()->sourceDir(); - const QString relativeDir = srcDirRoot.relativeFilePath(m_projectDir); + const QString relativeDir = srcDirRoot.relativeFilePath(directoryPath().toString()); if (!bc && m_project->activeTarget()) bc = static_cast(m_project->activeTarget()->activeBuildConfiguration()); if (!bc) diff --git a/src/plugins/qmakeprojectmanager/qmakeparsernodes.h b/src/plugins/qmakeprojectmanager/qmakeparsernodes.h index 7142bfa7f0c..d094d88e4dd 100644 --- a/src/plugins/qmakeprojectmanager/qmakeparsernodes.h +++ b/src/plugins/qmakeprojectmanager/qmakeparsernodes.h @@ -117,6 +117,9 @@ public: QmakeParserPriFileNode(QmakeProject *project, QmakeParserProFileNode *qmakeProFileNode, const Utils::FileName &filePath); ~QmakeParserPriFileNode() override; + Utils::FileName filePath() const; + Utils::FileName directoryPath() const; + void update(const Internal::QmakePriFileEvalResult &result); // ProjectNode interface @@ -202,10 +205,8 @@ private: static void processValues(Internal::QmakePriFileEvalResult &result); void watchFolders(const QSet &folders); - QmakeProject *m_project; - QmakeParserProFileNode *m_qmakeProFileNode; - Utils::FileName m_projectFilePath; - QString m_projectDir; + QmakeProject *m_project = nullptr; + QmakeParserProFileNode *m_qmakeProFileNode = nullptr; std::unique_ptr m_priFileDocument;