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

Commit a5418e7

Browse files
committed
Merge branch 'fix/issue-96-loading-revision' of https://github.com/Invvard/EZLayoutDisplay into fix/issue-96-loading-revision
2 parents accad26 + c4cb8db commit a5418e7

File tree

4 files changed

+606
-628
lines changed

4 files changed

+606
-628
lines changed

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

Lines changed: 34 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -22,20 +22,22 @@ public EZLayoutMaker()
2222
_keyDefinitionDictionary = new KeyDefinitionDictionary();
2323
}
2424

25-
public EZLayout PrepareEZLayout(ErgodoxLayout ergodoxLayout)
25+
public EZLayout PrepareEZLayout(ErgodoxLayout ergodoxLayout, string layoutRevisionIds)
2626
{
2727
Logger.TraceMethod();
2828
Logger.DebugInputParam(nameof(ergodoxLayout), ergodoxLayout);
2929

30-
var ezLayout = new EZLayout {
31-
HashId = ergodoxLayout.HashId,
32-
Name = ergodoxLayout.Title
33-
};
30+
var ezLayout = new EZLayout { HashId = ergodoxLayout.HashId, Name = ergodoxLayout.Title };
3431

35-
foreach (var ergodoxLayer in ergodoxLayout.Revisions.First().Layers)
32+
var ergodoxLayers = ergodoxLayout.Revisions.FirstOrDefault(r => r.HashId == layoutRevisionIds)?.Layers ?? ergodoxLayout.Revisions.First().Layers;
33+
34+
if (ergodoxLayers?.Any() != null)
3635
{
37-
EZLayer ezLayer = PrepareEZLayer(ergodoxLayer);
38-
ezLayout.EZLayers.Add(ezLayer);
36+
foreach (var ergodoxLayer in ergodoxLayers)
37+
{
38+
var ezLayer = PrepareEZLayer(ergodoxLayer);
39+
ezLayout.EZLayers.Add(ezLayer);
40+
}
3941
}
4042

4143
Logger.DebugOutputParam(nameof(ezLayout), ezLayout);
@@ -48,15 +50,11 @@ private EZLayer PrepareEZLayer(ErgodoxLayer ergodoxLayer)
4850
Logger.TraceMethod();
4951
Logger.DebugInputParam(nameof(ergodoxLayer), ergodoxLayer);
5052

51-
var layer = new EZLayer {
52-
Index = ergodoxLayer.Position,
53-
Name = ergodoxLayer.Title,
54-
Color = GetColor(ergodoxLayer.Color)
55-
};
53+
var layer = new EZLayer { Index = ergodoxLayer.Position, Name = ergodoxLayer.Title, Color = GetColor(ergodoxLayer.Color) };
5654

5755
foreach (var ergodoxKey in ergodoxLayer.Keys)
5856
{
59-
EZKey key = PrepareKeyLabels(ergodoxKey, layer.Color);
57+
var key = PrepareKeyLabels(ergodoxKey, layer.Color);
6058

6159
layer.EZKeys.Add(key);
6260
}
@@ -71,7 +69,7 @@ private EZKey PrepareKeyLabels(ErgodoxKey ergodoxKey, string layerColor)
7169
Logger.TraceMethod();
7270
Logger.DebugInputParam(nameof(ergodoxKey), ergodoxKey);
7371

74-
KeyDefinition keyDefinition = GetKeyDefinition(ergodoxKey.Code);
72+
var keyDefinition = GetKeyDefinition(ergodoxKey.Code);
7573

7674
/** Every category has a label, so no need to make a special case :
7775
*
@@ -88,37 +86,32 @@ private EZKey PrepareKeyLabels(ErgodoxKey ergodoxKey, string layerColor)
8886
* KeyCategory.System
8987
*
9088
**/
91-
EZKey key = new EZKey {
92-
KeyCategory = keyDefinition.KeyCategory,
93-
Label = new KeyLabel(keyDefinition.Label, keyDefinition.IsGlyph),
94-
Color = GetColor(ergodoxKey.GlowColor, layerColor),
95-
DisplayType = KeyDisplayType.SimpleLabel
96-
};
89+
var key = new EZKey
90+
{
91+
KeyCategory = keyDefinition.KeyCategory,
92+
Label = new KeyLabel(keyDefinition.Label, keyDefinition.IsGlyph),
93+
Color = GetColor(ergodoxKey.GlowColor, layerColor),
94+
DisplayType = KeyDisplayType.SimpleLabel
95+
};
9796

9897
switch (keyDefinition.KeyCategory)
9998
{
10099
case KeyCategory.DualFunction:
101100

102101
if (AddCommandLabel(ergodoxKey, key))
103-
{
104102
key.DisplayType = KeyDisplayType.ModifierUnder;
105-
}
106103
else
107-
{
108104
key.KeyCategory = KeyCategory.Modifier;
109-
}
110105

111106
break;
112107
case KeyCategory.Layer:
113108
case KeyCategory.LayerShortcuts:
114109
key.Label.Content = string.Format(key.Label.Content, ergodoxKey.Layer.ToString());
115110

116-
if (AddCommandLabel(ergodoxKey, key))
117-
{
118-
key.DisplayType = KeyDisplayType.ModifierUnder;
119-
}
111+
if (AddCommandLabel(ergodoxKey, key)) key.DisplayType = KeyDisplayType.ModifierUnder;
120112

121113
break;
114+
122115
case KeyCategory.Modifier:
123116

124117
if (ergodoxKey.Code == KeyCodeOsm && !IsCommandEmpty(ergodoxKey.Command))
@@ -137,6 +130,7 @@ private EZKey PrepareKeyLabels(ErgodoxKey ergodoxKey, string layerColor)
137130
key.DisplayType = KeyDisplayType.SimpleLabel;
138131

139132
break;
133+
140134
case KeyCategory.Shortcuts:
141135

142136
if (!IsCommandEmpty(ergodoxKey.Command))
@@ -196,10 +190,10 @@ private KeyDefinition GetKeyDefinition(string ergodoxKeyCode)
196190
}
197191

198192
/// <summary>
199-
/// Apply the command label.
193+
/// Apply the command label.
200194
/// </summary>
201-
/// <param name="ergodoxKey">The <see cref="ErgodoxKey"/> containing the command to be applied.</param>
202-
/// <param name="key">The <see cref="EZKey"/> to apply the command to.</param>
195+
/// <param name="ergodoxKey">The <see cref="ErgodoxKey" /> containing the command to be applied.</param>
196+
/// <param name="key">The <see cref="EZKey" /> to apply the command to.</param>
203197
/// <returns><c>True</c> if command has been applied.</returns>
204198
private bool AddCommandLabel(ErgodoxKey ergodoxKey, EZKey key)
205199
{
@@ -229,45 +223,21 @@ private List<EZModifier> GetModifiersApplied(ErgodoxModifiers ergodoxModifiers)
229223
var keyModifiers = new KeyModifierDictionary();
230224
var mods = new List<EZModifier>();
231225

232-
if (ergodoxModifiers.LeftAlt)
233-
{
234-
mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.LeftAlt));
235-
}
226+
if (ergodoxModifiers.LeftAlt) mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.LeftAlt));
236227

237-
if (ergodoxModifiers.LeftCtrl)
238-
{
239-
mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.LeftCtrl));
240-
}
228+
if (ergodoxModifiers.LeftCtrl) mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.LeftCtrl));
241229

242-
if (ergodoxModifiers.LeftShift)
243-
{
244-
mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.LeftShift));
245-
}
230+
if (ergodoxModifiers.LeftShift) mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.LeftShift));
246231

247-
if (ergodoxModifiers.LeftWin)
248-
{
249-
mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.LeftWin));
250-
}
232+
if (ergodoxModifiers.LeftWin) mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.LeftWin));
251233

252-
if (ergodoxModifiers.RightAlt)
253-
{
254-
mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.RightAlt));
255-
}
234+
if (ergodoxModifiers.RightAlt) mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.RightAlt));
256235

257-
if (ergodoxModifiers.RightCtrl)
258-
{
259-
mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.RightCtrl));
260-
}
236+
if (ergodoxModifiers.RightCtrl) mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.RightCtrl));
261237

262-
if (ergodoxModifiers.RightShift)
263-
{
264-
mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.RightShift));
265-
}
238+
if (ergodoxModifiers.RightShift) mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.RightShift));
266239

267-
if (ergodoxModifiers.RightWin)
268-
{
269-
mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.RightWin));
270-
}
240+
if (ergodoxModifiers.RightWin) mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.RightWin));
271241

272242
return mods.OrderBy(m => m.Index).ToList();
273243
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public EZLayout PrepareEZLayout(ErgodoxLayout ergodoxLayout, string layoutRevisi
5858
Logger.TraceMethod();
5959

6060
var ezLayoutMaker = new EZLayoutMaker();
61-
EZLayout ezLayout = ezLayoutMaker.PrepareEZLayout(ergodoxLayout);
61+
EZLayout ezLayout = ezLayoutMaker.PrepareEZLayout(ergodoxLayout, layoutRevisionIds);
6262

6363
return ezLayout;
6464
}

src/InvvardDev.EZLayoutDisplay.Tests/Helper/EZLayoutMakerTest.cs

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ namespace InvvardDev.EZLayoutDisplay.Tests.Helper
1010
{
1111
public class EZLayoutMakerTest
1212
{
13+
private const string HashId = "hashid-1";
14+
1315
private static ErgodoxLayout InitializeDataTree()
1416
{
1517
return new ErgodoxLayout
@@ -18,7 +20,7 @@ private static ErgodoxLayout InitializeDataTree()
1820
HashId = "",
1921
Revisions = new List<Revision>
2022
{
21-
new Revision { Layers = new List<ErgodoxLayer> { new ErgodoxLayer() { Color = "", Title = "", Position = 0, Keys = new List<ErgodoxKey>() } } }
23+
new Revision { HashId = HashId, Layers = new List<ErgodoxLayer> { new ErgodoxLayer() { Color = "", Title = "", Position = 0, Keys = new List<ErgodoxKey>() } } }
2224
}
2325
};
2426
}
@@ -29,13 +31,13 @@ public void PrepareEZLayout_InitializeEZLayout(string expectedTitle, string expe
2931
{
3032
// Arrange
3133
var revision = new Revision { Layers = new List<ErgodoxLayer>() };
32-
ErgodoxLayout ergodoxLayout = new ErgodoxLayout { Title = expectedTitle, HashId = expectedHashId, Revisions = new List<Revision>() };
34+
ErgodoxLayout ergodoxLayout = new ErgodoxLayout { Title = expectedTitle, HashId = expectedHashId, Revisions = new List<Revision> { new Revision { HashId = HashId } } };
3335
ergodoxLayout.Revisions.Add(revision);
3436
EZLayout ezLayoutResult;
3537

3638
// Act
3739
var ezLayoutMaker = new EZLayoutMaker();
38-
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout);
40+
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout, HashId);
3941

4042
// Assert
4143
Assert.Equal(expectedTitle, ezLayoutResult.Name);
@@ -48,13 +50,16 @@ public void PrepareEZLayout_InitializeEZLayer(int expectedIndex, string expected
4850
{
4951
// Arrange
5052
var ergodoxLayer = new ErgodoxLayer() { Color = expectedColor, Title = expectedTitle, Position = expectedIndex, Keys = new List<ErgodoxKey>() };
51-
ErgodoxLayout ergodoxLayout = new ErgodoxLayout { Title = "", HashId = "", Revisions = new List<Revision> { new Revision { Layers = new List<ErgodoxLayer> { ergodoxLayer } } } };
53+
ErgodoxLayout ergodoxLayout = new ErgodoxLayout
54+
{
55+
Title = "", HashId = "", Revisions = new List<Revision> { new Revision { HashId = HashId, Layers = new List<ErgodoxLayer> { ergodoxLayer } } }
56+
};
5257

5358
EZLayout ezLayoutResult;
5459

5560
// Act
5661
var ezLayoutMaker = new EZLayoutMaker();
57-
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout);
62+
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout, HashId);
5863

5964
// Assert
6065
Assert.Single(ezLayoutResult.EZLayers);
@@ -75,13 +80,16 @@ public void PrepareEZLayout_ColorKey(string layerColor, string keyColor, string
7580
{
7681
// Arrange
7782
var ergodoxLayer = new ErgodoxLayer { Color = layerColor, Keys = new List<ErgodoxKey> { new ErgodoxKey { GlowColor = keyColor } } };
78-
ErgodoxLayout ergodoxLayout = new ErgodoxLayout { Title = "", HashId = "", Revisions = new List<Revision> { new Revision { Layers = new List<ErgodoxLayer> { ergodoxLayer } } } };
83+
ErgodoxLayout ergodoxLayout = new ErgodoxLayout
84+
{
85+
Title = "", HashId = "", Revisions = new List<Revision> { new Revision { HashId = HashId, Layers = new List<ErgodoxLayer> { ergodoxLayer } } }
86+
};
7987

8088
EZLayout ezLayoutResult;
8189

8290
// Act
8391
var ezLayoutMaker = new EZLayoutMaker();
84-
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout);
92+
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout, HashId);
8593

8694
// Assert
8795
Assert.Equal(expectedColor, ezLayoutResult.EZLayers.First().EZKeys.First().Color);
@@ -99,7 +107,7 @@ public void PrepareEZLayout_KeyCodeUnknown()
99107

100108
// Act
101109
var ezLayoutMaker = new EZLayoutMaker();
102-
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout);
110+
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout, HashId);
103111

104112
// Assert
105113
Assert.Single(ezLayoutResult.EZLayers);
@@ -121,7 +129,7 @@ public void PrepareEZLayout_InitializeEZKey(string expectedKeyCode, string expec
121129

122130
// Act
123131
var ezLayoutMaker = new EZLayoutMaker();
124-
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout);
132+
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout, HashId);
125133

126134
// Assert
127135
Assert.Single(ezLayoutResult.EZLayers);
@@ -157,7 +165,7 @@ public void PrepareEZLayout_KeyCategoryWithSimpleLabel(string keyCode, string ex
157165

158166
// Act
159167
var ezLayoutMaker = new EZLayoutMaker();
160-
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout);
168+
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout, HashId);
161169

162170
// Assert
163171
Assert.Single(ezLayoutResult.EZLayers);
@@ -183,7 +191,7 @@ public void PrepareEZLayout_KeyCategoryOSM(string keyCode, string command, strin
183191

184192
// Act
185193
var ezLayoutMaker = new EZLayoutMaker();
186-
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout);
194+
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout, HashId);
187195

188196
// Assert
189197
Assert.Single(ezLayoutResult.EZLayers);
@@ -223,7 +231,7 @@ public void PrepareEZLayout_KeyCategoryLayer(string keyCode, string expectedLabe
223231

224232
// Act
225233
var ezLayoutMaker = new EZLayoutMaker();
226-
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout);
234+
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout, HashId);
227235

228236
// Assert
229237
Assert.Single(ezLayoutResult.EZLayers);
@@ -252,7 +260,7 @@ public void PrepareEZLayout_KeyCategoryLayerShortcut(string keyCode,
252260

253261
// Act
254262
var ezLayoutMaker = new EZLayoutMaker();
255-
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout);
263+
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout, HashId);
256264

257265
// Assert
258266
Assert.Single(ezLayoutResult.EZLayers);
@@ -294,7 +302,7 @@ public void PrepareEZLayout_KeyCategoryWithGlyphs(string keyCode, string expecte
294302

295303
// Act
296304
var ezLayoutMaker = new EZLayoutMaker();
297-
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout);
305+
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout, HashId);
298306

299307
// Assert
300308
Assert.Single(ezLayoutResult.EZLayers);
@@ -325,7 +333,7 @@ public void PrepareEZLayout_KeyCategoryDualFunction(string keyCode,
325333

326334
// Act
327335
var ezLayoutMaker = new EZLayoutMaker();
328-
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout);
336+
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout, HashId);
329337

330338
// Assert
331339
Assert.Single(ezLayoutResult.EZLayers);
@@ -359,7 +367,7 @@ public void PrepareEZLayout_KeyCategoryShortcuts(string keyCode, string command,
359367

360368
// Act
361369
var ezLayoutMaker = new EZLayoutMaker();
362-
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout);
370+
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout, HashId);
363371

364372
// Assert
365373
Assert.Single(ezLayoutResult.EZLayers);
@@ -428,7 +436,7 @@ public void PrepareEZLayout_ProcessModifiers(bool leftAlt,
428436

429437
// Act
430438
var ezLayoutMaker = new EZLayoutMaker();
431-
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout);
439+
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout, HashId);
432440

433441
// Assert
434442
Assert.Single(ezLayoutResult.EZLayers);

0 commit comments

Comments
 (0)