qmake: Move more code into anonymous namespace

Change-Id: I9178c29637ae76e57ba885de671d11418284c3e2
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Tobias Hunger
2017-02-09 16:07:21 +01:00
parent 48b7966d75
commit 574669d333

View File

@@ -82,10 +82,14 @@
using namespace Core; using namespace Core;
using namespace ProjectExplorer; using namespace ProjectExplorer;
using namespace Utils; using namespace QmakeProjectManager;
using namespace QmakeProjectManager::Internal;
using namespace QMakeInternal; using namespace QMakeInternal;
using namespace Utils;
// Static cached data in struct QmakeParserNodeStaticData providing information and icons namespace {
// Static cached data in struct QmakeStaticData providing information and icons
// for file types and the project. Do some magic via qAddPostRoutine() // for file types and the project. Do some magic via qAddPostRoutine()
// to make sure the icons do not outlive QApplication, triggering warnings on X11. // to make sure the icons do not outlive QApplication, triggering warnings on X11.
@@ -96,13 +100,13 @@ struct FileTypeDataStorage {
const char *addFileFilter; const char *addFileFilter;
}; };
static const FileTypeDataStorage fileTypeDataStorage[] = { const FileTypeDataStorage fileTypeDataStorage[] = {
{ FileType::Header, QT_TRANSLATE_NOOP("QmakeProjectManager::QmakeParserPriFileNode", "Headers"), { FileType::Header, QT_TRANSLATE_NOOP("QmakeProjectManager::QmakeParserPriFileNode", "Headers"),
ProjectExplorer::Constants::FILEOVERLAY_H, "*.h; *.hh; *.hpp; *.hxx;"}, ProjectExplorer::Constants::FILEOVERLAY_H, "*.h; *.hh; *.hpp; *.hxx;"},
{ FileType::Source, QT_TRANSLATE_NOOP("QmakeProjectManager::QmakeParserPriFileNode", "Sources"), { FileType::Source, QT_TRANSLATE_NOOP("QmakeProjectManager::QmakeParserPriFileNode", "Sources"),
ProjectExplorer::Constants::FILEOVERLAY_CPP, "*.c; *.cc; *.cpp; *.cp; *.cxx; *.c++;" }, ProjectExplorer::Constants::FILEOVERLAY_CPP, "*.c; *.cc; *.cpp; *.cp; *.cxx; *.c++;" },
{ FileType::Form, QT_TRANSLATE_NOOP("QmakeProjectManager::QmakeParserPriFileNode", "Forms"), { FileType::Form, QT_TRANSLATE_NOOP("QmakeProjectManager::QmakeParserPriFileNode", "Forms"),
Constants::FILEOVERLAY_UI, "*.ui;" }, ProjectExplorer::Constants::FILEOVERLAY_UI, "*.ui;" },
{ FileType::StateChart, QT_TRANSLATE_NOOP("QmakeProjectManager::QmakeParserPriFileNode", "State charts"), { FileType::StateChart, QT_TRANSLATE_NOOP("QmakeProjectManager::QmakeParserPriFileNode", "State charts"),
ProjectExplorer::Constants::FILEOVERLAY_SCXML, "*.scxml;" }, ProjectExplorer::Constants::FILEOVERLAY_SCXML, "*.scxml;" },
{ FileType::Resource, QT_TRANSLATE_NOOP("QmakeProjectManager::QmakeParserPriFileNode", "Resources"), { FileType::Resource, QT_TRANSLATE_NOOP("QmakeProjectManager::QmakeParserPriFileNode", "Resources"),
@@ -113,7 +117,7 @@ static const FileTypeDataStorage fileTypeDataStorage[] = {
ProjectExplorer::Constants::FILEOVERLAY_UNKNOWN, "*;" } ProjectExplorer::Constants::FILEOVERLAY_UNKNOWN, "*;" }
}; };
class QmakeParserNodeStaticData { class QmakeStaticData {
public: public:
class FileTypeData { class FileTypeData {
public: public:
@@ -129,15 +133,15 @@ public:
QIcon icon; QIcon icon;
}; };
QmakeParserNodeStaticData(); QmakeStaticData();
QVector<FileTypeData> fileTypeData; QVector<FileTypeData> fileTypeData;
QIcon projectIcon; QIcon projectIcon;
}; };
static void clearQmakeParserNodeStaticData(); void clearQmakeStaticData();
QmakeParserNodeStaticData::QmakeParserNodeStaticData() QmakeStaticData::QmakeStaticData()
{ {
// File type data // File type data
const unsigned count = sizeof(fileTypeDataStorage)/sizeof(FileTypeDataStorage); const unsigned count = sizeof(fileTypeDataStorage)/sizeof(FileTypeDataStorage);
@@ -153,7 +157,7 @@ QmakeParserNodeStaticData::QmakeParserNodeStaticData()
folderIcon.addPixmap(FileIconProvider::overlayIcon(dirPixmap, overlayIcon)); folderIcon.addPixmap(FileIconProvider::overlayIcon(dirPixmap, overlayIcon));
const QString desc = QCoreApplication::translate("QmakeProjectManager::QmakeParserPriFileNode", fileTypeDataStorage[i].typeName); const QString desc = QCoreApplication::translate("QmakeProjectManager::QmakeParserPriFileNode", fileTypeDataStorage[i].typeName);
const QString filter = QString::fromUtf8(fileTypeDataStorage[i].addFileFilter); const QString filter = QString::fromUtf8(fileTypeDataStorage[i].addFileFilter);
fileTypeData.push_back(QmakeParserNodeStaticData::FileTypeData(fileTypeDataStorage[i].type, fileTypeData.push_back(QmakeStaticData::FileTypeData(fileTypeDataStorage[i].type,
desc, filter, folderIcon)); desc, filter, folderIcon));
} }
// Project icon // Project icon
@@ -161,19 +165,49 @@ QmakeParserNodeStaticData::QmakeParserNodeStaticData()
const QPixmap projectPixmap = FileIconProvider::overlayIcon(dirPixmap, projectBaseIcon); const QPixmap projectPixmap = FileIconProvider::overlayIcon(dirPixmap, projectBaseIcon);
projectIcon.addPixmap(projectPixmap); projectIcon.addPixmap(projectPixmap);
qAddPostRoutine(clearQmakeParserNodeStaticData); qAddPostRoutine(clearQmakeStaticData);
} }
Q_GLOBAL_STATIC(QmakeParserNodeStaticData, qmakeParserNodeStaticData) Q_GLOBAL_STATIC(QmakeStaticData, qmakeStaticData)
static void clearQmakeParserNodeStaticData() void clearQmakeStaticData()
{ {
qmakeParserNodeStaticData()->fileTypeData.clear(); qmakeStaticData()->fileTypeData.clear();
qmakeParserNodeStaticData()->projectIcon = QIcon(); qmakeStaticData()->projectIcon = QIcon();
} }
using namespace QmakeProjectManager; class QmakePriFileDocument : public Core::IDocument
using namespace QmakeProjectManager::Internal; {
public:
QmakePriFileDocument(QmakeParserPriFileNode *qmakePriFile, const Utils::FileName &filePath) :
IDocument(nullptr), m_priFile(qmakePriFile)
{
setId("Qmake.PriFile");
setMimeType(QLatin1String(QmakeProjectManager::Constants::PROFILE_MIMETYPE));
setFilePath(filePath);
}
ReloadBehavior reloadBehavior(ChangeTrigger state, ChangeType type) const override
{
Q_UNUSED(state)
Q_UNUSED(type)
return BehaviorSilent;
}
bool reload(QString *errorString, ReloadFlag flag, ChangeType type) override
{
Q_UNUSED(errorString)
Q_UNUSED(flag)
if (type == TypePermissions)
return true;
m_priFile->scheduleUpdate();
return true;
}
private:
QmakeParserPriFileNode *m_priFile;
};
} // namespace
namespace QmakeProjectManager { namespace QmakeProjectManager {
@@ -233,38 +267,7 @@ public:
QStringList errors; QStringList errors;
}; };
class QmakePriFileDocument : public Core::IDocument } // namespace Internal
{
public:
QmakePriFileDocument(QmakeParserPriFileNode *qmakePriFile, const Utils::FileName &filePath) :
IDocument(nullptr), m_priFile(qmakePriFile)
{
setId("Qmake.PriFile");
setMimeType(QLatin1String(QmakeProjectManager::Constants::PROFILE_MIMETYPE));
setFilePath(filePath);
}
ReloadBehavior reloadBehavior(ChangeTrigger state, ChangeType type) const override
{
Q_UNUSED(state)
Q_UNUSED(type)
return BehaviorSilent;
}
bool reload(QString *errorString, ReloadFlag flag, ChangeType type) override
{
Q_UNUSED(errorString)
Q_UNUSED(flag)
if (type == TypePermissions)
return true;
m_priFile->scheduleUpdate();
return true;
}
private:
QmakeParserPriFileNode *m_priFile;
};
} // Internal
/*! /*!
\class QmakeParserPriFileNode \class QmakeParserPriFileNode
@@ -283,7 +286,7 @@ QmakeParserPriFileNode::QmakeParserPriFileNode(QmakeProject *project,
Core::DocumentManager::addDocument(m_priFileDocument.get()); Core::DocumentManager::addDocument(m_priFileDocument.get());
setDisplayName(filePath.toFileInfo().completeBaseName()); setDisplayName(filePath.toFileInfo().completeBaseName());
setIcon(qmakeParserNodeStaticData()->projectIcon); setIcon(qmakeStaticData()->projectIcon);
} }
FileName QmakeParserPriFileNode::filePath() const FileName QmakeParserPriFileNode::filePath() const
@@ -409,7 +412,7 @@ void QmakeParserPriFileNode::processValues(QmakePriFileEvalResult &result)
foreach (const QString &folder, result.folders) foreach (const QString &folder, result.folders)
result.recursiveEnumerateFiles += recursiveEnumerate(folder); result.recursiveEnumerateFiles += recursiveEnumerate(folder);
const QVector<QmakeParserNodeStaticData::FileTypeData> &fileTypes = qmakeParserNodeStaticData()->fileTypeData; const QVector<QmakeStaticData::FileTypeData> &fileTypes = qmakeStaticData()->fileTypeData;
for (int i = 0; i < fileTypes.size(); ++i) { for (int i = 0; i < fileTypes.size(); ++i) {
FileType type = fileTypes.at(i).type; FileType type = fileTypes.at(i).type;
QSet<FileName> &foundFiles = result.foundFiles[type]; QSet<FileName> &foundFiles = result.foundFiles[type];
@@ -429,7 +432,7 @@ void QmakeParserPriFileNode::update(const Internal::QmakePriFileEvalResult &resu
m_recursiveEnumerateFiles = result.recursiveEnumerateFiles; m_recursiveEnumerateFiles = result.recursiveEnumerateFiles;
watchFolders(result.folders.toSet()); watchFolders(result.folders.toSet());
const QVector<QmakeParserNodeStaticData::FileTypeData> &fileTypes = qmakeParserNodeStaticData()->fileTypeData; const QVector<QmakeStaticData::FileTypeData> &fileTypes = qmakeStaticData()->fileTypeData;
for (int i = 0; i < fileTypes.size(); ++i) { for (int i = 0; i < fileTypes.size(); ++i) {
const FileType type = fileTypes.at(i).type; const FileType type = fileTypes.at(i).type;
m_files[type] = result.foundFiles.value(type); m_files[type] = result.foundFiles.value(type);
@@ -475,7 +478,7 @@ bool QmakeParserPriFileNode::folderChanged(const QString &changedFolder, const Q
m_recursiveEnumerateFiles = newFiles; m_recursiveEnumerateFiles = newFiles;
// Apply the differences per file type // Apply the differences per file type
const QVector<QmakeParserNodeStaticData::FileTypeData> &fileTypes = qmakeParserNodeStaticData()->fileTypeData; const QVector<QmakeStaticData::FileTypeData> &fileTypes = qmakeStaticData()->fileTypeData;
for (int i = 0; i < fileTypes.size(); ++i) { for (int i = 0; i < fileTypes.size(); ++i) {
FileType type = fileTypes.at(i).type; FileType type = fileTypes.at(i).type;
QSet<FileName> add = filterFilesRecursiveEnumerata(type, addedFiles); QSet<FileName> add = filterFilesRecursiveEnumerata(type, addedFiles);