diff options
author | Sergey Shambir <sergey.shambir.auto@gmail.com> | 2013-03-27 10:32:28 +0400 |
---|---|---|
committer | Erik Verbruggen <erik.verbruggen@digia.com> | 2013-04-10 11:07:27 +0200 |
commit | 0609333e0287414a9007cbe71b0ab4b84ada20cb (patch) | |
tree | 01fd51755fb8a44e947371f210c28e2ce4d3644c /src/plugins/cpptools/cppprojectfile.cpp | |
parent | d61bc4fcec30c01586df9fc071e7b0dbf08da2b5 (diff) | |
download | qt-creator-0609333e0287414a9007cbe71b0ab4b84ada20cb.tar.gz |
CppTools: moved some logic to ProjectFile
Simplifies code and makes it independent from mimetype names.
Change-Id: Ib56a07654df4986b1916c517e3862e6c3a3dd720
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
Diffstat (limited to 'src/plugins/cpptools/cppprojectfile.cpp')
-rw-r--r-- | src/plugins/cpptools/cppprojectfile.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/plugins/cpptools/cppprojectfile.cpp b/src/plugins/cpptools/cppprojectfile.cpp index 331b183c18..a7e62a2905 100644 --- a/src/plugins/cpptools/cppprojectfile.cpp +++ b/src/plugins/cpptools/cppprojectfile.cpp @@ -48,6 +48,58 @@ ProjectFile::ProjectFile(const QString &file, Kind kind) { } +ProjectFile::Kind ProjectFile::classify(const QString &file) +{ + const Core::MimeDatabase *mimeDatabase = Core::ICore::mimeDatabase(); + const QFileInfo fi(file); + const Core::MimeType mimeType = mimeDatabase->findByFile(fi); + if (!mimeType) + return Unclassified; + const QString mt = mimeType.type(); + if (mt == QLatin1String(CppTools::Constants::C_SOURCE_MIMETYPE)) + return CSource; + if (mt == QLatin1String(CppTools::Constants::C_HEADER_MIMETYPE)) + return CHeader; + if (mt == QLatin1String(CppTools::Constants::CPP_SOURCE_MIMETYPE)) + return CXXSource; + if (mt == QLatin1String(CppTools::Constants::CPP_HEADER_MIMETYPE)) + return CXXHeader; + if (mt == QLatin1String(CppTools::Constants::OBJECTIVE_CPP_SOURCE_MIMETYPE)) + return ObjCXXSource; + return Unclassified; +} + +/// @return True if file is header or cannot be classified (i.e has no file extension) +bool ProjectFile::isHeader(ProjectFile::Kind kind) +{ + switch (kind) { + case ProjectFile::CHeader: + case ProjectFile::CXXHeader: + case ProjectFile::ObjCHeader: + case ProjectFile::ObjCXXHeader: + case ProjectFile::Unclassified: + return true; + default: + return false; + } +} + +/// @return True if file is correctly classified source +bool ProjectFile::isSource(ProjectFile::Kind kind) +{ + switch (kind) { + case ProjectFile::CSource: + case ProjectFile::CXXSource: + case ProjectFile::ObjCSource: + case ProjectFile::ObjCXXSource: + case ProjectFile::CudaSource: + case ProjectFile::OpenCLSource: + return true; + default: + return false; + } +} + ProjectFileAdder::ProjectFileAdder(QList<ProjectFile> &files) : m_files(files) { |