public IEnumerator <IConversationTreeNode> GetEnumerator() { if (ConversationTreeNodeBase.IsChronologicalSortOrder(this.SortOrder)) { foreach (IConversationTreeNode node in this.FlatSortNodes) { yield return(node); } } else { foreach (IConversationTreeNode firstLevelIteration in this.childNodes) { if (this.SortOrder != ConversationTreeSortOrder.DeepTraversalDescending) { yield return(firstLevelIteration); } foreach (IConversationTreeNode secondLevelIteration in firstLevelIteration) { yield return(secondLevelIteration); } if (this.SortOrder == ConversationTreeSortOrder.DeepTraversalDescending) { yield return(firstLevelIteration); } } } yield break; }
private List <IConversationTreeNode> CalculateFlatSortNodes(ConversationTreeSortOrder sortOrder) { if (ConversationTreeNodeBase.IsTraversalChronologicalSortOrder(sortOrder)) { return(this.childNodeSorter.Sort(this, sortOrder)); } return(this.FlatSortChildNodes(sortOrder)); }
public static List <IConversationTreeNode> TrimToNewest(List <IConversationTreeNode> relevantNodes, int maxItemsToReturn) { List <IConversationTreeNode> list = new List <IConversationTreeNode>(relevantNodes); ConversationTreeNodeBase.SortByDate(list); if (list.Count > maxItemsToReturn) { list.RemoveRange(0, list.Count - maxItemsToReturn); } return(list); }
private void TraversalSortChildNodes(ConversationTreeSortOrder sortOrder) { for (int i = 0; i < this.childNodes.Count; i++) { this.childNodes[i].SortChildNodes(sortOrder); } this.childNodes.Sort(delegate(IConversationTreeNode left, IConversationTreeNode right) { int num = ConversationTreeNodeBase.CompareNodesTraversal(left, right); return((sortOrder == ConversationTreeSortOrder.DeepTraversalAscending) ? num : (-1 * num)); }); }
private List <IConversationTreeNode> FlatSortChildNodes(ConversationTreeSortOrder sortOrder) { List <IConversationTreeNode> flatSortNodes = new List <IConversationTreeNode>(0); this.ApplyActionToChild(delegate(IConversationTreeNode treeNode) { treeNode.SortOrder = sortOrder; if (treeNode.HasData) { flatSortNodes.Add(treeNode); } }); ConversationTreeNodeBase.SortByDate(flatSortNodes, sortOrder == ConversationTreeSortOrder.ChronologicalAscending); return(flatSortNodes); }
public void SortChildNodes(ConversationTreeSortOrder sortOrder) { if (this.SortOrder == sortOrder) { return; } if (ConversationTreeNodeBase.IsChronologicalSortOrder(sortOrder)) { this.FlatSortNodes = this.CalculateFlatSortNodes(sortOrder); } else { this.TraversalSortChildNodes(sortOrder); } this.SortOrder = sortOrder; }
public static void SortByDate(List <IConversationTreeNode> nodes) { ConversationTreeNodeBase.SortByDate(nodes, true); }