コード例 #1
0
        private UPnPError OnCreateScheduleByTime(DvAction action, IList <object> inParams, out IList <object> outParams, CallContext context)
        {
            outParams = new List <object>();
            IScheduleControl     scheduleControl     = ServiceRegistration.Get <ITvProvider>() as IScheduleControl;
            IChannelAndGroupInfo channelAndGroupInfo = ServiceRegistration.Get <ITvProvider>() as IChannelAndGroupInfo;

            if (scheduleControl == null || channelAndGroupInfo == null)
            {
                return(new UPnPError(500, "IChannelAndGroupInfo or IScheduleControl service not available"));
            }

            int      channelId = (int)inParams[0];
            DateTime startTime = (DateTime)inParams[1];
            DateTime endTime   = (DateTime)inParams[2];
            ScheduleRecordingType recordingType = (ScheduleRecordingType)inParams[3];
            ISchedule             schedule      = null;

            IChannel channel;
            bool     result = channelAndGroupInfo.GetChannel(channelId, out channel) && scheduleControl.CreateScheduleByTime(channel, startTime, endTime, recordingType, out schedule);

            outParams = new List <object> {
                result, schedule
            };
            return(null);
        }
コード例 #2
0
        protected virtual RecordingStatus?CreateOrDeleteSchedule(IProgram program, ScheduleRecordingType recordingType = ScheduleRecordingType.Once)
        {
            IScheduleControl scheduleControl = _tvHandler.ScheduleControl;
            RecordingStatus? newStatus       = null;

            if (scheduleControl != null)
            {
                RecordingStatus?recordingStatus = GetRecordingStatus(program);
                if (!recordingStatus.HasValue)
                {
                    return(null);
                }
                if (recordingStatus.Value.HasFlag(RecordingStatus.Scheduled) || recordingStatus.Value.HasFlag(RecordingStatus.SeriesScheduled))
                {
                    if (scheduleControl.RemoveScheduleForProgram(program, recordingType))
                    {
                        newStatus = RecordingStatus.None;
                    }
                }
                else
                {
                    ISchedule schedule;
                    if (scheduleControl.CreateSchedule(program, recordingType, out schedule))
                    {
                        newStatus = recordingType == ScheduleRecordingType.Once ? RecordingStatus.Scheduled : RecordingStatus.SeriesScheduled;
                    }
                }
            }
            return(newStatus);
        }
コード例 #3
0
        protected virtual RecordingStatus?CreateOrDeleteScheduleByTime(IChannel program, DateTime start, DateTime end)
        {
            IScheduleControl scheduleControl = _tvHandler.ScheduleControl;
            RecordingStatus? newStatus       = null;

            if (scheduleControl != null)
            {
                ISchedule schedule;
                if (scheduleControl.CreateScheduleByTime(program, start, end, ScheduleRecordingType.Once, out schedule))
                {
                    newStatus = RecordingStatus.Scheduled;
                }
            }
            return(newStatus);
        }
コード例 #4
0
        protected virtual RecordingStatus?GetRecordingStatus(IProgram program)
        {
            IScheduleControl scheduleControl = _tvHandler.ScheduleControl;

            if (scheduleControl == null)
            {
                return(null);
            }

            RecordingStatus recordingStatus;

            if (scheduleControl.GetRecordingStatus(program, out recordingStatus))
            {
                return(recordingStatus);
            }
            return(null);
        }
コード例 #5
0
        private UPnPError OnGetProgramsForSchedule(DvAction action, IList <object> inParams, out IList <object> outParams, CallContext context)
        {
            outParams = new List <object>();
            IScheduleControl scheduleControl = ServiceRegistration.Get <ITvProvider>() as IScheduleControl;

            if (scheduleControl == null)
            {
                return(new UPnPError(500, "IProgramInfo or IScheduleControl service not available"));
            }

            ISchedule        schedule = (ISchedule)inParams[0];
            IList <IProgram> programs;
            bool             result = scheduleControl.GetProgramsForSchedule(schedule, out programs);

            outParams = new List <object> {
                result, programs
            };
            return(null);
        }
コード例 #6
0
        private UPnPError OnGetSchedules(DvAction action, IList <object> inParams, out IList <object> outParams, CallContext context)
        {
            outParams = new List <object>();
            IProgramInfo     programInfo     = ServiceRegistration.Get <ITvProvider>() as IProgramInfo;
            IScheduleControl scheduleControl = ServiceRegistration.Get <ITvProvider>() as IScheduleControl;

            if (programInfo == null || scheduleControl == null)
            {
                return(new UPnPError(500, "IProgramInfo or IScheduleControl service not available"));
            }

            IList <ISchedule> schedules;
            bool result = scheduleControl.GetSchedules(out schedules);

            outParams = new List <object> {
                result, schedules
            };
            return(null);
        }
コード例 #7
0
        private UPnPError OnIsCurrentlyRecording(DvAction action, IList <object> inParams, out IList <object> outParams, CallContext context)
        {
            outParams = new List <object>();
            IScheduleControl scheduleControl = ServiceRegistration.Get <ITvProvider>() as IScheduleControl;

            if (scheduleControl == null)
            {
                return(new UPnPError(500, "IProgramInfo or IScheduleControl service not available"));
            }

            string    fileName = (string)inParams[0];
            ISchedule schedule;
            bool      result = scheduleControl.IsCurrentlyRecording(fileName, out schedule);

            outParams = new List <object> {
                result, schedule
            };
            return(null);
        }
コード例 #8
0
        private UPnPError OnRemoveSchedule(DvAction action, IList <object> inParams, out IList <object> outParams, CallContext context)
        {
            outParams = new List <object>();
            IProgramInfo     programInfo     = ServiceRegistration.Get <ITvProvider>() as IProgramInfo;
            IScheduleControl scheduleControl = ServiceRegistration.Get <ITvProvider>() as IScheduleControl;

            if (programInfo == null || scheduleControl == null)
            {
                return(new UPnPError(500, "IProgramInfo or IScheduleControl service not available"));
            }

            int      programId = (int)inParams[0];
            IProgram program;
            bool     result = programInfo.GetProgram(programId, out program) && scheduleControl.RemoveSchedule(program);

            outParams = new List <object> {
                result
            };
            return(null);
        }
コード例 #9
0
        private UPnPError OnGetRecordingStatus(DvAction action, IList <object> inParams, out IList <object> outParams, CallContext context)
        {
            outParams = new List <object>();
            IProgramInfo     programInfo     = ServiceRegistration.Get <ITvProvider>() as IProgramInfo;
            IScheduleControl scheduleControl = ServiceRegistration.Get <ITvProvider>() as IScheduleControl;

            if (programInfo == null || scheduleControl == null)
            {
                return(new UPnPError(500, "IProgramInfo or IScheduleControl service not available"));
            }

            int             programId = (int)inParams[0];
            IProgram        program;
            RecordingStatus recordingStatus = RecordingStatus.None;
            bool            result          = programInfo.GetProgram(programId, out program) && scheduleControl.GetRecordingStatus(program, out recordingStatus);

            outParams = new List <object> {
                result, recordingStatus.ToString()
            };
            return(null);
        }
コード例 #10
0
        private UPnPError OnCreateScheduleByTime(DvAction action, IList <object> inParams, out IList <object> outParams, CallContext context)
        {
            outParams = new List <object>();
            IScheduleControl scheduleControl = ServiceRegistration.Get <ITvProvider>() as IScheduleControl;

            if (scheduleControl == null)
            {
                return(new UPnPError(500, "IProgramInfo or IScheduleControl service not available"));
            }

            int      channelId = (int)inParams[0];
            DateTime startTime = (DateTime)inParams[1];
            DateTime endTime   = (DateTime)inParams[2];
            IProgram program   = new Program {
                ChannelId = channelId, StartTime = startTime, EndTime = endTime, Title = "Manual"
            };                                                                                                              // TODO: localize
            bool result = scheduleControl.CreateSchedule(program);

            outParams = new List <object> {
                result
            };
            return(null);
        }