forked from qt-creator/qt-creator
CppTools: Clean up ProjectFile
Change-Id: I01212115566c6bf26268b66fef96d50b7e93b96c Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -208,7 +208,7 @@ class ProjectFilesModel : public QAbstractListModel
|
||||
Q_OBJECT
|
||||
public:
|
||||
ProjectFilesModel(QObject *parent);
|
||||
void configure(const QVector<ProjectFile> &files);
|
||||
void configure(const ProjectFiles &files);
|
||||
void clear();
|
||||
|
||||
enum Columns { FileKindColumn, FilePathColumn, ColumnCount };
|
||||
@@ -219,14 +219,14 @@ public:
|
||||
QVariant headerData(int section, Qt::Orientation orientation, int role) const;
|
||||
|
||||
private:
|
||||
QVector<ProjectFile> m_files;
|
||||
ProjectFiles m_files;
|
||||
};
|
||||
|
||||
ProjectFilesModel::ProjectFilesModel(QObject *parent) : QAbstractListModel(parent)
|
||||
{
|
||||
}
|
||||
|
||||
void ProjectFilesModel::configure(const QVector<ProjectFile> &files)
|
||||
void ProjectFilesModel::configure(const ProjectFiles &files)
|
||||
{
|
||||
emit layoutAboutToBeChanged();
|
||||
m_files = files;
|
||||
|
@@ -24,26 +24,25 @@
|
||||
****************************************************************************/
|
||||
|
||||
#include "cppprojectfile.h"
|
||||
|
||||
#include "cpptoolsconstants.h"
|
||||
|
||||
#include <coreplugin/icore.h>
|
||||
#include <utils/mimetypes/mimedatabase.h>
|
||||
#
|
||||
|
||||
#include <QDebug>
|
||||
|
||||
namespace CppTools {
|
||||
|
||||
ProjectFile::ProjectFile(const QString &file, Kind kind)
|
||||
: path(file)
|
||||
ProjectFile::ProjectFile(const QString &filePath, Kind kind)
|
||||
: path(filePath)
|
||||
, kind(kind)
|
||||
{
|
||||
}
|
||||
|
||||
ProjectFile::Kind ProjectFile::classify(const QString &file)
|
||||
ProjectFile::Kind ProjectFile::classify(const QString &filePath)
|
||||
{
|
||||
Utils::MimeDatabase mdb;
|
||||
const Utils::MimeType mimeType = mdb.mimeTypeForFile(file);
|
||||
const Utils::MimeType mimeType = mdb.mimeTypeForFile(filePath);
|
||||
if (!mimeType.isValid())
|
||||
return Unclassified;
|
||||
const QString mt = mimeType.name();
|
||||
@@ -66,7 +65,6 @@ ProjectFile::Kind ProjectFile::classify(const QString &file)
|
||||
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) {
|
||||
@@ -74,14 +72,13 @@ bool ProjectFile::isHeader(ProjectFile::Kind kind)
|
||||
case ProjectFile::CXXHeader:
|
||||
case ProjectFile::ObjCHeader:
|
||||
case ProjectFile::ObjCXXHeader:
|
||||
case ProjectFile::Unclassified:
|
||||
case ProjectFile::Unclassified: // no file extension, e.g. stl headers
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/// @return True if file is correctly classified source
|
||||
bool ProjectFile::isSource(ProjectFile::Kind kind)
|
||||
{
|
||||
switch (kind) {
|
||||
@@ -97,25 +94,31 @@ bool ProjectFile::isSource(ProjectFile::Kind kind)
|
||||
}
|
||||
}
|
||||
|
||||
QDebug operator<<(QDebug stream, const CppTools::ProjectFile &cxxFile)
|
||||
#define RETURN_TEXT_FOR_CASE(enumValue) case ProjectFile::enumValue: return #enumValue
|
||||
static const char *projectFileKindToText(ProjectFile::Kind kind)
|
||||
{
|
||||
const char *kind;
|
||||
switch (cxxFile.kind) {
|
||||
case CppTools::ProjectFile::CHeader: kind = "CHeader"; break;
|
||||
case CppTools::ProjectFile::CSource: kind = "CSource"; break;
|
||||
case CppTools::ProjectFile::CXXHeader: kind = "CXXHeader"; break;
|
||||
case CppTools::ProjectFile::CXXSource: kind = "CXXSource"; break;
|
||||
case CppTools::ProjectFile::ObjCHeader: kind = "ObjCHeader"; break;
|
||||
case CppTools::ProjectFile::ObjCSource: kind = "ObjCSource"; break;
|
||||
case CppTools::ProjectFile::ObjCXXHeader: kind = "ObjCXXHeader"; break;
|
||||
case CppTools::ProjectFile::ObjCXXSource: kind = "ObjCXXSource"; break;
|
||||
case CppTools::ProjectFile::CudaSource: kind = "CudaSource"; break;
|
||||
case CppTools::ProjectFile::OpenCLSource: kind = "OpenCLSource"; break;
|
||||
default: kind = "INVALID"; break;
|
||||
switch (kind) {
|
||||
RETURN_TEXT_FOR_CASE(Unclassified);
|
||||
RETURN_TEXT_FOR_CASE(CHeader);
|
||||
RETURN_TEXT_FOR_CASE(CSource);
|
||||
RETURN_TEXT_FOR_CASE(CXXHeader);
|
||||
RETURN_TEXT_FOR_CASE(CXXSource);
|
||||
RETURN_TEXT_FOR_CASE(ObjCHeader);
|
||||
RETURN_TEXT_FOR_CASE(ObjCSource);
|
||||
RETURN_TEXT_FOR_CASE(ObjCXXHeader);
|
||||
RETURN_TEXT_FOR_CASE(ObjCXXSource);
|
||||
RETURN_TEXT_FOR_CASE(CudaSource);
|
||||
RETURN_TEXT_FOR_CASE(OpenCLSource);
|
||||
}
|
||||
stream << cxxFile.path << QLatin1String(", ") << kind;
|
||||
|
||||
return "UnhandledProjectFileKind";
|
||||
}
|
||||
#undef RETURN_TEXT_FOR_CASE
|
||||
|
||||
QDebug operator<<(QDebug stream, const CppTools::ProjectFile &projectFile)
|
||||
{
|
||||
stream << projectFile.path << QLatin1String(", ") << projectFileKindToText(projectFile.kind);
|
||||
return stream;
|
||||
}
|
||||
|
||||
} // namespace CppTools
|
||||
|
||||
|
@@ -27,8 +27,6 @@
|
||||
|
||||
#include "cpptools_global.h"
|
||||
|
||||
#include <QHash>
|
||||
#include <QList>
|
||||
#include <QString>
|
||||
|
||||
namespace CppTools {
|
||||
@@ -36,32 +34,34 @@ namespace CppTools {
|
||||
class CPPTOOLS_EXPORT ProjectFile
|
||||
{
|
||||
public:
|
||||
// enums and types
|
||||
enum Kind {
|
||||
Unclassified = 0,
|
||||
CHeader = 1,
|
||||
CSource = 2,
|
||||
CXXHeader = 3,
|
||||
CXXSource = 4,
|
||||
ObjCHeader = 5,
|
||||
ObjCSource = 6,
|
||||
ObjCXXHeader = 7,
|
||||
ObjCXXSource = 8,
|
||||
CudaSource = 9,
|
||||
OpenCLSource = 10
|
||||
Unclassified,
|
||||
CHeader,
|
||||
CSource,
|
||||
CXXHeader,
|
||||
CXXSource,
|
||||
ObjCHeader,
|
||||
ObjCSource,
|
||||
ObjCXXHeader,
|
||||
ObjCXXSource,
|
||||
CudaSource,
|
||||
OpenCLSource,
|
||||
};
|
||||
|
||||
ProjectFile() = default;
|
||||
ProjectFile(const QString &file, Kind kind);
|
||||
|
||||
static Kind classify(const QString &file);
|
||||
static Kind classify(const QString &filePath);
|
||||
static bool isHeader(Kind kind);
|
||||
static bool isSource(Kind kind);
|
||||
|
||||
public:
|
||||
ProjectFile() = default;
|
||||
ProjectFile(const QString &filePath, Kind kind);
|
||||
|
||||
QString path;
|
||||
Kind kind = CHeader;
|
||||
Kind kind = Unclassified;
|
||||
};
|
||||
|
||||
QDebug operator<<(QDebug stream, const CppTools::ProjectFile &cxxFile);
|
||||
using ProjectFiles = QVector<ProjectFile>;
|
||||
|
||||
QDebug operator<<(QDebug stream, const CppTools::ProjectFile &projectFile);
|
||||
|
||||
} // namespace CppTools
|
||||
|
@@ -103,7 +103,7 @@ public: // fields
|
||||
QString displayName;
|
||||
QString projectFile;
|
||||
ProjectExplorer::Project *project;
|
||||
QVector<ProjectFile> files;
|
||||
ProjectFiles files;
|
||||
QString projectConfigFile; // currently only used by the Generic Project Manager
|
||||
QByteArray projectDefines;
|
||||
QByteArray toolchainDefines;
|
||||
|
@@ -74,7 +74,7 @@ void GenericProjectPlugin::test_simple()
|
||||
QCOMPARE(pPart->files.first().kind, ProjectFile::CXXSource);
|
||||
}
|
||||
|
||||
static QStringList simplify(const QVector<ProjectFile> &files, const QString &prefix)
|
||||
static QStringList simplify(const ProjectFiles &files, const QString &prefix)
|
||||
{
|
||||
QStringList result;
|
||||
|
||||
|
Reference in New Issue
Block a user