示例#1
0
 private void DoAdd(FileSystemModelEntry entry)
 {
     Insert(entry);
     if (_lastVisibleNode != null && entry.Size >= _lastVisibleNode.Value.Size)
     {
         entry.Visible = true;
         _visibleEntriesCount++;
     }
 }
示例#2
0
        internal void Add(FileSystemModelEntry entry)
        {
            if (entry == null)
            {
                throw new ArgumentNullException(nameof(entry));
            }

            UpdateSize(entry.Size);
            DoAdd(entry);
            entry.NotifyVisibilityChanged();
        }
示例#3
0
        internal void UpdateEntryPosition(FileSystemModelEntry entry)
        {
            if (entry == null)
            {
                throw new ArgumentNullException(nameof(entry));
            }

            var node = _entries.Find(entry);

            node = Swim(node);
            Sink(node);
        }
示例#4
0
        internal void Delete(FileSystemModelEntry entry)
        {
            if (entry == null)
            {
                throw new ArgumentNullException(nameof(entry));
            }

            var node = _entries.Find(entry);

            DoDelete(node);
            UpdateSize(-entry.Size);
            entry.NotifyVisibilityChanged();
        }
示例#5
0
        private LinkedListNode <FileSystemModelEntry> Insert(FileSystemModelEntry entry)
        {
            var current = _entries.First;

            if (current == null)
            {
                return(_entries.AddFirst(entry));
            }

            while (current != null && current.Value.Size > entry.Size)
            {
                current = current.Next;
            }

            return(current != null
                ? _entries.AddBefore(current, entry)
                : _entries.AddLast(entry));
        }
示例#6
0
 private bool IsShouldBeVisible(FileSystemModelEntry entry)
 {
     return(entry.Size != 0 && Size * Model.EntrySizeThreshold <= entry.Size);
 }