#include "pch.h" #include "settings_helpers.h" #include #include 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_name) { std::wstring result = get_root_save_folder_location(); result += L"\\"; result += powertoy_name; 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_name) { return get_module_save_folder_location(powertoy_name) + 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_name, json::JsonObject& settings) { const std::wstring save_file_location = get_module_save_file_location(powertoy_name); json::to_file(save_file_location, settings); } json::JsonObject load_module_settings(std::wstring_view powertoy_name) { const std::wstring save_file_location = get_module_save_file_location(powertoy_name); 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{}; } }