예제 #1
0
        private IReadOnlyCollection <Tuple <int?, ButtonType> > GetButtonList(ButtonType buttonType, DeviceDefinition device)
        {
            if (device.Sensors == null)
            {
                return(new Tuple <int?, ButtonType> [0]);
            }

            var buttonTypeName = buttonType.GetAttribute <DisplayAttribute>()?.Name ?? buttonType.ToString();

            var buttons = new List <Tuple <int?, ButtonType> >();

            foreach (var sensor in device.Sensors)
            {
                // If there's only a single button we don't need to number it.
                if (sensor.Type == buttonTypeName || sensor.Type == $"1-{buttonTypeName}")
                {
                    buttons.Add(new Tuple <int?, ButtonType>(null, buttonType));
                }
                else if (Regex.IsMatch(sensor.Type, $@"\d+-{buttonTypeName}"))
                {
                    var count = int.Parse(sensor.Type.Split('-').First());
                    for (var i = 1; i <= count; i++)
                    {
                        buttons.Add(new Tuple <int?, ButtonType>(i, buttonType));
                    }
                }
            }

            return(buttons);
        }