コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
            }
        }