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