private void EnqueueDownloads() { bool hasMoreParts = true; TimeSpan partStartTime = _downloadParams.CropStart ? _downloadParams.CropStartTime : TimeSpan.Zero; TimeSpan videoEndTime = _downloadParams.CropEnd ? _downloadParams.CropEndTime : _downloadParams.Video.Length; TimeSpan partEndTime = videoEndTime; int? partNumber = null; if (_downloadParams.SplitVideo) { partNumber = 1; _downloadParams.CropStart = true; _downloadParams.CropEnd = true; } do { if (_downloadParams.SplitVideo && ((partEndTime - partStartTime) > _downloadParams.SplitLength)) { partEndTime = partStartTime + _downloadParams.SplitLength; } else { hasMoreParts = false; } _downloadParams.CropStartTime = partStartTime; _downloadParams.CropEndTime = partEndTime; if (_useCustomFilename) { if (partNumber.HasValue) { if (partNumber > 1) { _downloadParams.Filename = _downloadParams.Filename.Remove(0, 4); } _downloadParams.Filename = ((int)partNumber).ToString("000") + "_" + _downloadParams.Filename; } } else { UpdateFilenameFromTemplate(partNumber); } if (File.Exists(_downloadParams.FullPath)) { MessageBoxResult result = _dialogService.ShowMessageBox("The file already exists. Do you want to overwrite it?", "Download", MessageBoxButton.YesNo, MessageBoxImage.Question); if (result != MessageBoxResult.Yes) { return; } } _twitchService.Enqueue((DownloadParameters)_downloadParams.Clone()); if (hasMoreParts) { partNumber++; partStartTime = partEndTime; partEndTime = videoEndTime; } } while (hasMoreParts); }