// 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.Diagnostics.CodeAnalysis; using Microsoft.CmdPal.UI.ViewModels.Models; using Microsoft.CommandPalette.Extensions; namespace Microsoft.CmdPal.UI.ViewModels; [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] public partial class CommandContextItemViewModel : CommandItemViewModel, IContextItemViewModel { private readonly KeyChord nullKeyChord = new(0, 0, 0); public new ExtensionObject Model { get; } public bool IsCritical { get; private set; } public KeyChord? RequestedShortcut { get; private set; } public bool HasRequestedShortcut => RequestedShortcut is not null && (RequestedShortcut.Value != nullKeyChord); public CommandContextItemViewModel(ICommandContextItem contextItem, WeakReference context) : base(new(contextItem), context, contextMenuFactory: null) { Model = new(contextItem); IsContextMenuItem = true; } public override void InitializeProperties() { if (IsInitialized) { return; } base.InitializeProperties(); var contextItem = Model.Unsafe; if (contextItem is null) { return; // throw? } IsCritical = contextItem.IsCritical; RequestedShortcut = new( contextItem.RequestedShortcut.Modifiers, contextItem.RequestedShortcut.Vkey, contextItem.RequestedShortcut.ScanCode); } }