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

Commit 65f5286

Browse files
committed
Finish fixing layout maker
1 parent f010f36 commit 65f5286

File tree

1 file changed

+68
-43
lines changed

1 file changed

+68
-43
lines changed

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

Lines changed: 68 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1-
using System;
2-
using System.Collections.Generic;
1+
using System.Collections.Generic;
32
using System.Linq;
43
using InvvardDev.EZLayoutDisplay.Desktop.Model;
54
using InvvardDev.EZLayoutDisplay.Desktop.Model.Dictionary;
65
using InvvardDev.EZLayoutDisplay.Desktop.Model.Enum;
6+
using InvvardDev.EZLayoutDisplay.Desktop.Model.Ez;
7+
using InvvardDev.EZLayoutDisplay.Desktop.Model.Ez.Content;
8+
using InvvardDev.EZLayoutDisplay.Desktop.Model.ZsaModels;
79
using NLog;
810

911
namespace InvvardDev.EZLayoutDisplay.Desktop.Helper
@@ -53,10 +55,10 @@ private EZLayer PrepareEZLayer(ErgodoxLayer ergodoxLayer)
5355
foreach (var ergodoxKey in ergodoxLayer.Keys)
5456
{
5557
var keyDisplayMode = SelectKeyDisplayMode(ergodoxKey);
56-
var key = PrepareKeyLabels(ergodoxKey, keyDisplayMode);
57-
key.Color = GetColor(ergodoxKey.GlowColor, layer.Color);
58+
var key = PrepareKeyContent(ergodoxKey, keyDisplayMode);
59+
key.GlowColor = GetColor(ergodoxKey.GlowColor, layer.Color);
5860

59-
layer.EZKeys.Add(key);
61+
layer.Keys.Add(key);
6062
}
6163

6264
Logger.DebugOutputParam(nameof(layer), layer);
@@ -66,45 +68,73 @@ private EZLayer PrepareEZLayer(ErgodoxLayer ergodoxLayer)
6668

6769
private KeyDisplayMode SelectKeyDisplayMode(ErgodoxKey ergodoxKey)
6870
{
69-
var featureCount = new List<ErgodoxKeyFeature> {
71+
var features = new List<ErgodoxKeyFeature> {
7072
ergodoxKey.Tap,
7173
ergodoxKey.Hold,
7274
ergodoxKey.DoubleTap,
7375
ergodoxKey.TapHold
7476
}.Where(f => f != null)
75-
.Count();
77+
.ToList();
78+
79+
var featureCount = features.Count;
80+
KeyDefinition firstKeyDefinition = null;
81+
if (features.Any())
82+
{
83+
firstKeyDefinition = GetKeyDefinition(features.First().Code);
84+
}
7685

77-
var displayMode = featureCount switch
86+
var category = featureCount switch
7887
{
79-
_ when !string.IsNullOrWhiteSpace(ergodoxKey.CustomLabel) => KeyDisplayMode.CustomLabel,
80-
1 => KeyDisplayMode.SingleFeature,
81-
> 1 => KeyDisplayMode.DoubleFeature,
82-
_ => KeyDisplayMode.None,
88+
0 => KeyDisplayMode.Empty,
89+
1 when ergodoxKey.Tap?.Macro != null => KeyDisplayMode.Macro,
90+
1 when firstKeyDefinition.Category == KeyCategory.Modifier => KeyDisplayMode.Modifier,
91+
1 when firstKeyDefinition.Category == KeyCategory.Shine => KeyDisplayMode.ColorControl,
92+
1 when !string.IsNullOrWhiteSpace(ergodoxKey.CustomLabel) => KeyDisplayMode.CustomLabel,
93+
>= 2 => KeyDisplayMode.DualFunction,
94+
_ => KeyDisplayMode.Base
8395
};
8496

85-
return displayMode;
97+
return category;
8698
}
8799

88-
private EZKey PrepareKeyLabels(ErgodoxKey ergodoxKey, KeyDisplayMode displayMode)
100+
private Key PrepareKeyContent(ErgodoxKey ergodoxKey, KeyDisplayMode displayMode)
89101
{
90102
Logger.TraceMethod();
91103
Logger.DebugInputParam(nameof(ergodoxKey), ergodoxKey);
104+
Logger.DebugInputParam(nameof(displayMode), displayMode);
92105

93-
var key = new EZKey
94-
{
95-
DisplayMode = displayMode
96-
};
106+
var features = new List<ErgodoxKeyFeature> {
107+
ergodoxKey.Tap,
108+
ergodoxKey.Hold,
109+
ergodoxKey.DoubleTap,
110+
ergodoxKey.TapHold }
111+
.Where(f => f != null)
112+
.ToList();
113+
114+
var key = new Key() { DisplayMode = displayMode };
97115

98-
switch (key.DisplayMode)
116+
switch (displayMode)
99117
{
100118
case KeyDisplayMode.CustomLabel:
101-
key.Primary = new KeyFeature(ergodoxKey.CustomLabel);
119+
key.Primary = new BaseContent { Label = ergodoxKey.CustomLabel };
120+
break;
121+
case KeyDisplayMode.Macro:
122+
key.Primary = new BaseContent { Label = "Macro" };
102123
break;
103-
case KeyDisplayMode.SingleFeature:
104-
(key.Primary, _) = GetDisplayedFeature(ergodoxKey);
124+
case KeyDisplayMode.Base:
125+
case KeyDisplayMode.Modifier:
126+
case KeyDisplayMode.ColorControl:
127+
key.Primary = GetDisplayedFeature(features[0]);
105128
break;
106-
case KeyDisplayMode.DoubleFeature:
107-
(key.Primary, key.Secondary) = GetDisplayedFeature(ergodoxKey, 2);
129+
case KeyDisplayMode.DualFunction:
130+
key.Primary = GetDisplayedFeature(features[0]);
131+
key.Secondary = GetDisplayedFeature(features[1]);
132+
133+
if (key.Primary.Label.Length > 1) key.Primary.Tag = "";
134+
if (key.Secondary.Label.Length > 1) key.Secondary.Tag = "";
135+
break;
136+
default:
137+
key.Primary = new BaseContent { Label = string.Empty };
108138
break;
109139
}
110140

@@ -113,29 +143,24 @@ private EZKey PrepareKeyLabels(ErgodoxKey ergodoxKey, KeyDisplayMode displayMode
113143
return key;
114144
}
115145

116-
private (KeyFeature, KeyFeature) GetDisplayedFeature(ErgodoxKey ergodoxKey, int count = 1)
146+
private BaseContent GetDisplayedFeature(ErgodoxKeyFeature feature)
117147
{
118-
var features = new List<ErgodoxKeyFeature> {
119-
ergodoxKey.Tap,
120-
ergodoxKey.Hold,
121-
ergodoxKey.DoubleTap,
122-
ergodoxKey.TapHold }.Where(f => f != null).ToList();
148+
var mods = ProcessModifiers(feature.Modifiers);
149+
var keyDefinition = GetKeyDefinition(feature.Code);
123150

124-
KeyFeature[] keyFeatures = new KeyFeature[2];
125-
126-
for (int i = 0; i < count; i++)
151+
var keyFeature = keyDefinition switch
127152
{
128-
var feature = features.Count >= i + 1 ? features[i] : null;
129-
if (feature != null)
130-
{
131-
var mods = ProcessModifiers(feature.Modifiers);
132-
var keyDefinition = GetKeyDefinition(feature.Code);
133-
134-
keyFeatures[i] = new KeyFeature(keyDefinition.Label, keyDefinition.IsGlyph, keyDefinition.Tag, mods);
135-
}
136-
}
153+
// ColorControl Key - Color picker
154+
{ KeyCode: "RGB" } => new ColorPicker { Label = keyDefinition.Label, ColorCode = feature.Color },
155+
// Layer toggle key
156+
{ Category: KeyCategory.Layer } => new Layer { Label = keyDefinition.Label, Id = feature.Layer.Value },
157+
{ IsGlyph: true } => new Glyph { Label = keyDefinition.Label, Modifier = mods },
158+
// Modded label
159+
_ when !string.IsNullOrWhiteSpace(mods) => new BaseContent { Label = $"{mods}+{keyDefinition.Label}", Tag = keyDefinition.Tag },
160+
_ => new BaseContent { Label = keyDefinition.Label, Tag = keyDefinition.Tag }
161+
};
137162

138-
return (keyFeatures[0], keyFeatures[1]);
163+
return keyFeature;
139164
}
140165

141166
private static string GetColor(string keyColor, string defaultColor = "#777")

0 commit comments

Comments
 (0)