protected void remove_WLock(MediaItem item) { SelectableMediaItem selectableItem = new SelectableMediaItem(item); int index = MediaCollectionView.IndexOf(selectableItem); removeAt_WLock(index); }
public void selectRange(MediaItem end) { EnterWriteLock(); try { bool selectionChanged = false; MediaItem start = null; int startIndex = getSelectedItem_RLock(out start); int endIndex = MediaCollectionView.IndexOf(new SelectableMediaItem(end)); if (endIndex == -1) { return; } else if (startIndex == -1) { startIndex = 0; } if (endIndex < startIndex) { int temp = startIndex; startIndex = endIndex; endIndex = temp; } for (int i = startIndex; i <= endIndex; i++) { MediaCollectionView[i].SelectionChanged -= selectableItem_SelectionChanged; if (MediaCollectionView[i].IsSelected == false) { selectionChanged = true; } MediaCollectionView[i].IsSelected = true; MediaCollectionView[i].SelectionChanged += selectableItem_SelectionChanged; } if (selectionChanged) { QueueSelectionChangedEvent(); } } finally { ExitWriteLock(); } }
protected void reSort(MediaItem item) { int oldIndex = 0; int newIndex = 0; EnterWriteLock(); try { SelectableMediaItem selectableItem = new SelectableMediaItem(item); oldIndex = MediaCollectionView.IndexOf(selectableItem); newIndex = oldIndex; if (oldIndex != -1) { selectableItem = MediaCollectionView[oldIndex]; // item is already in the list if (Filter(selectableItem)) { // remove and reinsert item MediaCollectionView.RemoveAt(oldIndex); if (oldIndex < sortedItemEnd) { sortedItemEnd -= 1; } newIndex = insertSorted_WLock(selectableItem); if (newIndex != oldIndex) { QueueItemResortedEvent(item, oldIndex, newIndex); } } else { // remove item from list removeAt_WLock(oldIndex); } } else { // add item to list add_WLock(item); } } finally { ExitWriteLock(); } }
/// <summary> /// Returns index of Media item, query under read lock /// </summary> /// <param name="item"></param> /// <returns></returns> public int IndexOf(SelectableMediaItem item) { return(MediaCollectionView.IndexOf(item)); }