Fix Windows channel tree ordering
This commit is contained in:
@@ -575,25 +575,21 @@ public partial class MainForm : Form
|
||||
tvChannels.BeginUpdate();
|
||||
tvChannels.Nodes.Clear();
|
||||
|
||||
var byParent = _channels
|
||||
.GroupBy(c => c.ParentId)
|
||||
.ToDictionary(g => g.Key, g => g.ToList());
|
||||
|
||||
void AddChildren(TreeNodeCollection nodes, uint parentId)
|
||||
void AddChildren(TreeNodeCollection nodes, IReadOnlyList<ChannelHierarchyItem> children)
|
||||
{
|
||||
if (!byParent.TryGetValue(parentId, out var kids)) return;
|
||||
foreach (var ch in kids.OrderBy(c => c.Name))
|
||||
foreach (ChannelHierarchyItem item in children)
|
||||
{
|
||||
ChannelInfo ch = item.Channel;
|
||||
int count = _users.Values.Count(u => u.ChannelId == ch.Id);
|
||||
var label = $"{ch.Name} ({count})";
|
||||
if (ch.PasswordProtected) label += " [password]";
|
||||
if (ch.Id == _currentChannelId) label += " ►";
|
||||
var node = new TreeNode(label) { Tag = ch.Id };
|
||||
nodes.Add(node);
|
||||
AddChildren(node.Nodes, ch.Id);
|
||||
AddChildren(node.Nodes, item.Children);
|
||||
}
|
||||
}
|
||||
AddChildren(tvChannels.Nodes, 0);
|
||||
AddChildren(tvChannels.Nodes, ChannelHierarchy.Build(_channels));
|
||||
tvChannels.ExpandAll();
|
||||
SeekAndSelect(tvChannels.Nodes, toSelect);
|
||||
tvChannels.EndUpdate();
|
||||
|
||||
Reference in New Issue
Block a user