public void Append(IList <ScheduleItem> playItems) { if (playItems.Count == 0) { return; } var itemStartTime = playItems[0].StartTime; var prevTuple = this.FindLastTiming(i => i.StartTime <= itemStartTime); int beginIndex; if (prevTuple.Item2 == -1) { beginIndex = 0; } else { beginIndex = prevTuple.Item2; } while (beginIndex < _playlist.Count) { if (_playlist[beginIndex].StartTime >= itemStartTime) { break; } beginIndex++; } if (beginIndex == _playlist.Count) { if (_playlist.Count == 0) { var playlistStartTime = GetPlaylistStartTime(); // _playlist.GetStartTime(); if (playlistStartTime != null) { TimeSpan duration = itemStartTime.Subtract(playlistStartTime.Value); if (duration > TimeSpan.Zero) { var autoPadding = new ScheduleItem(AutoPlayItem.CreateAutoPadding(playlistStartTime.Value, duration)); var newItems = new List <ScheduleItem>(); newItems.Add(autoPadding); newItems.AddRange(playItems); playItems = newItems; } else { } } else //playlistStartTime == null { } } else { var lastStopTime = _playlist[_playlist.Count - 1].CalculatedStopTime; TimeSpan duration = itemStartTime.Subtract(lastStopTime); if (duration > TimeSpan.Zero) { var autoPadding = new ScheduleItem(AutoPlayItem.CreateAutoPadding(lastStopTime, duration)); var newItems = new List <ScheduleItem>(); newItems.Add(autoPadding); newItems.AddRange(playItems); playItems = newItems; } else { } } } //_playlist.Update(beginIndex, _playlist.Count - beginIndex, playItems); UpdatePlaylist(beginIndex, _playlist.Count - beginIndex, playItems); }
private ScheduleItem CreateAutoPadding(DateTime startTime, TimeSpan duration) { return(new ScheduleItem(AutoPlayItem.CreateAutoPadding(startTime, duration))); }