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); }
private UPnPError OnRemoveScheduleForProgram(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]; ScheduleRecordingType recordingType = (ScheduleRecordingType)inParams[1]; IProgram program; bool result = programInfo.GetProgram(programId, out program) && scheduleControl.RemoveScheduleForProgram(program, recordingType); outParams = new List <object> { result }; return(null); }