From 6516af8a7ac6d439647b620e8c214728db107ca2 Mon Sep 17 00:00:00 2001 From: seraphima Date: Thu, 4 Jul 2024 15:57:25 +0200 Subject: [PATCH] change snapshot project saving https://github.com/JaneaSystems/PowerToys-DevProjects/issues/14 --- .../Projects/ProjectsSnapshotTool/JsonUtils.h | 12 +++++++ .../Projects/ProjectsSnapshotTool/NameUtils.h | 35 ------------------- .../Projects/ProjectsSnapshotTool/main.cpp | 9 ++--- src/modules/Projects/projects-common/Data.h | 6 ++++ 4 files changed, 20 insertions(+), 42 deletions(-) delete mode 100644 src/modules/Projects/ProjectsSnapshotTool/NameUtils.h diff --git a/src/modules/Projects/ProjectsSnapshotTool/JsonUtils.h b/src/modules/Projects/ProjectsSnapshotTool/JsonUtils.h index 0ace2b67d9..ce83c0f8ad 100644 --- a/src/modules/Projects/ProjectsSnapshotTool/JsonUtils.h +++ b/src/modules/Projects/ProjectsSnapshotTool/JsonUtils.h @@ -42,4 +42,16 @@ namespace ProjectsJsonUtils Logger::error("Error writing projects file. {}", ex.what()); } } + + inline void Write(const std::wstring& fileName, const Project& project) + { + try + { + json::to_file(fileName, JsonUtils::ProjectJSON::ToJson(project)); + } + catch (std::exception ex) + { + Logger::error("Error writing projects file. {}", ex.what()); + } + } } \ No newline at end of file diff --git a/src/modules/Projects/ProjectsSnapshotTool/NameUtils.h b/src/modules/Projects/ProjectsSnapshotTool/NameUtils.h deleted file mode 100644 index 734c3164f0..0000000000 --- a/src/modules/Projects/ProjectsSnapshotTool/NameUtils.h +++ /dev/null @@ -1,35 +0,0 @@ -#pragma once - -#include - -#include -#include "Generated Files/resource.h" - -namespace ProjectNameUtils -{ - inline std::wstring CreateProjectName(const std::vector& projects) - { - std::wstring defaultNamePrefix = GET_RESOURCE_STRING(IDS_DEFAULTPROJECTNAMEPREFIX); - int nextProjectIndex = 0; - for (const auto& proj : projects) - { - const std::wstring& name = proj.name; - if (name.starts_with(defaultNamePrefix)) - { - try - { - int index = std::stoi(name.substr(defaultNamePrefix.length() + 1)); - if (nextProjectIndex < index) - { - nextProjectIndex = index; - } - } - catch (std::exception) - { - } - } - } - - return defaultNamePrefix + L" " + std::to_wstring(nextProjectIndex + 1); - } -} \ No newline at end of file diff --git a/src/modules/Projects/ProjectsSnapshotTool/main.cpp b/src/modules/Projects/ProjectsSnapshotTool/main.cpp index 411c4f1534..b2bb309c57 100644 --- a/src/modules/Projects/ProjectsSnapshotTool/main.cpp +++ b/src/modules/Projects/ProjectsSnapshotTool/main.cpp @@ -7,7 +7,6 @@ #include #include -#include #include #include @@ -45,12 +44,9 @@ int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, LPSTR cmdLine, int cm fileName = fileNameParam; } - // read previously saved projects - std::vector projects = ProjectsJsonUtils::Read(fileName); - // create new project time_t creationTime = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now()); - Project project{ .id = CreateGuidString(), .name = ProjectNameUtils::CreateProjectName(projects), .creationTime = creationTime }; + Project project{ .id = CreateGuidString(), .creationTime = creationTime }; Logger::trace(L"Creating project {}:{}", project.name, project.id); project.monitors = MonitorUtils::IdentifyMonitors(); @@ -69,8 +65,7 @@ int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, LPSTR cmdLine, int cm return monitorNumber; }); - projects.push_back(project); - ProjectsJsonUtils::Write(fileName, projects); + ProjectsJsonUtils::Write(JsonUtils::TempProjectsFile(), project); Logger::trace(L"Project {}:{} created", project.name, project.id); return 0; diff --git a/src/modules/Projects/projects-common/Data.h b/src/modules/Projects/projects-common/Data.h index f44a247f05..04f08f4c20 100644 --- a/src/modules/Projects/projects-common/Data.h +++ b/src/modules/Projects/projects-common/Data.h @@ -81,6 +81,12 @@ namespace JsonUtils return std::wstring(settingsFolderPath) + L"\\projects.json"; } + inline std::wstring TempProjectsFile() + { + std::wstring settingsFolderPath = PTSettingsHelper::get_module_save_folder_location(NonLocalizable::ModuleKey); + return std::wstring(settingsFolderPath) + L"\\temp-project.json"; + } + namespace ProjectJSON { namespace ApplicationJSON