// Token: 0x060073CD RID: 29645 RVA: 0x00212084 File Offset: 0x00210284 private void RestoreGrouping(LiveShapingItem lsi, CollectionViewGroupRoot.GroupTreeNode node, int level, List <AbandonedGroupItem> deleteList) { if (node.ContainsItem) { object obj = this.GetGroupName(lsi.Item, node.Group.GroupBy, level); if (obj == CollectionViewGroupRoot.UseAsItemDirectly) { goto IL_12E; } ICollection collection = obj as ICollection; ArrayList arrayList = (collection == null) ? null : new ArrayList(collection); for (CollectionViewGroupRoot.GroupTreeNode groupTreeNode = node.FirstChild; groupTreeNode != null; groupTreeNode = groupTreeNode.Sibling) { if (arrayList == null) { if (object.Equals(obj, groupTreeNode.Group.Name)) { groupTreeNode.ContainsItem = true; obj = DependencyProperty.UnsetValue; break; } } else if (arrayList.Contains(groupTreeNode.Group.Name)) { groupTreeNode.ContainsItem = true; arrayList.Remove(groupTreeNode.Group.Name); } } if (arrayList == null) { if (obj != DependencyProperty.UnsetValue) { this.AddToSubgroup(lsi.Item, lsi, node.Group, level, obj, false); goto IL_12E; } goto IL_12E; } else { using (IEnumerator enumerator = arrayList.GetEnumerator()) { while (enumerator.MoveNext()) { object name = enumerator.Current; this.AddToSubgroup(lsi.Item, lsi, node.Group, level, name, false); } goto IL_12E; } } } if (node.ContainsItemDirectly) { deleteList.Add(new AbandonedGroupItem(lsi, node.Group)); } IL_12E: for (CollectionViewGroupRoot.GroupTreeNode groupTreeNode2 = node.FirstChild; groupTreeNode2 != null; groupTreeNode2 = groupTreeNode2.Sibling) { this.RestoreGrouping(lsi, groupTreeNode2, level + 1, deleteList); } }
// Token: 0x060073CE RID: 29646 RVA: 0x002121F4 File Offset: 0x002103F4 private CollectionViewGroupRoot.GroupTreeNode BuildGroupTree(LiveShapingItem lsi) { CollectionViewGroupInternal collectionViewGroupInternal = lsi.ParentGroup; if (collectionViewGroupInternal != null) { CollectionViewGroupRoot.GroupTreeNode groupTreeNode = new CollectionViewGroupRoot.GroupTreeNode { Group = collectionViewGroupInternal, ContainsItemDirectly = true }; for (;;) { CollectionViewGroupInternal collectionViewGroupInternal2 = collectionViewGroupInternal; collectionViewGroupInternal = collectionViewGroupInternal2.Parent; if (collectionViewGroupInternal == null) { break; } CollectionViewGroupRoot.GroupTreeNode groupTreeNode2 = new CollectionViewGroupRoot.GroupTreeNode { Group = collectionViewGroupInternal, FirstChild = groupTreeNode }; groupTreeNode = groupTreeNode2; } return(groupTreeNode); } List <CollectionViewGroupInternal> parentGroups = lsi.ParentGroups; List <CollectionViewGroupRoot.GroupTreeNode> list = new List <CollectionViewGroupRoot.GroupTreeNode>(parentGroups.Count + 1); CollectionViewGroupRoot.GroupTreeNode result = null; foreach (CollectionViewGroupInternal group in parentGroups) { CollectionViewGroupRoot.GroupTreeNode groupTreeNode = new CollectionViewGroupRoot.GroupTreeNode { Group = group, ContainsItemDirectly = true }; list.Add(groupTreeNode); } for (int i = 0; i < list.Count; i++) { CollectionViewGroupRoot.GroupTreeNode groupTreeNode = list[i]; collectionViewGroupInternal = groupTreeNode.Group.Parent; CollectionViewGroupRoot.GroupTreeNode groupTreeNode3 = null; if (collectionViewGroupInternal == null) { result = groupTreeNode; } else { for (int j = list.Count - 1; j >= 0; j--) { if (list[j].Group == collectionViewGroupInternal) { groupTreeNode3 = list[j]; break; } } if (groupTreeNode3 == null) { groupTreeNode3 = new CollectionViewGroupRoot.GroupTreeNode { Group = collectionViewGroupInternal, FirstChild = groupTreeNode }; list.Add(groupTreeNode3); } else { groupTreeNode.Sibling = groupTreeNode3.FirstChild; groupTreeNode3.FirstChild = groupTreeNode; } } } return(result); }
// Token: 0x060073CC RID: 29644 RVA: 0x0021205C File Offset: 0x0021025C internal void RestoreGrouping(LiveShapingItem lsi, List <AbandonedGroupItem> deleteList) { CollectionViewGroupRoot.GroupTreeNode groupTreeNode = this.BuildGroupTree(lsi); groupTreeNode.ContainsItem = true; this.RestoreGrouping(lsi, groupTreeNode, 0, deleteList); }