protected void UpdateLoadedMediaItems(MediaItem mediaItem, ContentDirectoryMessaging.MediaItemChangeType changeType) { if (changeType == ContentDirectoryMessaging.MediaItemChangeType.None) { return; } bool changed = false; lock (_syncObj) { if (changeType == ContentDirectoryMessaging.MediaItemChangeType.Deleted) { PlayableMediaItem existingItem = _items.OfType <PlayableMediaItem>().FirstOrDefault(pmi => pmi.MediaItem.Equals(mediaItem)); if (existingItem != null) { int oldIndex = _items.IndexOf(existingItem); _items.Remove(existingItem); // Restore focus on same position of old item SetSelectedIndex(oldIndex); _currentTotalNumItems--; changed = true; } } if (changeType == ContentDirectoryMessaging.MediaItemChangeType.Updated) { IEnumerable <PlayableMediaItem> playableItems = _items.OfType <PlayableMediaItem>(); PlayableMediaItem existingItem = playableItems.FirstOrDefault(pmi => pmi.MediaItem.Equals(mediaItem)); if (existingItem != null) { existingItem.Update(mediaItem); changed = SetSelectedItem(playableItems); } } } if (changed) { _items.FireChange(); Display_Normal(_items.Count, _currentTotalNumItems); } }
protected void UpdateLoadedMediaItems(MediaItem mediaItem, ContentDirectoryMessaging.MediaItemChangeType changeType) { if (changeType == ContentDirectoryMessaging.MediaItemChangeType.None) { return; } bool changed = false; lock (_syncObj) { if (changeType == ContentDirectoryMessaging.MediaItemChangeType.Deleted) { PlayableMediaItem existingItem = _items.OfType <PlayableMediaItem>().FirstOrDefault(pmi => pmi.MediaItem.Equals(mediaItem)); if (existingItem != null) { _items.Remove(existingItem); _currentTotalNumItems--; changed = true; } } if (changeType == ContentDirectoryMessaging.MediaItemChangeType.Updated) { PlayableMediaItem existingItem = _items.OfType <PlayableMediaItem>().FirstOrDefault(pmi => pmi.MediaItem.Equals(mediaItem)); if (existingItem != null) { existingItem.Update(mediaItem); } } } if (changed) { _items.FireChange(); Display_Normal(_items.Count, _currentTotalNumItems); } }