public LibraryModel( IDownloadEvents downloadEvents, IObservable<QueuedDownload> downloadEnqueuedEvent )
        {
            LibraryItemRemoved += UpdateParentOnLibraryItemRemoved;

            FilterEvents( downloadEnqueuedEvent ).Subscribe(
                item =>
                    {
                        item.ItemState = MediaItemState.Downloading;
                    });
            FilterEvents(downloadEvents.DownloadStartedEvent).Subscribe(item => item.ItemState = MediaItemState.Downloading);
            FilterEvents( downloadEvents.DownloadStopPendingEvent ).Subscribe( item => item.ItemState = MediaItemState.Remote );
            FilterEvents( downloadEvents.DownloadErrorEvent ).Subscribe( item => item.ItemState = MediaItemState.Remote );
            FilterEvents( downloadEvents.DownloadCompletedEvent ).Subscribe( item => item.ItemState = MediaItemState.Local );
        }
        public LibraryModel(IDownloadEvents downloadEvents, IObservable <QueuedDownload> downloadEnqueuedEvent)
        {
            LibraryItemRemoved += UpdateParentOnLibraryItemRemoved;

            FilterEvents(downloadEnqueuedEvent).Subscribe(
                item =>
            {
                item.ItemState = MediaItemState.Downloading;
            });
            FilterEvents(downloadEvents.DownloadStartedEvent).Subscribe(item => item.ItemState     = MediaItemState.Downloading);
            FilterEvents(downloadEvents.DownloadStopPendingEvent).Subscribe(item => item.ItemState = MediaItemState.Remote);
            FilterEvents(downloadEvents.DownloadErrorEvent).Subscribe(item => item.ItemState       = MediaItemState.Remote);
            FilterEvents(downloadEvents.DownloadCompletedEvent).Subscribe(item => item.ItemState   = MediaItemState.Local);
        }