1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
|
/*
SPDX-FileCopyrightText: 2010 Niko Sams <niko.sams@gmail.com>
SPDX-FileCopyrightText: 2012 Milian Wolff <mail@milianw.de>
SPDX-License-Identifier: LGPL-2.0-or-later
*/
#include "testproject.h"
#include <project/projectmodel.h>
#include <interfaces/icore.h>
#include <QDir>
using namespace KDevelop;
TestProject::TestProject(const Path& path, QObject* parent)
: IProject(parent)
, m_projectConfiguration(KSharedConfig::openConfig())
{
m_path = path.isValid() ? path : Path(QDir::tempPath() + QLatin1String("/kdev-testproject/"));
m_root = new ProjectFolderItem(this, m_path);
ICore::self()->projectController()->projectModel()->appendRow(m_root);
}
void TestProject::setPath(const Path& path)
{
m_path = path;
if (m_root) {
m_root->setPath(path);
}
}
TestProject::~TestProject()
{
if (m_root) {
delete m_root;
}
}
ProjectFolderItem* TestProject::projectItem() const
{
return m_root;
}
void TestProject::setProjectItem(ProjectFolderItem* item)
{
if (m_root) {
ICore::self()->projectController()->projectModel()->removeRow(m_root->row());
m_root = nullptr;
m_path = Path{};
}
if (item) {
m_root = item;
m_path = item->path();
ICore::self()->projectController()->projectModel()->appendRow(m_root);
}
}
Path TestProject::projectFile() const
{
return Path(m_path, m_path.lastPathSegment() + QLatin1String(".kdev4"));
}
Path TestProject::path() const
{
return m_path;
}
bool TestProject::inProject(const IndexedString& path) const
{
return m_path.isParentOf(Path(path.str()));
}
void findFileItems(ProjectBaseItem* root, QList<ProjectFileItem*>& items, const Path& path = {})
{
const auto children = root->children();
for (ProjectBaseItem* item : children) {
if (item->file() && (path.isEmpty() || item->path() == path)) {
items << item->file();
}
if (item->rowCount()) {
findFileItems(item, items, path);
}
}
}
QList<ProjectFileItem*> TestProject::files() const
{
QList<ProjectFileItem*> ret;
findFileItems(m_root, ret);
return ret;
}
QList<ProjectFileItem*> TestProject::filesForPath(const IndexedString& path) const
{
QList<ProjectFileItem*> ret;
findFileItems(m_root, ret, Path(path.toUrl()));
return ret;
}
void TestProject::addToFileSet(ProjectFileItem* file)
{
if (!m_fileSet.contains(file->indexedPath())) {
m_fileSet.insert(file->indexedPath());
emit fileAddedToSet(file);
}
}
void TestProject::removeFromFileSet(ProjectFileItem* file)
{
if (m_fileSet.remove(file->indexedPath())) {
emit fileRemovedFromSet(file);
}
}
void TestProjectController::initialize()
{
}
|