forked from ExplosionEngine/Explosion
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathProjectHub.cpp
More file actions
79 lines (67 loc) · 2.35 KB
/
ProjectHub.cpp
File metadata and controls
79 lines (67 loc) · 2.35 KB
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
//
// Created by johnk on 2025/8/3.
//
#include <QFileDialog>
#include <Editor/Widget/ProjectHub.h>
#include <Editor/Widget/moc_ProjectHub.cpp>
#include <Core/Log.h>
#include <Core/EngineVersion.h>
#include <Core/Paths.h>
#include <Mirror/Mirror.h>
#include <Editor/Qt/JsonSerialization.h>
namespace Editor {
ProjectHubBackend::ProjectHubBackend(ProjectHub* parent)
: QObject(parent)
, recentProjectsFile(Core::Paths::EngineCacheDir() / "Editor" / "ProjectHub" / "RecentProjects.json")
, engineVersion(std::format("v{}.{}.{}", ENGINE_VERSION_MAJOR, ENGINE_VERSION_MINOR, ENGINE_VERSION_PATCH))
{
const Common::Path projectTemplatesRoot = Core::Paths::EngineResDir() / "Editor" / "ProjectTemplates";
(void) projectTemplatesRoot.Traverse([this](const Common::Path& inPath) -> bool {
if (inPath.IsFile()) {
return true;
}
projectTemplates.emplace_back(ProjectTemplateInfo { inPath.DirName(), inPath.String() });
return true;
});
if (recentProjectsFile.Exists()) {
Common::JsonDeserializeFromFile(recentProjectsFile.String(), recentProjects);
}
}
ProjectHubBackend::~ProjectHubBackend()
{
Common::JsonSerializeToFile(recentProjectsFile.String(), recentProjects);
}
void ProjectHubBackend::CreateProject() const
{
// TODO
LogInfo(ProjectHub, "ProjectHubBridge::CreateProject");
}
QString ProjectHubBackend::BrowseDirectory() const // NOLINT
{
return QFileDialog::getExistingDirectory(nullptr, "Select Project Directory", QDir::rootPath());
}
QString ProjectHubBackend::GetEngineVersion() const
{
return QString::fromStdString(engineVersion);
}
QJsonValue ProjectHubBackend::GetProjectTemplates() const
{
QJsonValue value;
QtJsonSerialize(value, projectTemplates);
return value;
}
QJsonValue ProjectHubBackend::GetRecentProjects() const
{
QJsonValue value;
QtJsonSerialize(value, recentProjects);
return value;
}
ProjectHub::ProjectHub(QWidget* inParent)
: WebWidget(inParent)
{
setFixedSize(800, 600);
Load("/project-hub");
backend = new ProjectHubBackend(this);
GetWebChannel()->registerObject("backend", backend);
}
} // namespace Editor