예제 #1
0
        public static IPlaybillItem ToPlaybillItem(this PlaybillItemEntity entity)
        {
            MediaSourceEntity sourceEntity = entity.MediaSource;
            IMediaSource      mediaSource  = null;

            if (sourceEntity == null)
            {
                mediaSource = new NullMediaSource(entity.MediaSourceTitle, TimeSpan.FromSeconds(entity.MediaSourceDuration.Value));
            }
            else
            {
                mediaSource = entity.MediaSource.ToMediaSource(entity); // FromEntity(entity, entity.MediaSource);
            }

            IPlaySource   playSource = Create(entity, mediaSource);
            IPlaybillItem result     = null;

            switch (entity.ScheduleMode)
            {
            case PlayScheduleMode.Auto:
                result = PlaybillItem.Auto(playSource);
                break;

            case PlayScheduleMode.Timing:
                result = PlaybillItem.Timing(playSource, entity.StartTime.Value);
                break;

            case PlayScheduleMode.TimingBreak:
                result = PlaybillItem.TimingBreak(playSource, entity.StartTime.Value);
                break;
            }
            result.Id = entity.Id;
            return(result);
        }
예제 #2
0
        private void AddPlayItem(MediaItem mediaItem, PlayScheduleMode scheduleMode, DateTime?startTime)
        {
            PlaylistBuilder builder  = CreateBuilder();
            PlaybillItem    billItem = null;


            try
            {
                switch (scheduleMode)
                {
                case PlayScheduleMode.Timing:
                    billItem = PlaybillItem.Timing(mediaItem, startTime.Value);
                    builder.AddTimingItem((TimingPlaybillItem)billItem);
                    break;

                case PlayScheduleMode.Auto:
                    billItem = PlaybillItem.Auto(mediaItem);
                    builder.AddAutoItem(new AutoPlayItem(billItem),
                                        this.SelectedPlayItem != null ? this.SelectedPlayItem.PlayItem : null);
                    break;

                case PlayScheduleMode.TimingBreak:
                    billItem = PlaybillItem.TimingBreak(mediaItem, startTime.Value);
                    builder.AddTimingBreakItem((TimingPlaybillItem)billItem);
                    break;
                }

                Rebuild(builder);
            }
            catch (Exception ex)
            {
                //editor.Rollback();
                OnError(ex);
            }
        }
예제 #3
0
        private void AddPlayItem(MediaItem mediaItem, PlayScheduleMode scheduleMode, DateTime?startTime)
        {
            using (var editor = this.Edit())
            {
                try
                {
                    PlaybillItem billItem = null;
                    switch (scheduleMode)
                    {
                    case PlayScheduleMode.Timing:
                        billItem = PlaybillItem.Timing(mediaItem, startTime.Value);
                        editor.AddTiming((TimingPlaybillItem)billItem);
                        break;

                    case PlayScheduleMode.Auto:
                        billItem = PlaybillItem.Auto(mediaItem);
                        if (this.SelectedPlayItem != null)
                        {
                            editor.AddAuto(this.SelectedPlayItem.PlayItem, new AutoPlayItem(billItem));
                        }
                        else
                        {
                            editor.AddAuto(new AutoPlayItem(billItem));
                        }
                        break;

                    case PlayScheduleMode.TimingBreak:
                        billItem = PlaybillItem.TimingBreak(mediaItem, startTime.Value);
                        editor.AddTiming((TimingPlaybillItem)billItem);
                        break;
                    }
                }
                catch (Exception ex)
                {
                    editor.Rollback();
                    RaiseDisplayMessageInteractionRequest("错误", ex.Message);
                }
            }
        }