Skip to content
This repository was archived by the owner on Nov 25, 2023. It is now read-only.

Commit 979cf09

Browse files
committed
Refactor key templates
1 parent 65f5286 commit 979cf09

File tree

4 files changed

+36
-15
lines changed

4 files changed

+36
-15
lines changed

src/InvvardDev.EZLayoutDisplay.Desktop/Helper/KeyContentTemplateSelector.cs

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,14 @@ namespace InvvardDev.EZLayoutDisplay.Desktop.Helper
88
{
99
public class KeyContentTemplateSelector : DataTemplateSelector
1010
{
11-
public DataTemplate CustomLabelDataTemplate { private get; set; }
1211
public DataTemplate SingleFeatureDataTemplate { private get; set; }
1312
public DataTemplate DoubleFeatureDataTemplate { private get; set; }
1413

1514
public override DataTemplate SelectTemplate(object item, DependencyObject container)
16-
{
17-
if (!(item is KeyTemplate key)) return CustomLabelDataTemplate;
18-
19-
return key.EZKey.DisplayMode switch
15+
=> item switch
2016
{
21-
KeyDisplayMode.SingleFeature => SingleFeatureDataTemplate,
22-
KeyDisplayMode.DoubleFeature => DoubleFeatureDataTemplate,
23-
_ => CustomLabelDataTemplate
17+
KeyTemplate { Key.DisplayMode: KeyDisplayMode.DualFunction } => DoubleFeatureDataTemplate,
18+
_ => SingleFeatureDataTemplate
2419
};
25-
}
2620
}
2721
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using System.Windows;
2+
using System.Windows.Controls;
3+
using InvvardDev.EZLayoutDisplay.Desktop.Model.Ez.Content;
4+
5+
namespace InvvardDev.EZLayoutDisplay.Desktop.Helper
6+
{
7+
public class KeyFeatureTemplateSelector : DataTemplateSelector
8+
{
9+
public DataTemplate SimpleLabelDataTemplate { private get; set; }
10+
public DataTemplate GlyphDataTemplate { private get; set; }
11+
public DataTemplate ModdedGlyphDataTemplate { private get; set; }
12+
public DataTemplate LayerDataTemplate { private get; set; }
13+
public DataTemplate ColorPickerDataTemplate { private get; set; }
14+
15+
public override DataTemplate SelectTemplate(object item, DependencyObject container)
16+
{
17+
return item switch
18+
{
19+
Glyph glyph when !string.IsNullOrWhiteSpace(glyph.Modifier) => ModdedGlyphDataTemplate,
20+
Glyph glyph when string.IsNullOrWhiteSpace(glyph.Modifier) => GlyphDataTemplate,
21+
Layer => LayerDataTemplate,
22+
ColorPicker => ColorPickerDataTemplate,
23+
_ => SimpleLabelDataTemplate
24+
};
25+
}
26+
}
27+
}

src/InvvardDev.EZLayoutDisplay.Desktop/InvvardDev.EZLayoutDisplay.Desktop.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@
8181
<Generator>MSBuild:Compile</Generator>
8282
<SubType>Designer</SubType>
8383
</ApplicationDefinition>
84+
<Compile Include="Helper\KeyFeatureTemplateSelector.cs" />
8485
<Compile Include="Helper\KeyContentTemplateSelector.cs" />
8586
<Compile Include="Helper\LoggerHelper.cs" />
8687
<Compile Include="Model\Enum\KeyDisplayMode.cs" />

src/InvvardDev.EZLayoutDisplay.Desktop/Service/Implementation/SettingsService.cs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public class SettingsService : ISettingsService
2323

2424
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
2525
private readonly Settings _settings;
26+
private readonly JsonSerializerSettings _serializerSettings;
2627

2728
#endregion
2829

@@ -34,6 +35,8 @@ public SettingsService(Settings settings)
3435

3536
_settings = settings;
3637
_defaultHotkey = new Hotkey(Keys.Space, ModifierKeys.Alt, ModifierKeys.Control, ModifierKeys.Shift, ModifierKeys.WindowsKey);
38+
39+
_serializerSettings = new JsonSerializerSettings { TypeNameHandling= TypeNameHandling.Objects };
3740
}
3841

3942
#endregion
@@ -116,7 +119,7 @@ public EZLayout EZLayout
116119

117120
ezLayout = string.IsNullOrWhiteSpace(setting)
118121
? new EZLayout()
119-
: JsonConvert.DeserializeObject<EZLayout>(setting);
122+
: JsonConvert.DeserializeObject<EZLayout>(setting, _serializerSettings);
120123
Logger.Debug("Loaded Layout = {@ezLayout}", ezLayout);
121124
}
122125
catch (Exception ex)
@@ -135,7 +138,7 @@ public EZLayout EZLayout
135138
Logger.TraceMethod();
136139
Logger.DebugInputParam(nameof(EZLayout), value);
137140

138-
var setting = JsonConvert.SerializeObject(value);
141+
var setting = JsonConvert.SerializeObject(value, _serializerSettings);
139142
_settings[SettingsName.EZLayout] = setting;
140143
}
141144
}
@@ -157,9 +160,5 @@ public void Cancel()
157160
}
158161

159162
#endregion
160-
161-
#region Private methods
162-
163-
#endregion
164163
}
165164
}

0 commit comments

Comments
 (0)