Inheritance: MonoBehaviour
示例#1
0
        private void RemoveItem(int index, bool supressCollectionChanged)
        {
            int         oldCount    = Count;
            VisibleItem removedItem = filteredItems[index];

            items.RemoveAt(index);

            for (int i = index + 1; i < oldCount; i++)
            {
                if (removedItem.Visible && filteredItems[i].Visible)
                {
                    filteredItems[i].VisibleIndex--;
                }

                filteredItems[i - 1] = filteredItems[i];
            }

            filteredItems.Remove(filteredItems.Count - 1);

            removedItem.Item.PropertyChanged -= Item_PropertyChanged;

            if (!supressCollectionChanged && removedItem.Visible)
            {
                OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, removedItem.Item, index));
            }
        }
示例#2
0
        private void InsertItem(int index, T item, bool supressCollectionChanged)
        {
            bool visible      = (Filter != null) ? Filter(item) : true;
            int  visibleIndex = -1;

            // Move up all items after that are after index
            for (int i = items.Count; i > index; i--)
            {
                filteredItems[i] = filteredItems[i - 1];

                // Update visible index if new item is also visable
                if (filteredItems[i].Visible && visible)
                {
                    visibleIndex = filteredItems[i].VisibleIndex;
                    filteredItems[i].VisibleIndex++;
                }
            }

            // If inserting at end of list and item is visible, set visible index as largest VisibleIndex
            if (index == items.Count && visible)
            {
                VisibleItem last = (filteredItems.Values.Where(x => x.Visible)).LastOrDefault();

                if (last != null)
                {
                    visibleIndex = last.VisibleIndex + 1;
                }
                else
                {
                    visibleIndex = 0;
                }
            }

            items.Insert(index, item);

            filteredItems[index] = new VisibleItem(visibleIndex, item, visible);

            item.PropertyChanged += Item_PropertyChanged;

            if (!supressCollectionChanged && visible)
            {
                OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, item, visibleIndex));
            }
        }
示例#3
0
    private ObservableCollection <VisibleItem> getDataList()
    {
        VisibleItem vItem;

        for (var k = 1; k < 10; k++)
        {
            vItem             = new VisibleItem();
            vItem.Group       = "Group " + k;
            vItem.Name        = "Item Name  " + k;
            vItem.PictureID   = k;
            vItem.SomeDetail  = "Detail  " + k;
            vItem.Info        = "Info  " + k;
            vItem.GHeaderName = "GHeaderName " + k;
            vItem.Info        = "Info  " + k;
            // vItem.Class
            dataList.Add(vItem);
        }
        return(dataList);
    }
示例#4
0
        public IList <VisibleItem> GetCurrentVisibleItems()
        {
            List <TstUVisibleItem> rawVisibleItemsList;

            lock (_lockObj)
            {
                if (!_isRawVisibleItemsListChanged)
                {
                    return(_result);
                }

                _isRawVisibleItemsListChanged = false;

                rawVisibleItemsList = _rawVisibleItemsList;
            }

            var result = new List <VisibleItem>();

            var rawVisibleItemsDict = rawVisibleItemsList.GroupBy(p => p.InstanceId);

            foreach (var rawVisibleItemsKVPItem in rawVisibleItemsDict)
            {
                var firstElem = rawVisibleItemsKVPItem.First();

                var item = new VisibleItem();
                item.InstanceId  = firstElem.InstanceId;
                item.Position    = firstElem.Position;
                item.IsInFocus   = rawVisibleItemsKVPItem.Any(p => p.IsInFocus);
                item.MinDistance = rawVisibleItemsKVPItem.Min(p => p.Distance);

                result.Add(item);
            }

            _result = result;

            return(result);
        }
示例#5
0
        protected void InvalidateItem(int index)
        {
            if (index < VisibleItems[0].Index)
            {
                return;
            }
            if (index > VisibleItems[VisibleItems.Count - 1].Index)
            {
                return;
            }

            var vi = new VisibleItem {
                Index = index
            };
            var visibleIndex = VisibleItems.BinarySearch(vi, new VisibleItemComparer());
            var rectF        = VisibleItems[visibleIndex].Rectangle;

            Invalidate(new Rectangle(
                           (int)Math.Floor(rectF.X) - 4,
                           (int)Math.Floor(rectF.Y) - 4,
                           (int)Math.Ceiling(rectF.Width) + 8,
                           (int)Math.Ceiling(rectF.Height) + 8
                           ));
        }
示例#6
0
 public CellData(byte x, byte y)
 {
     this.index       = new Vector2(x, y);
     this.visibleItem = new VisibleItem();
 }
示例#7
0
 private void selectedItemChanged(VisibleItem item)
 {
     ///your filter logic goes here
 }