private void RemoveDownloadsFromQueueThatAreNoLongerEnabled(IEnumerable<Category> enabledCategories)
{
for (int i = _downloadQueue.Count - 1; i >= 0; i--)
{
var downloadItem = _downloadQueue.ElementAt(i);
if (downloadItem.Category == null)
{
continue;
}
var isInAnyCategory =
enabledCategories.Any(p => p.RelativePath == downloadItem.Category.RelativePath);
if (!isInAnyCategory &&
(downloadItem.DownloadState == DownloadState.Queued || downloadItem.DownloadState == DownloadState.Stopped))
{
_downloadQueue.Remove(_downloadQueue.ElementAt(i));
RaiseDownloadRemoved(new DownloadRemovedEventArgs(downloadItem));
}
}
}