diff --git a/src/modules/cmdpal/Microsoft.CmdPal.UI.ViewModels/Dock/DockViewModel.cs b/src/modules/cmdpal/Microsoft.CmdPal.UI.ViewModels/Dock/DockViewModel.cs index 4a6bb4e71b..95aa493d01 100644 --- a/src/modules/cmdpal/Microsoft.CmdPal.UI.ViewModels/Dock/DockViewModel.cs +++ b/src/modules/cmdpal/Microsoft.CmdPal.UI.ViewModels/Dock/DockViewModel.cs @@ -158,6 +158,14 @@ public sealed partial class DockViewModel : IDisposable, } #pragma warning disable SA1402 // File may only contain a single type + +public enum DockPinSide +{ + None, + Start, + End, +} + // public class DockSettingsViewModel : ObservableObject // { // private readonly DockSettings _settingsModel; @@ -194,26 +202,14 @@ public partial class DockBandSettingsViewModel : ObservableObject set => _dockSettingsModel.ShowLabels = value; // TODO! save settings } - public string PinSide + [ObservableProperty] + [NotifyPropertyChangedFor(nameof(PinSideIndex))] + private partial DockPinSide PinSide { get; set; } // TODO! persist to settings + + public int PinSideIndex { - // returns "Start", "End" or "None" - get - { - var dockSettings = _settingsModel.DockSettings; - var inStart = dockSettings.StartBands.Any(b => b.Id == _dockSettingsModel.Id); - if (inStart) - { - return "Start"; - } - - var inEnd = dockSettings.EndBands.Any(b => b.Id == _dockSettingsModel.Id); - if (inEnd) - { - return "End"; - } - - return "None"; - } + get => (int)PinSide; + set => PinSide = (DockPinSide)value; } public DockBandSettingsViewModel( @@ -224,6 +220,25 @@ public partial class DockBandSettingsViewModel : ObservableObject _dockSettingsModel = dockSettingsModel; _adapter = adapter; _settingsModel = settingsModel; + PinSide = FetchPinSide(); + } + + private DockPinSide FetchPinSide() + { + var dockSettings = _settingsModel.DockSettings; + var inStart = dockSettings.StartBands.Any(b => b.Id == _dockSettingsModel.Id); + if (inStart) + { + return DockPinSide.Start; + } + + var inEnd = dockSettings.EndBands.Any(b => b.Id == _dockSettingsModel.Id); + if (inEnd) + { + return DockPinSide.End; + } + + return DockPinSide.None; } } #pragma warning restore SA1402 // File may only contain a single type diff --git a/src/modules/cmdpal/Microsoft.CmdPal.UI/Settings/DockSettingsPage.xaml b/src/modules/cmdpal/Microsoft.CmdPal.UI/Settings/DockSettingsPage.xaml index 368abab579..0891495272 100644 --- a/src/modules/cmdpal/Microsoft.CmdPal.UI/Settings/DockSettingsPage.xaml +++ b/src/modules/cmdpal/Microsoft.CmdPal.UI/Settings/DockSettingsPage.xaml @@ -112,7 +112,12 @@ VerticalAlignment="Center" Orientation="Horizontal" Spacing="8"> - + + + + + +