diff options
Diffstat (limited to 'core/src/Model/GlobalStates.cpp')
-rw-r--r-- | core/src/Model/GlobalStates.cpp | 39 |
1 files changed, 26 insertions, 13 deletions
diff --git a/core/src/Model/GlobalStates.cpp b/core/src/Model/GlobalStates.cpp index 0c4e58e..4004f4a 100644 --- a/core/src/Model/GlobalStates.cpp +++ b/core/src/Model/GlobalStates.cpp @@ -16,11 +16,13 @@ namespace fs = std::filesystem; static std::unique_ptr<GlobalStates> globalStateInstance; static fs::path globalDataPath; -void GlobalStates::Init() { +void GlobalStates::Init() +{ Init(StandardDirectories::UserData() / "cplt"); } -void GlobalStates::Init(std::filesystem::path userDataDir) { +void GlobalStates::Init(std::filesystem::path userDataDir) +{ globalStateInstance = std::make_unique<GlobalStates>(); globalDataPath = userDataDir; fs::create_directories(globalDataPath); @@ -51,31 +53,37 @@ void GlobalStates::Init(std::filesystem::path userDataDir) { }(); } -void GlobalStates::Shutdown() { +void GlobalStates::Shutdown() +{ if (!globalStateInstance) return; if (globalStateInstance->mDirty) { globalStateInstance->WriteToDisk(); } } -GlobalStates& GlobalStates::GetInstance() { +GlobalStates& GlobalStates::GetInstance() +{ return *globalStateInstance; } -const std::filesystem::path& GlobalStates::GetUserDataPath() { +const std::filesystem::path& GlobalStates::GetUserDataPath() +{ return globalDataPath; } -const std::vector<GlobalStates::RecentProject>& GlobalStates::GetRecentProjects() const { +const std::vector<GlobalStates::RecentProject>& GlobalStates::GetRecentProjects() const +{ return mRecentProjects; } -void GlobalStates::ClearRecentProjects() { +void GlobalStates::ClearRecentProjects() +{ mRecentProjects.clear(); MarkDirty(); } -void GlobalStates::AddRecentProject(const Project& project) { +void GlobalStates::AddRecentProject(const Project& project) +{ mRecentProjects.push_back(RecentProject{ .path = project.GetPath(), .cachedUtf8String = project.GetPath().string(), @@ -83,7 +91,8 @@ void GlobalStates::AddRecentProject(const Project& project) { MarkDirty(); } -void GlobalStates::MoveProjectToTop(const Project& project) { +void GlobalStates::MoveProjectToTop(const Project& project) +{ for (auto it = mRecentProjects.begin(); it != mRecentProjects.end(); ++it) { if (it->path == project.GetPath()) { std::rotate(it, it + 1, mRecentProjects.end()); @@ -94,14 +103,16 @@ void GlobalStates::MoveProjectToTop(const Project& project) { AddRecentProject(project); } -void GlobalStates::RemoveRecentProject(int idx) { +void GlobalStates::RemoveRecentProject(int idx) +{ assert(idx >= 0 && idx < mRecentProjects.size()); mRecentProjects.erase(mRecentProjects.begin() + idx); MarkDirty(); } -void GlobalStates::WriteToDisk() const { +void GlobalStates::WriteToDisk() const +{ Json::Value root; auto& recentProjects = root["RecentProjects"] = Json::Value(Json::arrayValue); @@ -115,11 +126,13 @@ void GlobalStates::WriteToDisk() const { mDirty = false; } -bool GlobalStates::IsDirty() const { +bool GlobalStates::IsDirty() const +{ return mDirty; } -void GlobalStates::MarkDirty() { +void GlobalStates::MarkDirty() +{ mDirty = true; OnModified(); } |