private void UpdateLists(SwitcherConfig config) { if (_config == config) { return; } _config = config; _inputList.ClearList(true); _outputList.ClearList(true); var inputs = config.Inputs.ToDictionary(conf => conf, conf => AudioFadersViewController.TryGetColor(conf.Color)); var ipConfList = inputs .Where(item => item.Value != null) .OrderByDescending(item => item.Value.Priority) .ThenBy(item => item.Key.Name) .Select(item => item.Key) .ToList(); ipConfList.AddRange(inputs.Where(item => item.Value == null).Select(item => item.Key)); foreach (var input in ipConfList) { var item = _inputList.AddItem(_switcher.Chassis.Inputs[input.Number], true); if (item == null) { continue; } try { if (!string.IsNullOrEmpty(input.Color)) { item.SetColourTag(AudioFadersViewController.TryGetColor(input.Color).ColorHex); } } catch { item.SetColourTag("#333333"); } } var outputs = config.Outputs.ToDictionary(conf => conf, conf => AudioFadersViewController.TryGetColor(conf.Color)); var opConfList = outputs .Where(item => item.Value != null) .OrderByDescending(item => item.Value.Priority) .ThenBy(item => item.Key.Name) .Select(item => item.Key) .ToList(); opConfList.AddRange(outputs.Where(item => item.Value == null).Select(item => item.Key)); foreach (var output in opConfList) { var item = _outputList.AddItem(_switcher.Chassis.Outputs[output.Number], true); if (item == null) { continue; } try { if (!string.IsNullOrEmpty(output.Color)) { item.SetColourTag(AudioFadersViewController.TryGetColor(output.Color).ColorHex); } } catch { item.SetColourTag("#333333"); } } _inputList.SetListSizeToItemCount(); _outputList.SetListSizeToItemCount(); }