Added Tests and Refactored code (#2129)

* Added Tests and Refactored code

* removed un-used file

* delete test files when test completes

* removed extra build configs

* added clean-up method

* removed unused variable

* re-added removed attributtion

* added error handling and move strings to string resource

* added error handling to file explorer view model

* moved varible assignment to if statement block

* removed savin of settings file from the UI

* re-added open source notice

* added missing controls for powerrename and fancy zones

* removed dead coded

* remove un-used configuration

* added error handling for file saving and updated powerreanme constructor

* removed added configurations

* added settings state
This commit is contained in:
Lavius Motileng
2020-04-17 15:25:08 -07:00
committed by GitHub
parent 7e1f554c4e
commit 3fc738b53a
37 changed files with 1538 additions and 504 deletions

View File

@@ -20,11 +20,27 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
public ButtonClickCommand LaunchEditorEventHandler { get; set; }
public ICommand SaveColorChoiceEventHandler
public ICommand SaveZoneHighlightColorEventHandler
{
get
{
return new RelayCommand<Color>(SaveColorChoice);
return new RelayCommand<Color>(SaveZoneHighlightColor);
}
}
public ICommand SaveBorderColorEventHandler
{
get
{
return new RelayCommand<Color>(SaveZoneBorderColor);
}
}
public ICommand SaveInActiveColorEventHandler
{
get
{
return new RelayCommand<Color>(SaveZoneInActiveColor);
}
}
@@ -32,9 +48,17 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
public FancyZonesViewModel()
{
Settings = SettingsUtils.GetSettings<FancyZonesSettings>(ModuleName);
try
{
Settings = SettingsUtils.GetSettings<FancyZonesSettings>(ModuleName);
}
catch
{
Settings = new FancyZonesSettings();
SettingsUtils.SaveSettings(Settings.ToJsonString(), ModuleName);
}
this.LaunchEditorEventHandler = new ButtonClickCommand(LaunchEditor);
// this.SaveColorChoiceEventHandler = new ButtonClickCommand(SaveColorChoice);
this._shiftDrag = Settings.Properties.FancyzonesShiftDrag.Value;
this._overrideSnapHotkeys = Settings.Properties.FancyzonesOverrideSnapHotkeys.Value;
@@ -49,8 +73,20 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
this._highlightOpacity = Settings.Properties.FancyzonesHighlightOpacity.Value;
this._excludedApps = Settings.Properties.FancyzonesExcludedApps.Value;
this._editorHotkey = Settings.Properties.FancyzonesEditorHotkey.Value;
this._zoneBorderColor = Settings.Properties.FancyzonesBorderColor.Value;
this._zoneInActiveColor = Settings.Properties.FancyzonesInActiveColor.Value;
GeneralSettings generalSettings;
try
{
generalSettings = SettingsUtils.GetSettings<GeneralSettings>(string.Empty);
}
catch
{
generalSettings = new GeneralSettings();
SettingsUtils.SaveSettings(generalSettings.ToJsonString(), string.Empty);
}
GeneralSettings generalSettings = SettingsUtils.GetSettings<GeneralSettings>(string.Empty);
this._isEnabled = generalSettings.Enabled.FancyZones;
}
@@ -68,6 +104,8 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
private int _highlightOpacity;
private string _excludedApps;
private HotkeySettings _editorHotkey;
private string _zoneBorderColor;
private string _zoneInActiveColor;
public bool IsEnabled
{
@@ -271,6 +309,42 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
}
}
public string ZoneBorderColor
{
get
{
return _zoneBorderColor;
}
set
{
if (value != _zoneBorderColor)
{
_zoneBorderColor = value;
Settings.Properties.FancyzonesBorderColor.Value = value;
RaisePropertyChanged();
}
}
}
public string ZoneInActiveColor
{
get
{
return _zoneInActiveColor;
}
set
{
if (value != _zoneInActiveColor)
{
_zoneInActiveColor = value;
Settings.Properties.FancyzonesInActiveColor.Value = value;
RaisePropertyChanged();
}
}
}
public int HighlightOpacity
{
get
@@ -351,11 +425,21 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
ShellPage.DefaultSndMSGCallback("{\"action\":{\"FancyZones\":{\"action_name\":\"ToggledFZEditor\", \"value\":\"\"}}}");
}
private void SaveColorChoice(Color color)
private void SaveZoneHighlightColor(Color color)
{
ZoneHighlightColor = color.ToString();
}
private void SaveZoneBorderColor(Color color)
{
ZoneBorderColor = color.ToString();
}
private void SaveZoneInActiveColor(Color color)
{
ZoneInActiveColor = color.ToString();
}
public void RaisePropertyChanged([CallerMemberName] string propertyName = null)
{
OnPropertyChanged(propertyName);

View File

@@ -2,14 +2,225 @@
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using System.Text.Json;
using Microsoft.PowerToys.Settings.UI.Helpers;
using Microsoft.PowerToys.Settings.UI.Lib;
using Microsoft.PowerToys.Settings.UI.ViewModels.Commands;
using Microsoft.PowerToys.Settings.UI.Views;
using Windows.System;
using Windows.UI.Popups;
using Windows.UI.Xaml;
namespace Microsoft.PowerToys.Settings.UI.ViewModels
{
public class GeneralViewModel : Observable
{
private GeneralSettings GeneralSettingsConfigs { get; set; }
public ButtonClickCommand CheckFoUpdatesEventHandler { get; set; }
public ButtonClickCommand RestartElevatedButtonEventHandler { get; set; }
public GeneralViewModel()
{
this.CheckFoUpdatesEventHandler = new ButtonClickCommand(CheckForUpdates_Click);
this.RestartElevatedButtonEventHandler = new ButtonClickCommand(Restart_Elevated);
try
{
GeneralSettingsConfigs = SettingsUtils.GetSettings<GeneralSettings>(string.Empty);
}
catch
{
GeneralSettingsConfigs = new GeneralSettings();
SettingsUtils.SaveSettings(GeneralSettingsConfigs.ToJsonString(), string.Empty);
}
switch (GeneralSettingsConfigs.Theme.ToLower())
{
case "light":
_isLightThemeRadioButtonChecked = true;
ShellPage.ShellHandler.RequestedTheme = ElementTheme.Light;
break;
case "dark":
_isDarkThemeRadioButtonChecked = true;
ShellPage.ShellHandler.RequestedTheme = ElementTheme.Dark;
break;
case "system":
_isSystemThemeRadioButtonChecked = true;
ShellPage.ShellHandler.RequestedTheme = ElementTheme.Default;
break;
}
_startup = GeneralSettingsConfigs.Startup;
}
private bool _packaged = false;
private bool _startup = false;
private bool _isElevated = false;
private bool _runElevated = false;
private bool _isDarkThemeRadioButtonChecked = false;
private bool _isLightThemeRadioButtonChecked = false;
private bool _isSystemThemeRadioButtonChecked = false;
// Gets or sets a value indicating whether packaged.
public bool Packaged
{
get
{
return _packaged;
}
set
{
if (_packaged != value)
{
_packaged = value;
RaisePropertyChanged();
}
}
}
// Gets or sets a value indicating whether run powertoys on start-up.
public bool Startup
{
get
{
return _startup;
}
set
{
if (_startup != value)
{
_startup = value;
RaisePropertyChanged();
}
}
}
// Gets or sets a value indicating whether the powertoy elevated.
public bool IsElevated
{
get
{
return _isElevated;
}
set
{
if (_isElevated != value)
{
_isElevated = value;
RaisePropertyChanged();
}
}
}
// Gets or sets a value indicating whether powertoys should run elevated.
public bool RunElevated
{
get
{
return _runElevated;
}
set
{
if (_runElevated != value)
{
_runElevated = value;
RaisePropertyChanged();
}
}
}
public bool IsDarkThemeRadioButtonChecked
{
get
{
return _isDarkThemeRadioButtonChecked;
}
set
{
if (value == true)
{
GeneralSettingsConfigs.Theme = "dark";
_isDarkThemeRadioButtonChecked = value;
ShellPage.ShellHandler.RequestedTheme = ElementTheme.Dark;
RaisePropertyChanged();
}
}
}
public bool IsLightThemeRadioButtonChecked
{
get
{
return _isLightThemeRadioButtonChecked;
}
set
{
if (value == true)
{
GeneralSettingsConfigs.Theme = "light";
_isLightThemeRadioButtonChecked = value;
ShellPage.ShellHandler.RequestedTheme = ElementTheme.Light;
RaisePropertyChanged();
}
}
}
public bool IsSystemThemeRadioButtonChecked
{
get
{
return _isSystemThemeRadioButtonChecked;
}
set
{
if (value == true)
{
GeneralSettingsConfigs.Theme = "system";
_isSystemThemeRadioButtonChecked = value;
ShellPage.ShellHandler.RequestedTheme = ElementTheme.Default;
RaisePropertyChanged();
}
}
}
public void RaisePropertyChanged([CallerMemberName] string propertyName = null)
{
// Notify UI of property change
OnPropertyChanged(propertyName);
OutGoingGeneralSettings outsettings = new OutGoingGeneralSettings(GeneralSettingsConfigs);
ShellPage.DefaultSndMSGCallback(outsettings.ToString());
}
// callback function to launch the URL to check for updates.
private async void CheckForUpdates_Click()
{
await Launcher.LaunchUriAsync(new Uri("https://github.com/microsoft/PowerToys/releases"));
}
private void Restart_Elevated()
{
GeneralSettings settings = SettingsUtils.GetSettings<GeneralSettings>(string.Empty);
settings.RunElevated = true;
OutGoingGeneralSettings outsettings = new OutGoingGeneralSettings(settings);
if (ShellPage.DefaultSndMSGCallback != null)
{
ShellPage.DefaultSndMSGCallback(outsettings.ToString());
}
}
}
}

View File

@@ -0,0 +1,86 @@
// 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 System.Runtime.CompilerServices;
using Microsoft.PowerToys.Settings.UI.Helpers;
using Microsoft.PowerToys.Settings.UI.Lib;
using Microsoft.PowerToys.Settings.UI.Views;
namespace Microsoft.PowerToys.Settings.UI.ViewModels
{
public class PowerPreviewViewModel : Observable
{
private const string ModuleName = "File Explorer Preview";
private PowerPreviewSettings Settings { get; set; }
public PowerPreviewViewModel()
{
try
{
Settings = SettingsUtils.GetSettings<PowerPreviewSettings>(ModuleName);
}
catch
{
Settings = new PowerPreviewSettings();
SettingsUtils.SaveSettings(Settings.ToJsonString(), ModuleName);
}
this._svgRenderIsEnabled = Settings.properties.IDS_PREVPANE_SVG_BOOL_TOGGLE_CONTROLL.Value;
this._mdRenderIsEnabled = Settings.properties.PREVPANE_MD_BOOL_TOGGLE_CONTROLL_ID.Value;
}
private bool _svgRenderIsEnabled = false;
private bool _mdRenderIsEnabled = false;
public bool SVGRenderIsEnebled
{
get
{
return _svgRenderIsEnabled;
}
set
{
if (value != _svgRenderIsEnabled)
{
_svgRenderIsEnabled = value;
Settings.properties.IDS_PREVPANE_SVG_BOOL_TOGGLE_CONTROLL.Value = value;
RaisePropertyChanged();
}
}
}
public bool MDRenderIsEnebled
{
get
{
return _mdRenderIsEnabled;
}
set
{
if (value != _mdRenderIsEnabled)
{
_mdRenderIsEnabled = value;
Settings.properties.PREVPANE_MD_BOOL_TOGGLE_CONTROLL_ID.Value = value;
RaisePropertyChanged();
}
}
}
private void RaisePropertyChanged([CallerMemberName] string propertyName = null)
{
// Notify UI of property change
OnPropertyChanged(propertyName);
if (ShellPage.DefaultSndMSGCallback != null)
{
SndPowerPreviewSettings snd = new SndPowerPreviewSettings(Settings);
SndModuleSettings<SndPowerPreviewSettings> ipcMessage = new SndModuleSettings<SndPowerPreviewSettings>(snd);
ShellPage.DefaultSndMSGCallback(ipcMessage.ToJsonString());
}
}
}
}

View File

@@ -2,14 +2,186 @@
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System.Runtime.CompilerServices;
using Microsoft.PowerToys.Settings.UI.Helpers;
using Microsoft.PowerToys.Settings.UI.Lib;
using Microsoft.PowerToys.Settings.UI.Views;
namespace Microsoft.PowerToys.Settings.UI.ViewModels
{
public class PowerRenameViewModel : Observable
{
private const string ModuleName = "PowerRename";
private PowerRenameSettings Settings { get; set; }
public PowerRenameViewModel()
{
try
{
PowerRenameLocalProperties localSettings = SettingsUtils.GetSettings<PowerRenameLocalProperties>(ModuleName, "power-rename-settings.json");
Settings = new PowerRenameSettings(localSettings);
}
catch
{
PowerRenameLocalProperties localSettings = new PowerRenameLocalProperties();
Settings = new PowerRenameSettings(localSettings);
SettingsUtils.SaveSettings(localSettings.ToJsonString(), ModuleName, "power-rename-settings.json");
}
_powerRenameEnabledOnContextMenu = Settings.properties.ShowIcon.Value;
_powerRenameEnabledOnContextExtendedMenu = Settings.properties.ExtendedContextMenuOnly.Value;
_powerRenameRestoreFlagsOnLaunch = Settings.properties.PersistState.Value;
_powerRenameMaxDispListNumValue = Settings.properties.MaxMRUSize.Value;
_autoComplete = Settings.properties.MRUEnabled.Value;
GeneralSettings generalSettings;
try
{
generalSettings = SettingsUtils.GetSettings<GeneralSettings>(string.Empty);
}
catch
{
generalSettings = new GeneralSettings();
SettingsUtils.SaveSettings(generalSettings.ToJsonString(), string.Empty);
}
_powerRenameEnabled = generalSettings.Enabled.PowerRename;
}
private bool _powerRenameEnabled = false;
private bool _powerRenameEnabledOnContextMenu = false;
private bool _powerRenameEnabledOnContextExtendedMenu = false;
private bool _powerRenameRestoreFlagsOnLaunch = false;
private int _powerRenameMaxDispListNumValue = 0;
private bool _autoComplete = false;
public bool IsEnabled
{
get
{
return _powerRenameEnabled;
}
set
{
if (value != _powerRenameEnabled)
{
if (ShellPage.DefaultSndMSGCallback != null)
{
GeneralSettings generalSettings = SettingsUtils.GetSettings<GeneralSettings>(string.Empty);
generalSettings.Enabled.PowerRename = value;
OutGoingGeneralSettings snd = new OutGoingGeneralSettings(generalSettings);
ShellPage.DefaultSndMSGCallback(snd.ToString());
_powerRenameEnabled = value;
RaisePropertyChanged();
}
}
}
}
public bool MRUEnabled
{
get
{
return _autoComplete;
}
set
{
if (value != _autoComplete)
{
_autoComplete = value;
Settings.properties.MRUEnabled.Value = value;
RaisePropertyChanged();
}
}
}
public bool EnabledOnContextMenu
{
get
{
return _powerRenameEnabledOnContextMenu;
}
set
{
if (value != _powerRenameEnabledOnContextMenu)
{
_powerRenameEnabledOnContextMenu = value;
Settings.properties.ShowIcon.Value = value;
RaisePropertyChanged();
}
}
}
public bool EnabledOnContextExtendedMenu
{
get
{
return _powerRenameEnabledOnContextExtendedMenu;
}
set
{
if (value != _powerRenameEnabledOnContextExtendedMenu)
{
_powerRenameEnabledOnContextExtendedMenu = value;
Settings.properties.ExtendedContextMenuOnly.Value = value;
RaisePropertyChanged();
}
}
}
public bool RestoreFlagsOnLaunch
{
get
{
return _powerRenameRestoreFlagsOnLaunch;
}
set
{
if (value != _powerRenameRestoreFlagsOnLaunch)
{
_powerRenameRestoreFlagsOnLaunch = value;
Settings.properties.PersistState.Value = value;
RaisePropertyChanged();
}
}
}
public int MaxDispListNum
{
get
{
return _powerRenameMaxDispListNumValue;
}
set
{
if (value != _powerRenameMaxDispListNumValue)
{
_powerRenameMaxDispListNumValue = value;
Settings.properties.MaxMRUSize.Value = value;
RaisePropertyChanged();
}
}
}
private void RaisePropertyChanged([CallerMemberName] string propertyName = null)
{
// Notify UI of property change
OnPropertyChanged(propertyName);
if (ShellPage.DefaultSndMSGCallback != null)
{
SndPowerRenameSettings snd = new SndPowerRenameSettings(Settings);
SndModuleSettings<SndPowerRenameSettings> ipcMessage = new SndModuleSettings<SndPowerRenameSettings>(snd);
ShellPage.DefaultSndMSGCallback(ipcMessage.ToJsonString());
}
}
}
}
}