示例#1
0
        private void unregisterSourceItem(int sourceIndex)
        {
            int?     removeIndex = null;
            ItemInfo itemInfo    = _itemInfos[sourceIndex];

            ExpressionWatcher watcher = itemInfo.ExpressionWatcher;

            watcher.Dispose();

            Position itemInfoFilteredPosition = itemInfo.FilteredPosition;

            if (itemInfoFilteredPosition != null)
            {
                removeIndex = itemInfoFilteredPosition.Index;
                _filteredPositions.Remove(itemInfoFilteredPosition.Index);
                modifyNextFilteredItemIndex(sourceIndex, itemInfo.NextFilteredItemPosition);
            }

            _sourcePositions.Remove(sourceIndex);

            if (removeIndex.HasValue)
            {
                baseRemoveItem(removeIndex.Value);
            }
        }
        private void unregisterSourceItem(int sourceIndex)
        {
            OrderingItemInfo <TOrderingValue> itemInfo = _itemInfos[sourceIndex];

            Utils.disposeExpressionWatcher(itemInfo.ExpressionWatcher, itemInfo.NestedComputings, this, _orderingValueSelectorContainsParametrizedLiveLinqCalls);

            int orderedIndex = itemInfo.OrderedItemInfo.Index;

            _orderedPositions.Remove(orderedIndex);
            _sourcePositions.Remove(sourceIndex);
            _orderingValues.RemoveAt(orderedIndex);

            if (_thenOrderingsCount > 0)
            {
                RangePosition rangePosition = itemInfo.OrderedItemInfo.RangePosition;
                if (rangePosition.Length == 1)
                {
                    _equalOrderingValueRangePositions.Remove(rangePosition.Index);
                }
                else
                {
                    _equalOrderingValueRangePositions.ModifyLength(rangePosition.Index, -1);
                }
            }

            baseRemoveItem(orderedIndex);
        }
示例#3
0
        private void unregisterSourceItem(int sourceIndex)
        {
            ItemInfo itemInfo = _itemInfos[sourceIndex];

            Utils.disposeExpressionWatcher(itemInfo.ExpressionWatcher, itemInfo.NestedComputings, this,
                                           _predicateContainsParametrizedObservableComputationCalls);

            _sourcePositions.Remove(sourceIndex);
        }
示例#4
0
        private void unregisterSourceItem(int index, bool replacing = false)
        {
            Utils.disposeExpressionWatcher(_itemInfos[index].ExpressionWatcher, _itemInfos[index].NestedComputings, this,
                                           _selectorContainsParametrizedObservableComputationsCalls);

            if (!replacing)
            {
                _sourcePositions.Remove(index);
            }
        }
        private void unregisterSourceItem(int sourceIndex)
        {
            ItemInfo itemInfo = _itemInfos[sourceIndex];

            ExpressionWatcher watcher = itemInfo.ExpressionWatcher;

            watcher.Dispose();

            _sourcePositions.Remove(sourceIndex);
        }
示例#6
0
        private void unregisterSourceItem(int index, bool replacing = false)
        {
            ExpressionWatcher watcher = _itemInfos[index].ExpressionWatcher;

            watcher.Dispose();

            if (!replacing)
            {
                _sourcePositions.Remove(index);
            }
        }
示例#7
0
        internal static bool ProcessChangeSourceItem <TSourceItem>(int sourceIndex,
                                                                   TSourceItem sourceItem,
                                                                   List <FilteringItemInfo> filteringItemInfos,
                                                                   IFiltering <TSourceItem> filtering,
                                                                   Positions <Position> filteredPositions,
                                                                   CollectionComputing <TSourceItem> current,
                                                                   ExpressionWatcher expressionWatcher)
        {
            if (expressionWatcher._disposed)
            {
                return(false);
            }

            FilteringItemInfo itemInfo = filteringItemInfos[sourceIndex];

            bool newPredicateValue = filtering.applyPredicate(sourceItem, itemInfo.PredicateFunc);
            bool oldPredicateValue = itemInfo.FilteredPosition != null;

            if (newPredicateValue != oldPredicateValue)
            {
                if (newPredicateValue)
                {
                    int newIndex = itemInfo.NextFilteredItemPosition.Index;
                    itemInfo.FilteredPosition = filteredPositions.Insert(newIndex);
                    newIndex = itemInfo.FilteredPosition.Index;
                    modifyNextFilteredItemIndex(sourceIndex, itemInfo.FilteredPosition, filteringItemInfos);
                    current.baseInsertItem(newIndex, sourceItem);
                    return(true);
                }
                else // if (oldPredicaeValue)
                {
                    int index = itemInfo.FilteredPosition.Index;
                    filteredPositions.Remove(index);
                    itemInfo.FilteredPosition = null;
                    modifyNextFilteredItemIndex(sourceIndex, itemInfo.NextFilteredItemPosition, filteringItemInfos);
                    current.baseRemoveItem(index);
                    return(true);
                }
            }

            return(false);
        }
示例#8
0
        private void unregisterSourceItem(int sourceIndex)
        {
            int?removeIndex            = null;
            FilteringItemInfo itemInfo = _itemInfos[sourceIndex];

            Utils.disposeExpressionWatcher(itemInfo.ExpressionWatcher, itemInfo.NestedComputings, this,
                                           _predicateContainsParametrizedObservableComputationsCalls);

            Position itemInfoFilteredPosition = itemInfo.FilteredPosition;

            if (itemInfoFilteredPosition != null)
            {
                removeIndex = itemInfoFilteredPosition.Index;
                _filteredPositions.Remove(itemInfoFilteredPosition.Index);
                FilteringUtils.modifyNextFilteredItemIndex(sourceIndex, itemInfo.NextFilteredItemPosition, _itemInfos);
            }

            _sourcePositions.Remove(sourceIndex);

            if (removeIndex.HasValue)
            {
                baseRemoveItem(removeIndex.Value);
            }
        }