示例#1
0
 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;
 }
示例#2
0
 private List <IConversationTreeNode> CalculateFlatSortNodes(ConversationTreeSortOrder sortOrder)
 {
     if (ConversationTreeNodeBase.IsTraversalChronologicalSortOrder(sortOrder))
     {
         return(this.childNodeSorter.Sort(this, sortOrder));
     }
     return(this.FlatSortChildNodes(sortOrder));
 }
示例#3
0
        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);
        }
示例#4
0
 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));
     });
 }
示例#5
0
        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);
        }
示例#6
0
 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;
 }
示例#7
0
 public static void SortByDate(List <IConversationTreeNode> nodes)
 {
     ConversationTreeNodeBase.SortByDate(nodes, true);
 }