diff options
Diffstat (limited to 'core/src/Model/GlobalStates.cpp')
-rw-r--r-- | core/src/Model/GlobalStates.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/core/src/Model/GlobalStates.cpp b/core/src/Model/GlobalStates.cpp index 2230367..a449afb 100644 --- a/core/src/Model/GlobalStates.cpp +++ b/core/src/Model/GlobalStates.cpp @@ -56,6 +56,9 @@ void GlobalStates::Init(std::filesystem::path userDataDir) void GlobalStates::Shutdown() { if (!globalStateInstance) return; + + globalStateInstance->SetCurrentProject(nullptr); + if (globalStateInstance->mDirty) { globalStateInstance->WriteToDisk(); } @@ -111,6 +114,28 @@ void GlobalStates::RemoveRecentProject(int idx) MarkDirty(); } +bool GlobalStates::HasCurrentProject() const +{ + return mCurrentProject != nullptr; +} + +Project* GlobalStates::GetCurrentProject() const +{ + return mCurrentProject.get(); +} + +void GlobalStates::SetCurrentProject(std::unique_ptr<Project> project) +{ + if (mCurrentProject) { + mCurrentProject->WriteToDisk(); + mCurrentProject = nullptr; + } + if (project) { + MoveProjectToTop(*project); + } + mCurrentProject = std::move(project); +} + void GlobalStates::WriteToDisk() const { Json::Value root; |