mirror of
https://github.com/microsoft/PowerToys.git
synced 2024-12-19 06:14:11 +08:00
280d1907d8
* Added get_key to powertoysmodule interface * Replace get_name with get_key * Implement get_key function in modules * Make key global constant in each module * Update settings v1 to use key to load and save files * Fixed fancyzones and preview pane unit tests * Removed setings unit test as the case is not covered anymore * Add constant files for modules and use it to reference module key * Add constant string files to colorpicker, launcher and shortcut guide * correct sunction signature in settings helper * Fix powerpreview merge conflicts * nit fix with include statement location * add check for fields in from_json_string * Updated preview pane tests with correct from_json_string signature * Correct Image resizer naming * Roll back changes for adding check for property and version * Fix image resizer not working
75 lines
2.5 KiB
C++
75 lines
2.5 KiB
C++
#include "pch.h"
|
|
#include "settings_helpers.h"
|
|
#include <filesystem>
|
|
#include <fstream>
|
|
|
|
namespace PTSettingsHelper
|
|
{
|
|
constexpr inline const wchar_t* settings_filename = L"\\settings.json";
|
|
|
|
std::wstring get_root_save_folder_location()
|
|
{
|
|
PWSTR local_app_path;
|
|
winrt::check_hresult(SHGetKnownFolderPath(FOLDERID_LocalAppData, 0, NULL, &local_app_path));
|
|
std::wstring result{ local_app_path };
|
|
CoTaskMemFree(local_app_path);
|
|
|
|
result += L"\\Microsoft\\PowerToys";
|
|
std::filesystem::path save_path(result);
|
|
if (!std::filesystem::exists(save_path))
|
|
{
|
|
std::filesystem::create_directories(save_path);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
std::wstring get_module_save_folder_location(std::wstring_view powertoy_key)
|
|
{
|
|
std::wstring result = get_root_save_folder_location();
|
|
result += L"\\";
|
|
result += powertoy_key;
|
|
std::filesystem::path save_path(result);
|
|
if (!std::filesystem::exists(save_path))
|
|
{
|
|
std::filesystem::create_directories(save_path);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
std::wstring get_module_save_file_location(std::wstring_view powertoy_key)
|
|
{
|
|
return get_module_save_folder_location(powertoy_key) + settings_filename;
|
|
}
|
|
|
|
std::wstring get_powertoys_general_save_file_location()
|
|
{
|
|
return get_root_save_folder_location() + settings_filename;
|
|
}
|
|
|
|
void save_module_settings(std::wstring_view powertoy_key, json::JsonObject& settings)
|
|
{
|
|
const std::wstring save_file_location = get_module_save_file_location(powertoy_key);
|
|
json::to_file(save_file_location, settings);
|
|
}
|
|
|
|
json::JsonObject load_module_settings(std::wstring_view powertoy_key)
|
|
{
|
|
const std::wstring save_file_location = get_module_save_file_location(powertoy_key);
|
|
auto saved_settings = json::from_file(save_file_location);
|
|
return saved_settings.has_value() ? std::move(*saved_settings) : json::JsonObject{};
|
|
}
|
|
|
|
void save_general_settings(const json::JsonObject& settings)
|
|
{
|
|
const std::wstring save_file_location = get_powertoys_general_save_file_location();
|
|
json::to_file(save_file_location, settings);
|
|
}
|
|
|
|
json::JsonObject load_general_settings()
|
|
{
|
|
const std::wstring save_file_location = get_powertoys_general_save_file_location();
|
|
auto saved_settings = json::from_file(save_file_location);
|
|
return saved_settings.has_value() ? std::move(*saved_settings) : json::JsonObject{};
|
|
}
|
|
}
|