master
cs 77 lines 2.32 KB
Raw
1 // Copyright (C) Microsoft Corporation. All rights reserved.
2
3 using CommunityToolkit.Mvvm.ComponentModel;
4 using CommunityToolkit.Mvvm.Input;
5 using System.Windows.Input;
6 using WslSettings.Contracts.Services;
7
8 namespace WslSettings.ViewModels.Settings;
9
10 public partial class FileSystemViewModel : WslConfigSettingViewModel
11 {
12 private IWslConfigSetting? _defaultVHDSize;
13 private ulong _defaultDefaultVHDSizeBytes;
14 private bool _defaultVHDSize_ResetEnabled;
15
16 public FileSystemViewModel()
17 {
18 InitializeConfigSettings();
19
20 DefaultVHDSize_ResetEnabled = !Equals(_defaultDefaultVHDSizeBytes, _defaultVHDSize!.UInt64Value);
21 }
22
23 override protected void InitializeConfigSettings()
24 {
25 var wslConfigService = App.GetService<IWslConfigService>();
26 _defaultVHDSize = wslConfigService.GetWslConfigSetting(WslConfigEntry.VhdSizeBytes);
27
28 _defaultDefaultVHDSizeBytes = wslConfigService.GetWslConfigSetting(WslConfigEntry.VhdSizeBytes, true).UInt64Value;
29 }
30
31 public string DefaultVHDSize
32 {
33 get
34 {
35 return _defaultVHDSize!.UInt64Value.ToString();
36 }
37 set
38 {
39 if (ValidateInput(value, Constants.WholeNumberRegex))
40 {
41 if (UInt64.TryParse(value, out ulong parsedValue))
42 {
43 Set(ref _defaultVHDSize!, parsedValue);
44 }
45 else
46 {
47 OnPropertyChanged();
48 }
49 }
50 }
51 }
52
53 public void SetDefaultVHDSize_ResetEnabled(string? value)
54 {
55 if (UInt64.TryParse(value, out UInt64 parseResult))
56 {
57 DefaultVHDSize_ResetEnabled = !Equals(_defaultDefaultVHDSizeBytes / Constants.MB, parseResult);
58 }
59 else
60 {
61 DefaultVHDSize_ResetEnabled = true;
62 }
63 }
64
65 public bool DefaultVHDSize_ResetEnabled
66 {
67 get => _defaultVHDSize_ResetEnabled;
68 set => SetProperty(ref _defaultVHDSize_ResetEnabled, value);
69 }
70
71 private void DefaultVHDSize_ResetExecuted(string? param)
72 {
73 DefaultVHDSize = _defaultDefaultVHDSizeBytes.ToString();
74 }
75
76 public ICommand DefaultVHDSize_ResetCommand => new RelayCommand<string>(DefaultVHDSize_ResetExecuted);
77 }