public bool RemoveScheduleForProgram(IProgram program, ScheduleRecordingType recordingType)
 {
   try
   {
     CpAction action = GetAction(Consts.ACTION_REMOVE_SCHEDULE_FOR_PROGRAM);
     IList<object> inParameters = new List<object> { program.ProgramId, (int)recordingType };
     IList<object> outParameters = action.InvokeAction(inParameters);
     return (bool)outParameters[0];
   }
   catch (Exception ex)
   {
     NotifyException(ex);
     return false;
   }
 }
 private string GetRecType(ScheduleRecordingType recType)
 {
   string strType = String.Empty;
   switch (recType)
   {
     case ScheduleRecordingType.Daily:
       strType = GUILocalizeStrings.Get(648); //daily
       break;
     case ScheduleRecordingType.EveryTimeOnEveryChannel:
       strType = GUILocalizeStrings.Get(651); //Everytime on any channel
       break;
     case ScheduleRecordingType.EveryTimeOnThisChannel:
       strType = GUILocalizeStrings.Get(650); //Everytime on this channel
       break;
     case ScheduleRecordingType.Once:
       strType = GUILocalizeStrings.Get(647); //Once
       break;
     case ScheduleRecordingType.WorkingDays:
       strType = GUILocalizeStrings.Get(WeekEndTool.GetText(DayType.WorkingDays)); //Working Days
       break;
     case ScheduleRecordingType.Weekends:
       strType = GUILocalizeStrings.Get(WeekEndTool.GetText(DayType.WeekendDays)); //Weekend Days
       break;
     case ScheduleRecordingType.Weekly:
       strType = GUILocalizeStrings.Get(679); //Weekly
       break;
     case ScheduleRecordingType.WeeklyEveryTimeOnThisChannel:
       strType = GUILocalizeStrings.Get(990000);//Weekly Everytime on this channel
       break;
   }
   return strType;
 }
 public bool CreateSchedule(IProgram program, ScheduleRecordingType recordingType, out ISchedule schedule)
 {
   try
   {
     CpAction action = GetAction(Consts.ACTION_CREATE_SCHEDULE);
     IList<object> inParameters = new List<object> { program.ProgramId, (int) recordingType };
     IList<object> outParameters = action.InvokeAction(inParameters);
     bool result = (bool)outParameters[0];
     schedule = result ? (ISchedule)outParameters[1] : null;
     return result;
   }
   catch (Exception ex)
   {
     NotifyException(ex);
     schedule = null;
     return false;
   }
 }
 public void RecordOrCancelSeries(IProgram program, ScheduleRecordingType scheduleRecordingType)
 {
   CreateOrDeleteSchedule(program, scheduleRecordingType);
 }
    protected override RecordingStatus? CreateOrDeleteSchedule(IProgram program, ScheduleRecordingType recordingType = ScheduleRecordingType.Once)
    {
      _lastProgramId = program.ProgramId;
      var newStatus = base.CreateOrDeleteSchedule(program, recordingType);

      if (!newStatus.HasValue)
        return RecordingStatus.None;

      UpdatePrograms(); // Reload all programs, as series scheduling will affect multiple programs
      NotifyAllPrograms();
      return newStatus.Value;
    }
 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;
 }
 protected override RecordingStatus? CreateOrDeleteSchedule(IProgram program, ScheduleRecordingType recordingType = ScheduleRecordingType.Once)
 {
   var result = base.CreateOrDeleteSchedule(program, recordingType);
   LoadSchedules();
   return result;
 }
 public void RecordOrCancelSeries(ScheduleRecordingType scheduleRecordingType)
 {
   CreateOrDeleteSchedule(_selectedProgram, scheduleRecordingType);
   _selectedSchedule = null;
   UpdateButtonStateForSchedule();
 }
    public bool RemoveScheduleForProgram(IProgram program, ScheduleRecordingType recordingType)
    {
      Program indexProgram = program as Program;
      if (indexProgram == null)
        return false;

      if (!CheckConnection(indexProgram.ServerIndex))
        return false;

      try
      {
        ITVAccessService tvAccessService = TvServer(indexProgram.ServerIndex);
        if (recordingType == ScheduleRecordingType.Once)
        {
          return tvAccessService.CancelSchedule(program.ProgramId);
        }

        // TODO: find matching schedule? return tvAccessService.DeleteSchedule(indexProgram);
        return false;
      }
      catch
      {
        return false;
      }
    }
    public bool CreateSchedule(IProgram program, ScheduleRecordingType recordingType, out ISchedule schedule)
    {
      Program indexProgram = program as Program;
      schedule = null;
      if (indexProgram == null)
        return false;

      if (!CheckConnection(indexProgram.ServerIndex))
        return false;

      try
      {
        // Note: the enums WebScheduleType and ScheduleRecordingType are defined equally. If one of them gets extended, the other must be changed the same way.
        return TvServer(indexProgram.ServerIndex).AddSchedule(program.ChannelId, program.Title, program.StartTime, program.EndTime, (WebScheduleType)recordingType);
      }
      catch
      {
        return false;
      }
    }