Skip to content

Commit 797083a

Browse files
committed
Refactor KeyPressMessage
1 parent b730228 commit 797083a

File tree

3 files changed

+22
-37
lines changed

3 files changed

+22
-37
lines changed
Lines changed: 18 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,18 @@
11
using System;
2-
using System.Collections.Generic;
32
using System.Diagnostics.CodeAnalysis;
3+
using System.Globalization;
44
using System.Windows.Input;
55

66
namespace IPConfig.Models.Messages;
77

88
public class KeyPressMessage : ISender
99
{
10-
public KeyEventArgs? Args { get; }
10+
public KeyEventArgs Args { get; }
1111

1212
public string Gesture { get; private set; }
1313

1414
public object Sender { get; }
1515

16-
public KeyPressMessage(object sender, string gesture)
17-
{
18-
Sender = sender;
19-
Gesture = gesture;
20-
}
21-
2216
public KeyPressMessage(object sender, KeyEventArgs args)
2317
{
2418
Sender = sender;
@@ -27,40 +21,31 @@ public KeyPressMessage(object sender, KeyEventArgs args)
2721
GetGesture();
2822
}
2923

30-
[MemberNotNull(nameof(Gesture))]
31-
private void GetGesture()
24+
public bool GestureEquals(string gestureString)
3225
{
33-
var keys = new List<string>();
26+
var gestureConverter = new KeyGestureConverter();
27+
var keyGesture = gestureConverter.ConvertFromInvariantString(gestureString) as KeyGesture;
28+
string? normalizedGestureString = keyGesture?.GetDisplayStringForCulture(CultureInfo.InvariantCulture);
3429

35-
if (Args!.KeyboardDevice.Modifiers.HasFlag(ModifierKeys.Windows))
30+
if (normalizedGestureString is not null)
3631
{
37-
keys.Add("Win");
32+
return normalizedGestureString.Equals(Gesture, StringComparison.OrdinalIgnoreCase);
3833
}
3934

40-
if (Args.KeyboardDevice.Modifiers.HasFlag(ModifierKeys.Control))
41-
{
42-
keys.Add("Ctrl");
43-
}
44-
45-
if (Args.KeyboardDevice.Modifiers.HasFlag(ModifierKeys.Alt))
46-
{
47-
keys.Add("Alt");
48-
}
49-
50-
if (Args.KeyboardDevice.Modifiers.HasFlag(ModifierKeys.Shift))
51-
{
52-
keys.Add("Shift");
53-
}
35+
return false;
36+
}
5437

55-
if (Args.Key == Key.Escape)
38+
[MemberNotNull(nameof(Gesture))]
39+
private void GetGesture()
40+
{
41+
try
5642
{
57-
keys.Add("Esc");
43+
var gesture = new KeyGesture(Args.Key, Args.KeyboardDevice.Modifiers);
44+
Gesture = gesture.GetDisplayStringForCulture(CultureInfo.InvariantCulture);
5845
}
59-
else
46+
catch (NotSupportedException)
6047
{
61-
keys.Add(Args.Key.ToString());
48+
Gesture = Args.Key.ToString();
6249
}
63-
64-
Gesture = String.Join('+', keys);
6550
}
6651
}

IPConfig/Views/IPConfigDetailView.xaml.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public IPConfigDetailView()
2929

3030
WeakReferenceMessenger.Default.Register<IPConfigDetailView, KeyPressMessage>(this,
3131
(r, m) => {
32-
if (m.Gesture == "F2")
32+
if (m.GestureEquals("F2"))
3333
{
3434
tbIPConfigName.Focus();
3535
tbIPConfigName.SelectAll();

IPConfig/Views/IPConfigListView.xaml.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,11 @@ public IPConfigListView()
3737

3838
WeakReferenceMessenger.Default.Register<IPConfigListView, KeyPressMessage>(this,
3939
(r, m) => {
40-
if (m.Gesture == "Ctrl+F")
40+
if (m.GestureEquals("Ctrl+F"))
4141
{
4242
tbSearchBar.Focus();
4343
}
44-
else if (m.Gesture == "Esc" && Keyboard.FocusedElement == tbSearchBar)
44+
else if (m.GestureEquals("Esc") && Keyboard.FocusedElement == tbSearchBar)
4545
{
4646
string text = tbSearchBar.Text;
4747

@@ -52,7 +52,7 @@ public IPConfigListView()
5252
lbIPConfigs.Focus();
5353
}
5454
}
55-
else if (m.Gesture == "F9")
55+
else if (m.GestureEquals("F9"))
5656
{
5757
lbIPConfigs.UpdateLayout();
5858

0 commit comments

Comments
 (0)