diff options
author | Sergey Shambir <sergey.shambir.auto@gmail.com> | 2013-03-04 01:30:46 +0400 |
---|---|---|
committer | Sergey Shambir <sergey.shambir.auto@gmail.com> | 2013-03-21 17:22:18 +0100 |
commit | 63fe568b9b36de9a3ddd72da45ef193d7471224f (patch) | |
tree | b380436f34355a263d841c1190d4750f6c2de970 /src/plugins/genericprojectmanager | |
parent | 0c417bbb8e6c34e2dbc594dca70f607dd3dc5c82 (diff) | |
download | qt-creator-63fe568b9b36de9a3ddd72da45ef193d7471224f.tar.gz |
CppTools: improved languages support in ProjectPart
Please, read blueprint here:
http://qt-project.org/wiki/Blueprint-for-language-specs-system
Removed feature from QbsProjectManager: it not longer splits project on
separate C and C++ parts, because Qt version used only by clang parser
(not native) and can be ignored for pure C and Objective-C without C++.
Change-Id: I1c561f7f9f915cc6cb8579d19db74e8352f54c1e
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
Diffstat (limited to 'src/plugins/genericprojectmanager')
-rw-r--r-- | src/plugins/genericprojectmanager/genericproject.cpp | 46 |
1 files changed, 9 insertions, 37 deletions
diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index 91ad80d74c..7fd885eb4d 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -59,27 +59,6 @@ using namespace ProjectExplorer; namespace GenericProjectManager { namespace Internal { -static QList<Core::MimeType> cppMimeTypes() -{ - QStringList mimeTypesNames; - mimeTypesNames << QLatin1String(CppTools::Constants::C_SOURCE_MIMETYPE) - << QLatin1String(CppTools::Constants::C_HEADER_MIMETYPE) - << QLatin1String(CppTools::Constants::CPP_SOURCE_MIMETYPE) - << QLatin1String(CppTools::Constants::OBJECTIVE_CPP_SOURCE_MIMETYPE) - << QLatin1String(CppTools::Constants::CPP_HEADER_MIMETYPE); - - QList<Core::MimeType> mimeTypes; - - const Core::MimeDatabase *mimeDatabase = Core::ICore::mimeDatabase(); - foreach (const QString &typeName, mimeTypesNames) { - Core::MimeType mimeType = mimeDatabase->findByType(typeName); - if (!mimeType.isNull()) - mimeTypes.append(mimeType); - } - - return mimeTypes; -} - //////////////////////////////////////////////////////////////////////////////////// // // GenericProject @@ -267,8 +246,7 @@ void GenericProject::refresh(RefreshOptions options) if (modelManager) { CPlusPlus::CppModelManagerInterface::ProjectInfo pinfo = modelManager->projectInfo(this); pinfo.clearProjectParts(); - CPlusPlus::CppModelManagerInterface::ProjectPart::Ptr part( - new CPlusPlus::CppModelManagerInterface::ProjectPart); + CPlusPlus::ProjectPart::Ptr part(new CPlusPlus::ProjectPart); Kit *k = activeTarget() ? activeTarget()->kit() : KitManager::instance()->defaultKit(); if (ToolChain *tc = ToolChainKitInformation::toolChain(k)) { @@ -290,29 +268,23 @@ void GenericProject::refresh(RefreshOptions options) // ### add _defines. // Add any C/C++ files to be parsed - const QList<Core::MimeType> mimeTypes = cppMimeTypes(); - QFileInfo fileInfo; - - foreach (const QString &file, files()) { - fileInfo.setFile(file); - foreach (const Core::MimeType &mimeType, mimeTypes) { - if (mimeType.matchesFile(fileInfo)) { - part->sourceFiles += file; - break; - } - } - } + CPlusPlus::ProjectFileAdder adder(part->files); + foreach (const QString &file, files()) + adder.maybeAdd(file); QStringList filesToUpdate; if (options & Configuration) { - filesToUpdate = part->sourceFiles; + foreach (const CPlusPlus::ProjectFile &file, part->files) + filesToUpdate << file.path; filesToUpdate.append(CPlusPlus::CppModelManagerInterface::configurationFileName()); // Full update, if there's a code model update, cancel it m_codeModelFuture.cancel(); } else if (options & Files) { // Only update files that got added to the list - QSet<QString> newFileList = part->sourceFiles.toSet(); + QSet<QString> newFileList; + foreach (const CPlusPlus::ProjectFile &file, part->files) + newFileList.insert(file.path); newFileList.subtract(oldFileList); filesToUpdate.append(newFileList.toList()); } |