47class TranslationUnitModel :
public QStandardItemModel {
51 explicit TranslationUnitModel(
FileManager &fileManager, QObject *parent =
nullptr);
52 ~TranslationUnitModel()
override =
default;
54 bool hasChildren(
const QModelIndex &parent = QModelIndex())
const override;
55 bool canFetchMore(
const QModelIndex &parent)
const override;
56 void fetchMore(
const QModelIndex &parent)
override;
67 const QString &overrideProjectRoot = QString(),
68 const QString &compilationDbPath = QString());
84 QModelIndex findIndexByAnyFilePath(
const QString &filePath)
const;
85 QModelIndex findIndexByAnyFilePathUnder(
const QString &filePath,
86 const QModelIndex &root)
const;
104 QString computeProjectRoot(
const QStringList &sourceFilePaths)
const;
110 QString computeProjectRootSmart(
const QStringList &sourceFilePaths,
111 const QString &compilationDbPath)
const;
118 void buildDirectoryTree(QStandardItem *parent,
const QStringList &filePaths,
119 const QString &rootPath,
120 const QHash<QString, QJsonObject> *fileDataMap);
127 void addHeaderCategory(QStandardItem *parent,
const QString &categoryName,
128 const QStringList &headers,
const QString &rootPath);
130 void populateHeadersForSourceItem(QStandardItem *sourceItem);
133 QString projectRoot_;
134 QHash<QString, QStandardItem *> sourceItemByPath_;