summaryrefslogtreecommitdiff
path: root/src/plugins/genericprojectmanager
diff options
context:
space:
mode:
authorSergey Shambir <sergey.shambir.auto@gmail.com>2013-03-04 01:30:46 +0400
committerSergey Shambir <sergey.shambir.auto@gmail.com>2013-03-21 17:22:18 +0100
commit63fe568b9b36de9a3ddd72da45ef193d7471224f (patch)
treeb380436f34355a263d841c1190d4750f6c2de970 /src/plugins/genericprojectmanager
parent0c417bbb8e6c34e2dbc594dca70f607dd3dc5c82 (diff)
downloadqt-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.cpp46
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());
}