Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 private ScheduleItem CreateAutoPadding(DateTime startTime, TimeSpan duration)
 {
     return(new ScheduleItem(AutoPlayItem.CreateAutoPadding(startTime, duration)));
 }