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