PowerToys/src/settings-ui/Settings.UI.Library/ISettingsUtils.cs

26 lines
953 B
C#
Raw Normal View History

// Copyright (c) Microsoft Corporation
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using Microsoft.PowerToys.Settings.UI.Library.Interfaces;
Fix for settings crash on toggling enable button for any PowerToy (#6620) * Removed getSettings from moduleEnabled so that it doesn't have to reopen the file everytime * To Lower to while checking the theme * color picker doesn't reopen the file * use the generalView model config directly for FZ * Made the same change for all the viewmodels so that they access the general view model value directly instead of opening and reading the value from a file each time * removed unused variable * Fix initialization in tests * should read the file only if general settings does not exist * Added interfaces for all the powertoys to use the generalSettings singleton class * Runner is responding to changes in settings, only issue is that every time the general settings page is loaded the information is being read because isInitialized property could not be ignored during serialization * All tests pass * Settings and runner are working as expected with the settings cache * added a null check to read from the file only when the settings process is started * use converter to deserialize an interface * Renamed generalSettings within the cache to be called CommonSettingsConfig * All tests pass, had to initialize the common settings config instance * Added few comments to newly created classes * encapsulating load and store of general view model * reading from file is encapsulated * settings and runner wotk with generic singleton * Shortcut guide works as expected * Fancyzones, shortcutguide and power preview use the settings repository and work as expected * referencing GeneralSettings instead of the settingsRepository<GeneralSettings> within viewmodels * unified access to General settings and removed the IGeneralSettingsData interface * Passing settings to viewmodel as a parameter * removed ISettingsConfig interface from the viewmodels which are not using the singleton to access settings * have to use ISettingsConfig to use GetSettings * refactored tests, all tests pass * Added test for settingsRepository that a single instance is created * Added comments and removed unnecessary headers/code * added settings repository tests * moq for each settings file * Img resizer tests pass * General tests pass * FancyZones tests pass * PowerPreview tests pass * PowerRename tests pass * shortcut guide tests pass * Added GetModuleName to ISettingsConfig * unify the way the Modulename is accessed. It was redeclared in multiple places and this would cause an issue if the name is changed only in one place. All the module names are accessed using the <T>Settings.ModuleName, eg: ShortcutGuideSettings.ModuleName. * create PTRun settings file if it does not exist * GetFile is now a private function. Modified the logic of KBM default.json access and PT Run so that we can re-use GetSettings instead of GetFile. * Added UpgradeSettingsConfiguration to the ISettingsConfig interface so that the settings file can be upgraded based on some condition. Presently, only the GeneralSettings file is utilizing this to change the PT Version number based on the old PT version and the current PT version that it receives from the helper function. Verified that if the PT version is lower in the general settings.json file, settings saves the file with the new version info. * The naming for the PowerToys was inconsistent and the variables were redeclared in multiple places. To have the settings.ModuleName as the main name, all other places should refer to that name. In the tests file the module name for ImgResizer was 'ImageResizer' and not 'Image Resizer'. * renamed lock * Remove unnecessary GetSettingsFileNAme function. It is no longer in use because the code does not use types to create a new BasePTModule object
2020-09-24 04:20:32 +08:00
namespace Microsoft.PowerToys.Settings.UI.Library
{
public interface ISettingsUtils
{
Fix for settings crash on toggling enable button for any PowerToy (#6620) * Removed getSettings from moduleEnabled so that it doesn't have to reopen the file everytime * To Lower to while checking the theme * color picker doesn't reopen the file * use the generalView model config directly for FZ * Made the same change for all the viewmodels so that they access the general view model value directly instead of opening and reading the value from a file each time * removed unused variable * Fix initialization in tests * should read the file only if general settings does not exist * Added interfaces for all the powertoys to use the generalSettings singleton class * Runner is responding to changes in settings, only issue is that every time the general settings page is loaded the information is being read because isInitialized property could not be ignored during serialization * All tests pass * Settings and runner are working as expected with the settings cache * added a null check to read from the file only when the settings process is started * use converter to deserialize an interface * Renamed generalSettings within the cache to be called CommonSettingsConfig * All tests pass, had to initialize the common settings config instance * Added few comments to newly created classes * encapsulating load and store of general view model * reading from file is encapsulated * settings and runner wotk with generic singleton * Shortcut guide works as expected * Fancyzones, shortcutguide and power preview use the settings repository and work as expected * referencing GeneralSettings instead of the settingsRepository<GeneralSettings> within viewmodels * unified access to General settings and removed the IGeneralSettingsData interface * Passing settings to viewmodel as a parameter * removed ISettingsConfig interface from the viewmodels which are not using the singleton to access settings * have to use ISettingsConfig to use GetSettings * refactored tests, all tests pass * Added test for settingsRepository that a single instance is created * Added comments and removed unnecessary headers/code * added settings repository tests * moq for each settings file * Img resizer tests pass * General tests pass * FancyZones tests pass * PowerPreview tests pass * PowerRename tests pass * shortcut guide tests pass * Added GetModuleName to ISettingsConfig * unify the way the Modulename is accessed. It was redeclared in multiple places and this would cause an issue if the name is changed only in one place. All the module names are accessed using the <T>Settings.ModuleName, eg: ShortcutGuideSettings.ModuleName. * create PTRun settings file if it does not exist * GetFile is now a private function. Modified the logic of KBM default.json access and PT Run so that we can re-use GetSettings instead of GetFile. * Added UpgradeSettingsConfiguration to the ISettingsConfig interface so that the settings file can be upgraded based on some condition. Presently, only the GeneralSettings file is utilizing this to change the PT Version number based on the old PT version and the current PT version that it receives from the helper function. Verified that if the PT version is lower in the general settings.json file, settings saves the file with the new version info. * The naming for the PowerToys was inconsistent and the variables were redeclared in multiple places. To have the settings.ModuleName as the main name, all other places should refer to that name. In the tests file the module name for ImgResizer was 'ImageResizer' and not 'Image Resizer'. * renamed lock * Remove unnecessary GetSettingsFileNAme function. It is no longer in use because the code does not use types to create a new BasePTModule object
2020-09-24 04:20:32 +08:00
T GetSettings<T>(string powertoy = "", string fileName = "settings.json")
where T : ISettingsConfig, new();
T GetSettingsOrDefault<T>(string powertoy = "", string fileName = "settings.json")
where T : ISettingsConfig, new();
void SaveSettings(string jsonSettings, string powertoy = "", string fileName = "settings.json");
bool SettingsExists(string powertoy = "", string fileName = "settings.json");
void DeleteSettings(string powertoy = "");
Espresso (#11303) * Update README.md * Espresso (#11245) * Revert "Merge branch 'microsoft:master' into master" This reverts commit b080908712557fce0e93a98e8d3bcb58fbd111fc, reversing changes made to 8463c95a43a737532ae21dfa9aee1894a3a37dde. * Fix conversion of settings in the UX * Update terminology * Updating logging configuration * Set up how tray and setting configuration works * Adding hero images * Fix how binding works * Update OOBE string * Fix spelling error * fixing dep to include espresso, adding in yml * Update API components and fix display keep-awake bug * Adding words that the spell check is yelling about * tweak wsx * Change default setting for Espresso Co-authored-by: Niels Laute <niels9001@hotmail.com> Co-authored-by: crutkas <crutkas@microsoft.com> * Update Product.wxs * Update Shortcut.cpp * Update with more logging (#11332) * Revert "Merge branch 'microsoft:master' into master" This reverts commit b080908712557fce0e93a98e8d3bcb58fbd111fc, reversing changes made to 8463c95a43a737532ae21dfa9aee1894a3a37dde. * Fix conversion of settings in the UX * Update terminology * Updating logging configuration * Set up how tray and setting configuration works * Adding hero images * Fix how binding works * Update OOBE string * Fix spelling error * fixing dep to include espresso, adding in yml * Update API components and fix display keep-awake bug * Adding words that the spell check is yelling about * tweak wsx * Change default setting for Espresso * Adding some extra logging * Update Shortcut.cpp Co-authored-by: Niels Laute <niels9001@hotmail.com> Co-authored-by: crutkas <crutkas@microsoft.com> * Fix minor issue in the module branch (#11340) * Revert "Merge branch 'microsoft:master' into master" This reverts commit b080908712557fce0e93a98e8d3bcb58fbd111fc, reversing changes made to 8463c95a43a737532ae21dfa9aee1894a3a37dde. * Fix conversion of settings in the UX * Update terminology * Updating logging configuration * Set up how tray and setting configuration works * Adding hero images * Fix how binding works * Update OOBE string * Fix spelling error * fixing dep to include espresso, adding in yml * Update API components and fix display keep-awake bug * Adding words that the spell check is yelling about * tweak wsx * Change default setting for Espresso * Adding some extra logging * Update Shortcut.cpp * Fix log location coming from the runner * More chatty logging for console allocation * Installer config to add the missing assets Co-authored-by: Niels Laute <niels9001@hotmail.com> Co-authored-by: crutkas <crutkas@microsoft.com> * Update Product.wxs * Update Program.cs * fixing typo * removing a unneeded removal * [Espresso] More minor tweaks to logging (#11341) * Revert "Merge branch 'microsoft:master' into master" This reverts commit b080908712557fce0e93a98e8d3bcb58fbd111fc, reversing changes made to 8463c95a43a737532ae21dfa9aee1894a3a37dde. * Fix conversion of settings in the UX * Update terminology * Updating logging configuration * Set up how tray and setting configuration works * Adding hero images * Fix how binding works * Update OOBE string * Fix spelling error * fixing dep to include espresso, adding in yml * Update API components and fix display keep-awake bug * Adding words that the spell check is yelling about * tweak wsx * Change default setting for Espresso * Adding some extra logging * Update Shortcut.cpp * Fix log location coming from the runner * More chatty logging for console allocation * Installer config to add the missing assets * Remove unused handle codes * Update log file name for the Espresso C++ code. * Update the project configuration to fix build issue Co-authored-by: Niels Laute <niels9001@hotmail.com> Co-authored-by: crutkas <crutkas@microsoft.com> * Update patterns.txt * Fix binding issues (#11368) * Revert "Merge branch 'microsoft:master' into master" This reverts commit b080908712557fce0e93a98e8d3bcb58fbd111fc, reversing changes made to 8463c95a43a737532ae21dfa9aee1894a3a37dde. * Fix conversion of settings in the UX * Update terminology * Updating logging configuration * Set up how tray and setting configuration works * Adding hero images * Fix how binding works * Update OOBE string * Fix spelling error * fixing dep to include espresso, adding in yml * Update API components and fix display keep-awake bug * Adding words that the spell check is yelling about * tweak wsx * Change default setting for Espresso * Adding some extra logging * Update Shortcut.cpp * Fix log location coming from the runner * More chatty logging for console allocation * Installer config to add the missing assets * Remove unused handle codes * Update log file name for the Espresso C++ code. * Update the project configuration to fix build issue * Fix binding issue with the time settings Co-authored-by: Niels Laute <niels9001@hotmail.com> Co-authored-by: crutkas <crutkas@microsoft.com> * Introduce the off mode and fix binding issues (#11385) * Revert "Merge branch 'microsoft:master' into master" This reverts commit b080908712557fce0e93a98e8d3bcb58fbd111fc, reversing changes made to 8463c95a43a737532ae21dfa9aee1894a3a37dde. * Fix conversion of settings in the UX * Update terminology * Updating logging configuration * Set up how tray and setting configuration works * Adding hero images * Fix how binding works * Update OOBE string * Fix spelling error * fixing dep to include espresso, adding in yml * Update API components and fix display keep-awake bug * Adding words that the spell check is yelling about * tweak wsx * Change default setting for Espresso * Adding some extra logging * Update Shortcut.cpp * Fix log location coming from the runner * More chatty logging for console allocation * Installer config to add the missing assets * Remove unused handle codes * Update log file name for the Espresso C++ code. * Update the project configuration to fix build issue * Fix binding issue with the time settings * Proper Espresso behavior for binding * Fix settings UI Co-authored-by: Niels Laute <niels9001@hotmail.com> Co-authored-by: crutkas <crutkas@microsoft.com> * Update with missing strings. (#11386) * Revert "Merge branch 'microsoft:master' into master" This reverts commit b080908712557fce0e93a98e8d3bcb58fbd111fc, reversing changes made to 8463c95a43a737532ae21dfa9aee1894a3a37dde. * Fix conversion of settings in the UX * Update terminology * Updating logging configuration * Set up how tray and setting configuration works * Adding hero images * Fix how binding works * Update OOBE string * Fix spelling error * fixing dep to include espresso, adding in yml * Update API components and fix display keep-awake bug * Adding words that the spell check is yelling about * tweak wsx * Change default setting for Espresso * Adding some extra logging * Update Shortcut.cpp * Fix log location coming from the runner * More chatty logging for console allocation * Installer config to add the missing assets * Remove unused handle codes * Update log file name for the Espresso C++ code. * Update the project configuration to fix build issue * Fix binding issue with the time settings * Proper Espresso behavior for binding * Fix settings UI * Re-add missing strings Co-authored-by: Niels Laute <niels9001@hotmail.com> Co-authored-by: crutkas <crutkas@microsoft.com> * Fix whitespace issue (#11387) * Revert "Merge branch 'microsoft:master' into master" This reverts commit b080908712557fce0e93a98e8d3bcb58fbd111fc, reversing changes made to 8463c95a43a737532ae21dfa9aee1894a3a37dde. * Fix conversion of settings in the UX * Update terminology * Updating logging configuration * Set up how tray and setting configuration works * Adding hero images * Fix how binding works * Update OOBE string * Fix spelling error * fixing dep to include espresso, adding in yml * Update API components and fix display keep-awake bug * Adding words that the spell check is yelling about * tweak wsx * Change default setting for Espresso * Adding some extra logging * Update Shortcut.cpp * Fix log location coming from the runner * More chatty logging for console allocation * Installer config to add the missing assets * Remove unused handle codes * Update log file name for the Espresso C++ code. * Update the project configuration to fix build issue * Fix binding issue with the time settings * Proper Espresso behavior for binding * Fix settings UI * Re-add missing strings * Fix whitespace issue Co-authored-by: Niels Laute <niels9001@hotmail.com> Co-authored-by: crutkas <crutkas@microsoft.com> * Fix default (#11388) * Revert "Merge branch 'microsoft:master' into master" This reverts commit b080908712557fce0e93a98e8d3bcb58fbd111fc, reversing changes made to 8463c95a43a737532ae21dfa9aee1894a3a37dde. * Fix conversion of settings in the UX * Update terminology * Updating logging configuration * Set up how tray and setting configuration works * Adding hero images * Fix how binding works * Update OOBE string * Fix spelling error * fixing dep to include espresso, adding in yml * Update API components and fix display keep-awake bug * Adding words that the spell check is yelling about * tweak wsx * Change default setting for Espresso * Adding some extra logging * Update Shortcut.cpp * Fix log location coming from the runner * More chatty logging for console allocation * Installer config to add the missing assets * Remove unused handle codes * Update log file name for the Espresso C++ code. * Update the project configuration to fix build issue * Fix binding issue with the time settings * Proper Espresso behavior for binding * Fix settings UI * Re-add missing strings * Fix whitespace issue * Fix the default mode of operation Co-authored-by: Niels Laute <niels9001@hotmail.com> Co-authored-by: crutkas <crutkas@microsoft.com> * Update Microsoft.PowerToys.Settings.UI.csproj * Localization improvements * Replaced a computer with your pc * Updated Espresso imagery * Fixed inconsistent string * Margin fix and updated images * Removed unused code Co-authored-by: Den Delimarsky <1389609+dend@users.noreply.github.com> Co-authored-by: Niels Laute <niels9001@hotmail.com> Co-authored-by: crutkas <crutkas@microsoft.com> Co-authored-by: Enrico Giordani <enrico.giordani@gmail.com>
2021-05-26 01:13:04 +08:00
string GetSettingsFilePath(string powertoy = "", string fileName = "settings.json");
}
}