Пример #1
0
        public static ScheduleDaysOfWeek GetScheduleDaysOfWeek(List <DayOfWeek> daysOfWeekToRecord)
        {
            ScheduleDaysOfWeek daysOfWeek = ScheduleDaysOfWeek.None;

            if (daysOfWeekToRecord.Contains(DayOfWeek.Monday))
            {
                daysOfWeek |= ScheduleDaysOfWeek.Mondays;
            }
            if (daysOfWeekToRecord.Contains(DayOfWeek.Monday))
            {
                daysOfWeek |= ScheduleDaysOfWeek.Tuesdays;
            }
            if (daysOfWeekToRecord.Contains(DayOfWeek.Monday))
            {
                daysOfWeek |= ScheduleDaysOfWeek.Wednesdays;
            }
            if (daysOfWeekToRecord.Contains(DayOfWeek.Monday))
            {
                daysOfWeek |= ScheduleDaysOfWeek.Thursdays;
            }
            if (daysOfWeekToRecord.Contains(DayOfWeek.Monday))
            {
                daysOfWeek |= ScheduleDaysOfWeek.Fridays;
            }
            if (daysOfWeekToRecord.Contains(DayOfWeek.Monday))
            {
                daysOfWeek |= ScheduleDaysOfWeek.Saturdays;
            }
            if (daysOfWeekToRecord.Contains(DayOfWeek.Monday))
            {
                daysOfWeek |= ScheduleDaysOfWeek.Sundays;
            }
            return(daysOfWeek);
        }
Пример #2
0
        private void UpdateRules()
        {
            if (_model.IsManual)
            {
                ChannelListItem channelItem = _manualChannelComboBox.SelectedItem as ChannelListItem;
                if (channelItem != null &&
                    channelItem.ChannelId != Guid.Empty &&
                    (_manualDurationDateTimePicker.Value.Hour != 0 || _manualDurationDateTimePicker.Value.Minute != 0))
                {
                    DateTime startTime = _manualDatePicker.Value.Date.Add(
                        new TimeSpan(_manualTimePicker.Value.Hour, _manualTimePicker.Value.Minute, 0));
                    TimeSpan duration =
                        new TimeSpan(_manualDurationDateTimePicker.Value.Hour, _manualDurationDateTimePicker.Value.Minute, 0);

                    ScheduleDaysOfWeek daysOfWeek = _manualScheduleDaysOfWeekControl.ScheduleDaysOfWeek;
                    _controller.UpdateManualSchedule(channelItem.ChannelId, channelItem.ChannelDisplayName, startTime, duration, daysOfWeek);
                    _nameTextBox.Text = _model.Schedule.Name;
                }
            }
            else
            {
                List <ScheduleRule> rules = new List <ScheduleRule>();

                _controller.AppendTitleRule(rules, _titleRuleTypeComboBox.SelectedIndex, _titleTextBox.Text);
                _controller.AppendSubTitleRule(rules, _subTitleRuleTypeComboBox.SelectedIndex, _subTitleTextBox.Text);
                _controller.AppendEpisodeNumberRule(rules, _episodeNumberRuleTypeComboBox.SelectedIndex, _episodeNumberTextBox.Text);

                if (_descriptionOrAnyComboBox.SelectedIndex == 1)
                {
                    _controller.AppendDescriptionRule(rules, _descriptionOrAnyTextBox.Text);
                }
                else
                {
                    _controller.AppendProgramInfoRule(rules, _descriptionOrAnyTextBox.Text);
                }
                _controller.AppendOnDateAndDaysOfWeekRule(rules, _scheduleDaysOfWeekControl.ScheduleDaysOfWeek,
                                                          _onDateDateTimePicker.Checked ? _onDateDateTimePicker.Value : (DateTime?)null);
                _controller.AppendAroundTimeRule(rules, _aroundCheckBox.Checked ? _aroundDateTimePicker.Value : (DateTime?)null);
                _controller.AppendStartingBetweenRule(rules, _betweenCheckBox.Checked, _betweenFromDateTimePicker.Value, _betweenToDateTimePicker.Value);
                _controller.AppendCategoriesRule(rules, _notInCategoriesRadioButton.Checked, _categoriesListBox.Items);
                _controller.AppendDirectedByRule(rules, _directorsListBox.Items);
                _controller.AppendWithActorRule(rules, _actorsListBox.Items);
                _controller.AppendNewEpisodesOnlyRule(rules, _newEpisodesOnlyCheckBox.Checked);
                _controller.AppendNewTitlesOnlyRule(rules, _newTitlesOnlyCheckBox.Checked);
                _controller.AppendSkipRepeatsRule(rules, _skipRepeatsCheckBox.Checked);

                List <Guid> channelIds = new List <Guid>();
                foreach (ChannelListItem item in _tvChannelsListBox.Items)
                {
                    channelIds.Add(item.ChannelId);
                }
                _controller.AppendChannelsRule(rules, _notInChannelsRadioButton.Checked, channelIds);

                _model.Schedule.Rules = rules;
            }
        }
Пример #3
0
        public static List <DayOfWeek> GetDaysOfWeek(ScheduleDaysOfWeek scheduleDaysOfWeek)
        {
            var daysOfWeek = new List <DayOfWeek>();

            if ((scheduleDaysOfWeek & ScheduleDaysOfWeek.Mondays) != 0)
            {
                daysOfWeek.Add(DayOfWeek.Monday);
            }

            if ((scheduleDaysOfWeek & ScheduleDaysOfWeek.Tuesdays) != 0)
            {
                daysOfWeek.Add(DayOfWeek.Tuesday);
            }

            if ((scheduleDaysOfWeek & ScheduleDaysOfWeek.Wednesdays) != 0)
            {
                daysOfWeek.Add(DayOfWeek.Wednesday);
            }

            if ((scheduleDaysOfWeek & ScheduleDaysOfWeek.Thursdays) != 0)
            {
                daysOfWeek.Add(DayOfWeek.Thursday);
            }

            if ((scheduleDaysOfWeek & ScheduleDaysOfWeek.Fridays) != 0)
            {
                daysOfWeek.Add(DayOfWeek.Friday);
            }

            if ((scheduleDaysOfWeek & ScheduleDaysOfWeek.Saturdays) != 0)
            {
                daysOfWeek.Add(DayOfWeek.Saturday);
            }

            if ((scheduleDaysOfWeek & ScheduleDaysOfWeek.Sundays) != 0)
            {
                daysOfWeek.Add(DayOfWeek.Sunday);
            }

            return(daysOfWeek);
        }
Пример #4
0
 public void AppendOnDateAndDaysOfWeekRule(List <ScheduleRule> rules, ScheduleDaysOfWeek daysOfWeek, DateTime?onDateTime)
 {
     if (daysOfWeek == ScheduleDaysOfWeek.None)
     {
         if (onDateTime.HasValue)
         {
             rules.Add(ScheduleRuleType.OnDate, onDateTime.Value.Date);
         }
     }
     else
     {
         if (onDateTime.HasValue)
         {
             rules.Add(ScheduleRuleType.DaysOfWeek, daysOfWeek, onDateTime.Value.Date);
         }
         else
         {
             rules.Add(ScheduleRuleType.DaysOfWeek, daysOfWeek);
         }
     }
 }
 public static void AppendOnDateAndDaysOfWeekRule(ScheduleRules rules, ScheduleDaysOfWeek daysOfWeek, DateTime? onDateTime)
 {
     if (daysOfWeek == ScheduleDaysOfWeek.None)
     {
         if (onDateTime.HasValue)
         {
             rules.Add(ScheduleRuleType.OnDate, onDateTime.Value.Date);
         }
     }
     else
     {
         if (onDateTime.HasValue)
         {
             rules.Add(ScheduleRuleType.DaysOfWeek, daysOfWeek, onDateTime.Value.Date);
         }
         else
         {
             rules.Add(ScheduleRuleType.DaysOfWeek, daysOfWeek);
         }
     }
 }
Пример #6
0
        private string BuildManualScheduleName(string channelDisplayName, DateTime startTime, TimeSpan duration, ScheduleDaysOfWeek daysOfWeek)
        {
            StringBuilder name = new StringBuilder();

            if (daysOfWeek == ScheduleDaysOfWeek.None)
            {
                name.AppendFormat("{0} {1:g} ({2:00}:{3:00})", channelDisplayName, startTime, duration.Hours, duration.Minutes);
            }
            else
            {
                name.AppendFormat("{0} ", channelDisplayName);
                if ((daysOfWeek & ScheduleDaysOfWeek.Mondays) != 0)
                {
                    name.Append("Mo,");
                }
                if ((daysOfWeek & ScheduleDaysOfWeek.Tuesdays) != 0)
                {
                    name.Append("Tu,");
                }
                if ((daysOfWeek & ScheduleDaysOfWeek.Wednesdays) != 0)
                {
                    name.Append("We,");
                }
                if ((daysOfWeek & ScheduleDaysOfWeek.Thursdays) != 0)
                {
                    name.Append("Th,");
                }
                if ((daysOfWeek & ScheduleDaysOfWeek.Fridays) != 0)
                {
                    name.Append("Fr,");
                }
                if ((daysOfWeek & ScheduleDaysOfWeek.Saturdays) != 0)
                {
                    name.Append("Sa,");
                }
                if ((daysOfWeek & ScheduleDaysOfWeek.Sundays) != 0)
                {
                    name.Append("Su,");
                }
                name.Remove(name.Length - 1, 1);
                name.AppendFormat(" at {0:00}:{1:00} ({2:00}:{3:00})",
                                  startTime.TimeOfDay.Hours, startTime.TimeOfDay.Minutes, duration.Hours, duration.Minutes);
            }
            return(name.ToString());
        }
Пример #7
0
        public void UpdateManualSchedule(Guid channelId, string channelDisplayName, DateTime startTime, TimeSpan duration, ScheduleDaysOfWeek daysOfWeek)
        {
            List <ScheduleRule> rules = new List <ScheduleRule>();

            rules.Add(ScheduleRuleType.Channels, channelId);
            rules.Add(ScheduleRuleType.ManualSchedule, startTime, new ScheduleTime(duration));
            if (daysOfWeek != ScheduleDaysOfWeek.None)
            {
                rules.Add(ScheduleRuleType.DaysOfWeek, daysOfWeek);
            }
            _model.Schedule.Name  = BuildManualScheduleName(channelDisplayName, startTime, duration, daysOfWeek);
            _model.Schedule.Rules = rules;
        }
Пример #8
0
        private void Onrecord(ScheduleType scheduleType)
        {
            Schedule schedule = null;
            if (_upcomingProgram != null)
            {
                schedule = SchedulerAgent.GetScheduleById(_upcomingProgram.ScheduleId);
            }
            if (_upcomingProgram != null && schedule != null
                && schedule.ScheduleType == scheduleType)//delete schedule
            {
                if (_upcomingProgram.IsCancelled)
                {
                    SchedulerAgent.UncancelUpcomingProgram(_upcomingProgram.ScheduleId, _upcomingProgram.GuideProgramId, _upcomingProgram.Channel.ChannelId, _upcomingProgram.StartTime);
                    try
                    {
                        //refresh _upcomingProgram
                        _upcomingProgram = SchedulerAgent.GetUpcomingPrograms(schedule, true)[0];
                    }
                    catch { }
                }
                else
                {
                    if (_upcomingProgram.IsPartOfSeries)
                    {
                        GUIDialogYesNo dlgYesNo = (GUIDialogYesNo)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_YES_NO);
                        if (dlgYesNo != null)
                        {
                            dlgYesNo.SetHeading(Utility.GetLocalizedText(TextId.DeleteEntireSchedule));
                            dlgYesNo.SetLine(1, "\"" + schedule.Name + "\"");
                            dlgYesNo.SetLine(2, Utility.GetLocalizedText(TextId.AreYouSure));
                            dlgYesNo.SetLine(3, String.Empty);
                            dlgYesNo.SetDefaultToYes(false);
                            dlgYesNo.DoModal(GUIWindowManager.ActiveWindow);
                            if (dlgYesNo.IsConfirmed)
                            {
                                SchedulerAgent.DeleteSchedule(schedule.ScheduleId);
                                _upcomingProgram = null;
                            }
                        }
                    }
                    else
                    {
                        SchedulerAgent.DeleteSchedule(_upcomingProgram.ScheduleId);
                        _upcomingProgram = null;
                    }
                }
            }
            else//create new schedule
            {
                TimeSpan duration = new TimeSpan(Int32.Parse(_spinHoursDuration.GetLabel()), Int32.Parse(_spinMinutesDuration.GetLabel()), 0);
                DateTime startTime = new DateTime(Int32.Parse(_spinStartYear.GetLabel()), Int32.Parse(_spinStartMonth.GetLabel()), Int32.Parse(_spinStartDay.GetLabel()), Int32.Parse(_spinStartHour.GetLabel()), Int32.Parse(_spinStartMinute.GetLabel()), 0);
                ScheduleDaysOfWeek daysOfWeek = new ScheduleDaysOfWeek();

                //TODO: What if we have multiple channels with the same name
                Channel channel = SchedulerAgent.GetChannelByDisplayName(_channelType, _spinChannel.GetLabel());

                Schedule newSchedule = null;
                newSchedule = SchedulerAgent.CreateNewSchedule(_channelType, scheduleType);
                newSchedule.Rules.Add(ScheduleRuleType.Channels, channel.ChannelId);
                newSchedule.Rules.Add(ScheduleRuleType.ManualSchedule, startTime, new ScheduleTime(duration));
                if (!_recordOnce)
                {
                    string days = " ";
                    if (_mondayButton.Selected)
                    {
                        daysOfWeek = daysOfWeek | ScheduleDaysOfWeek.Mondays;
                        days += Utility.GetLocalizedText(TextId.Mon) + ",";
                    }
                    if (_tuesdayButton.Selected)
                    {
                        daysOfWeek = daysOfWeek | ScheduleDaysOfWeek.Tuesdays;
                        days += Utility.GetLocalizedText(TextId.Tue) + ",";
                    }
                    if (_wednesdayButton.Selected)
                    {
                        daysOfWeek = daysOfWeek | ScheduleDaysOfWeek.Wednesdays;
                        days += Utility.GetLocalizedText(TextId.Wed) + ",";
                    }
                    if (_thursdayButton.Selected)
                    {
                        daysOfWeek = daysOfWeek | ScheduleDaysOfWeek.Thursdays;
                        days += Utility.GetLocalizedText(TextId.Thu) + ",";
                    }
                    if (_fridayButton.Selected)
                    {
                        daysOfWeek = daysOfWeek | ScheduleDaysOfWeek.Fridays;
                        days += Utility.GetLocalizedText(TextId.Fri) + ",";
                    }
                    if (_saturdayButton.Selected)
                    {
                        daysOfWeek = daysOfWeek | ScheduleDaysOfWeek.Saturdays;
                        days += Utility.GetLocalizedText(TextId.Sat) + ",";
                    }
                    if (_sundayButton.Selected)
                    {
                        daysOfWeek = daysOfWeek | ScheduleDaysOfWeek.Sundays;
                        days += Utility.GetLocalizedText(TextId.Sun) + ",";
                    }
                    days = days.Remove(days.Length - 1);
                    newSchedule.Rules.Add(ScheduleRuleType.DaysOfWeek, daysOfWeek);
                    newSchedule.Name = String.Format(CultureInfo.CurrentCulture, "{0} {1} {2:t}-{3:t}", channel.DisplayName, days, startTime, startTime.Add(duration));
                }
                else
                {
                    newSchedule.Name = String.Format(CultureInfo.CurrentCulture, "{0} {1:g}-{2:t}", channel.DisplayName, startTime, startTime.Add(duration));
                }

                //TODO: try to prevent dublicate manual schedules
                //and find a better way to get the newly created "_schedule" and  "_upcomingProgram"
                if (newSchedule != null)
                {
                    newSchedule.ScheduleType = scheduleType;
                    SchedulerAgent.SaveSchedule(newSchedule);

                    bool found = false;
                    UpcomingProgram[] _programs = SchedulerAgent.GetAllUpcomingPrograms(scheduleType, true);
                    foreach (UpcomingProgram _prog in _programs)
                    {
                        if (_prog.Channel.ChannelId == channel.ChannelId
                        && _prog.Duration == duration
                        && !found)
                        {
                            Schedule _schedule = SchedulerAgent.GetScheduleById(_prog.ScheduleId);
                            if (_schedule.Rules.FindRuleByType(ScheduleRuleType.ManualSchedule) != null)
                            {
                                if (_schedule.Name == newSchedule.Name)
                                {
                                    if (_recordOnce
                                        && _prog.StartTime == startTime)
                                    {
                                        _upcomingProgram = _prog;
                                        found = true;
                                    }
                                    else if (!_recordOnce && _schedule.Rules.FindRuleByType(ScheduleRuleType.DaysOfWeek) != null
                                        && _schedule.Rules.FindRuleByType(ScheduleRuleType.DaysOfWeek).Arguments[0].ToString() == daysOfWeek.ToString()
                                        && Convert.ToDateTime(_schedule.Rules.FindRuleByType(ScheduleRuleType.ManualSchedule).Arguments[0]) == startTime)
                                    {
                                        _upcomingProgram = _prog;
                                        found = true;
                                    }
                                    Update(_schedule);
                                    break;
                                }
                            }
                        }
                    }

                    if (!found)
                    {
                        GUIWindowManager.ShowPreviousWindow();
                    }
                }
            }
        }
Пример #9
0
        private void Onrecord(ScheduleType scheduleType)
        {
            Schedule schedule = null;

            if (_upcomingProgram != null)
            {
                schedule = Proxies.SchedulerService.GetScheduleById(_upcomingProgram.ScheduleId).Result;
            }
            if (_upcomingProgram != null && schedule != null &&
                schedule.ScheduleType == scheduleType)   //delete schedule
            {
                if (_upcomingProgram.IsCancelled)
                {
                    Proxies.SchedulerService.UncancelUpcomingProgram(_upcomingProgram.ScheduleId, _upcomingProgram.GuideProgramId, _upcomingProgram.Channel.ChannelId, _upcomingProgram.StartTime).Wait();
                    try
                    {
                        //refresh _upcomingProgram
                        _upcomingProgram = Proxies.SchedulerService.GetUpcomingPrograms(schedule, true).Result[0];
                    }
                    catch { }
                }
                else
                {
                    if (_upcomingProgram.IsPartOfSeries)
                    {
                        GUIDialogYesNo dlgYesNo = (GUIDialogYesNo)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_YES_NO);
                        if (dlgYesNo != null)
                        {
                            dlgYesNo.SetHeading(Utility.GetLocalizedText(TextId.DeleteEntireSchedule));
                            dlgYesNo.SetLine(1, "\"" + schedule.Name + "\"");
                            dlgYesNo.SetLine(2, Utility.GetLocalizedText(TextId.AreYouSure));
                            dlgYesNo.SetLine(3, String.Empty);
                            dlgYesNo.SetDefaultToYes(false);
                            dlgYesNo.DoModal(GUIWindowManager.ActiveWindow);
                            if (dlgYesNo.IsConfirmed)
                            {
                                Proxies.SchedulerService.DeleteSchedule(schedule.ScheduleId).Wait();
                                _upcomingProgram = null;
                            }
                        }
                    }
                    else
                    {
                        Proxies.SchedulerService.DeleteSchedule(_upcomingProgram.ScheduleId).Wait();
                        _upcomingProgram = null;
                    }
                }
            }
            else//create new schedule
            {
                TimeSpan           duration   = new TimeSpan(Int32.Parse(_spinHoursDuration.GetLabel()), Int32.Parse(_spinMinutesDuration.GetLabel()), 0);
                DateTime           startTime  = new DateTime(Int32.Parse(_spinStartYear.GetLabel()), Int32.Parse(_spinStartMonth.GetLabel()), Int32.Parse(_spinStartDay.GetLabel()), Int32.Parse(_spinStartHour.GetLabel()), Int32.Parse(_spinStartMinute.GetLabel()), 0);
                ScheduleDaysOfWeek daysOfWeek = new ScheduleDaysOfWeek();

                //TODO: What if we have multiple channels with the same name
                Channel channel = Proxies.SchedulerService.GetChannelByDisplayName(_channelType, _spinChannel.GetLabel()).Result;

                Schedule newSchedule = null;
                newSchedule = Proxies.SchedulerService.CreateNewSchedule(_channelType, scheduleType).Result;
                newSchedule.Rules.Add(ScheduleRuleType.Channels, channel.ChannelId);
                newSchedule.Rules.Add(ScheduleRuleType.ManualSchedule, startTime, new ScheduleTime(duration));
                if (!_recordOnce)
                {
                    string days = " ";
                    if (_mondayButton.Selected)
                    {
                        daysOfWeek = daysOfWeek | ScheduleDaysOfWeek.Mondays;
                        days      += Utility.GetLocalizedText(TextId.Mon) + ",";
                    }
                    if (_tuesdayButton.Selected)
                    {
                        daysOfWeek = daysOfWeek | ScheduleDaysOfWeek.Tuesdays;
                        days      += Utility.GetLocalizedText(TextId.Tue) + ",";
                    }
                    if (_wednesdayButton.Selected)
                    {
                        daysOfWeek = daysOfWeek | ScheduleDaysOfWeek.Wednesdays;
                        days      += Utility.GetLocalizedText(TextId.Wed) + ",";
                    }
                    if (_thursdayButton.Selected)
                    {
                        daysOfWeek = daysOfWeek | ScheduleDaysOfWeek.Thursdays;
                        days      += Utility.GetLocalizedText(TextId.Thu) + ",";
                    }
                    if (_fridayButton.Selected)
                    {
                        daysOfWeek = daysOfWeek | ScheduleDaysOfWeek.Fridays;
                        days      += Utility.GetLocalizedText(TextId.Fri) + ",";
                    }
                    if (_saturdayButton.Selected)
                    {
                        daysOfWeek = daysOfWeek | ScheduleDaysOfWeek.Saturdays;
                        days      += Utility.GetLocalizedText(TextId.Sat) + ",";
                    }
                    if (_sundayButton.Selected)
                    {
                        daysOfWeek = daysOfWeek | ScheduleDaysOfWeek.Sundays;
                        days      += Utility.GetLocalizedText(TextId.Sun) + ",";
                    }
                    days = days.Remove(days.Length - 1);
                    newSchedule.Rules.Add(ScheduleRuleType.DaysOfWeek, daysOfWeek);
                    newSchedule.Name = String.Format(CultureInfo.CurrentCulture, "{0} {1} {2:t}-{3:t}", channel.DisplayName, days, startTime, startTime.Add(duration));
                }
                else
                {
                    newSchedule.Name = String.Format(CultureInfo.CurrentCulture, "{0} {1:g}-{2:t}", channel.DisplayName, startTime, startTime.Add(duration));
                }

                //TODO: try to prevent dublicate manual schedules
                //and find a better way to get the newly created "_schedule" and  "_upcomingProgram"
                if (newSchedule != null)
                {
                    newSchedule.ScheduleType = scheduleType;
                    Proxies.SchedulerService.SaveSchedule(newSchedule).Wait();

                    bool found     = false;
                    var  _programs = Proxies.SchedulerService.GetAllUpcomingPrograms(scheduleType, true).Result;
                    foreach (UpcomingProgram _prog in _programs)
                    {
                        if (_prog.Channel.ChannelId == channel.ChannelId &&
                            _prog.Duration == duration &&
                            !found)
                        {
                            Schedule _schedule = Proxies.SchedulerService.GetScheduleById(_prog.ScheduleId).Result;
                            if (_schedule.Rules.FindRuleByType(ScheduleRuleType.ManualSchedule) != null)
                            {
                                if (_schedule.Name == newSchedule.Name)
                                {
                                    if (_recordOnce &&
                                        _prog.StartTime == startTime)
                                    {
                                        _upcomingProgram = _prog;
                                        found            = true;
                                    }
                                    else if (!_recordOnce && _schedule.Rules.FindRuleByType(ScheduleRuleType.DaysOfWeek) != null &&
                                             _schedule.Rules.FindRuleByType(ScheduleRuleType.DaysOfWeek).Arguments[0].ToString() == daysOfWeek.ToString() &&
                                             Convert.ToDateTime(_schedule.Rules.FindRuleByType(ScheduleRuleType.ManualSchedule).Arguments[0]) == startTime)
                                    {
                                        _upcomingProgram = _prog;
                                        found            = true;
                                    }
                                    Update(_schedule);
                                    break;
                                }
                            }
                        }
                    }

                    if (!found)
                    {
                        GUIWindowManager.ShowPreviousWindow();
                    }
                }
            }
        }
 private string BuildManualScheduleName(string channelDisplayName, DateTime startTime, TimeSpan duration, ScheduleDaysOfWeek daysOfWeek)
 {
     StringBuilder name = new StringBuilder();
     if (daysOfWeek == ScheduleDaysOfWeek.None)
     {
         name.AppendFormat("{0} {1:g} ({2:00}:{3:00})", channelDisplayName, startTime, duration.Hours, duration.Minutes);
     }
     else
     {
         name.AppendFormat("{0} ", channelDisplayName);
         if ((daysOfWeek & ScheduleDaysOfWeek.Mondays) != 0)
         {
             name.Append("Mo,");
         }
         if ((daysOfWeek & ScheduleDaysOfWeek.Tuesdays) != 0)
         {
             name.Append("Tu,");
         }
         if ((daysOfWeek & ScheduleDaysOfWeek.Wednesdays) != 0)
         {
             name.Append("We,");
         }
         if ((daysOfWeek & ScheduleDaysOfWeek.Thursdays) != 0)
         {
             name.Append("Th,");
         }
         if ((daysOfWeek & ScheduleDaysOfWeek.Fridays) != 0)
         {
             name.Append("Fr,");
         }
         if ((daysOfWeek & ScheduleDaysOfWeek.Saturdays) != 0)
         {
             name.Append("Sa,");
         }
         if ((daysOfWeek & ScheduleDaysOfWeek.Sundays) != 0)
         {
             name.Append("Su,");
         }
         name.Remove(name.Length - 1, 1);
         name.AppendFormat(" at {0:00}:{1:00} ({2:00}:{3:00})",
             startTime.TimeOfDay.Hours, startTime.TimeOfDay.Minutes, duration.Hours, duration.Minutes);
     }
     return name.ToString();
 }
 public void UpdateManualSchedule(Guid channelId, string channelDisplayName, DateTime startTime, TimeSpan duration, ScheduleDaysOfWeek daysOfWeek)
 {
     ScheduleRules rules = new ScheduleRules();
     rules.Add(ScheduleRuleType.Channels, channelId);
     rules.Add(ScheduleRuleType.ManualSchedule, startTime, new ScheduleTime(duration));
     if (daysOfWeek != ScheduleDaysOfWeek.None)
     {
         rules.Add(ScheduleRuleType.DaysOfWeek, daysOfWeek);
     }
     _model.Schedule.Name = BuildManualScheduleName(channelDisplayName, startTime, duration, daysOfWeek);
     _model.Schedule.Rules = rules;
 }
Пример #12
0
        private void ShowRulesInUI()
        {
            _onDateDateTimePicker.Checked           = false;
            _descriptionOrAnyComboBox.SelectedIndex = 0;

            int typeIndex;

            _titleTextBox.Text = _controller.GetTitleRuleText(out typeIndex);
            _titleRuleTypeComboBox.SelectedIndex = typeIndex;

            _subTitleTextBox.Text = _controller.GetSubTitleRuleText(out typeIndex);
            _subTitleRuleTypeComboBox.SelectedIndex = typeIndex;

            _episodeNumberTextBox.Text = _controller.GetEpisodeNumberRuleText(out typeIndex);
            _episodeNumberRuleTypeComboBox.SelectedIndex = typeIndex;

            bool isProgramInfo;

            _descriptionOrAnyTextBox.Text           = _controller.GetDescriptionOrProgramInfoRuleText(out isProgramInfo);
            _descriptionOrAnyComboBox.SelectedIndex = isProgramInfo ? 0 : 1;

            foreach (ScheduleRule rule in _model.Schedule.Rules)
            {
                switch (rule.Type)
                {
                case ScheduleRuleType.NotOnChannels:
                    if (!_manualScheduleGroupBox.Visible)
                    {
                        goto case ScheduleRuleType.Channels;
                    }
                    break;

                case ScheduleRuleType.Channels:
                    _tvChannelsListBox.Items.Clear();
                    foreach (Guid channelId in rule.Arguments)
                    {
                        ChannelListItem item = FindChannelItem(_channelComboBox, channelId);
                        if (item == null &&
                            _model.AllChannels.ContainsKey(channelId))
                        {
                            item = new ChannelListItem(_model.AllChannels[channelId]);
                        }
                        if (item != null)
                        {
                            _tvChannelsListBox.Items.Add(item);
                        }
                    }
                    if (_manualScheduleGroupBox.Visible &&
                        rule.Arguments.Count > 0)
                    {
                        Guid channelId = (Guid)rule.Arguments[0];
                        SelectGroupWithChannel(_manualChannelGroupComboBox, channelId);
                        _manualChannelComboBox.SelectedItem = FindChannelItem(_manualChannelComboBox, channelId);
                    }
                    _notInChannelsRadioButton.Checked = (rule.Type == ScheduleRuleType.NotOnChannels);
                    break;

                case ScheduleRuleType.OnDate:
                    _onDateLabel.Text             = _onDateLabelText;
                    _manualDateTimeLabel.Text     = _onDateLabelText;
                    _onDateDateTimePicker.Checked = true;
                    _onDateDateTimePicker.Value   = (DateTime)rule.Arguments[0];
                    _scheduleDaysOfWeekControl.ScheduleDaysOfWeek = ScheduleDaysOfWeek.None;
                    break;

                case ScheduleRuleType.DaysOfWeek:
                    _onDateLabel.Text         = _fromDateLabelText;
                    _manualDateTimeLabel.Text = _fromDateLabelText;
                    ScheduleDaysOfWeek scheduleDaysOfWeek = (ScheduleDaysOfWeek)rule.Arguments[0];
                    _scheduleDaysOfWeekControl.ScheduleDaysOfWeek       = scheduleDaysOfWeek;
                    _manualScheduleDaysOfWeekControl.ScheduleDaysOfWeek = scheduleDaysOfWeek;
                    if (rule.Arguments.Count > 1)
                    {
                        _onDateDateTimePicker.Checked = true;
                        _onDateDateTimePicker.Value   = (DateTime)rule.Arguments[1];
                    }
                    else
                    {
                        _onDateDateTimePicker.Checked = false;
                        _onDateDateTimePicker.Value   = DateTime.Today;
                    }
                    break;

                case ScheduleRuleType.AroundTime:
                    _aroundCheckBox.Checked = true;
                    ScheduleTime aroundTime = (ScheduleTime)rule.Arguments[0];
                    _aroundDateTimePicker.Value = DateTime.Today.AddTicks(aroundTime.Ticks);
                    break;

                case ScheduleRuleType.StartingBetween:
                    _betweenCheckBox.Checked = true;
                    ScheduleTime fromTime = (ScheduleTime)rule.Arguments[0];
                    ScheduleTime toTime   = (ScheduleTime)rule.Arguments[1];
                    _betweenFromDateTimePicker.Value = DateTime.Today.AddTicks(fromTime.Ticks);
                    _betweenToDateTimePicker.Value   = DateTime.Today.AddTicks(toTime.Ticks);
                    break;

                case ScheduleRuleType.CategoryEquals:
                case ScheduleRuleType.CategoryDoesNotEqual:
                    foreach (string category in rule.Arguments)
                    {
                        _categoriesListBox.Items.Add(category);
                    }
                    _notInCategoriesRadioButton.Checked = (rule.Type == ScheduleRuleType.CategoryDoesNotEqual);
                    break;

                case ScheduleRuleType.DirectedBy:
                    foreach (string director in rule.Arguments)
                    {
                        _directorsListBox.Items.Add(director);
                    }
                    break;

                case ScheduleRuleType.WithActor:
                    foreach (string actor in rule.Arguments)
                    {
                        _actorsListBox.Items.Add(actor);
                    }
                    break;

                case ScheduleRuleType.NewEpisodesOnly:
                    _newEpisodesOnlyCheckBox.Checked = (bool)rule.Arguments[0];
                    break;

                case ScheduleRuleType.NewTitlesOnly:
                    _newTitlesOnlyCheckBox.Checked = (bool)rule.Arguments[0];
                    break;

                case ScheduleRuleType.SkipRepeats:
                    _skipRepeatsCheckBox.Checked = (bool)rule.Arguments[0];
                    break;

                case ScheduleRuleType.ManualSchedule:
                    DateTime     manualDateTime = (DateTime)rule.Arguments[0];
                    ScheduleTime manualDuration = (ScheduleTime)rule.Arguments[1];
                    _manualDatePicker.Value             = manualDateTime.Date;
                    _manualTimePicker.Value             = DateTime.Today.Add(manualDateTime.TimeOfDay);
                    _manualDurationDateTimePicker.Value = DateTime.Today.AddTicks(manualDuration.Ticks);
                    break;
                }
            }

            RefreshListBoxAllLabels();
        }
Пример #13
0
        public static List<DayOfWeek> GetDaysOfWeek(ScheduleDaysOfWeek scheduleDaysOfWeek)
        {
            var daysOfWeek = new List<DayOfWeek>();

            if ((scheduleDaysOfWeek & ScheduleDaysOfWeek.Mondays) != 0)
            {
                daysOfWeek.Add(DayOfWeek.Monday);
            }

            if ((scheduleDaysOfWeek & ScheduleDaysOfWeek.Tuesdays) != 0)
            {
                daysOfWeek.Add(DayOfWeek.Tuesday);
            }

            if ((scheduleDaysOfWeek & ScheduleDaysOfWeek.Wednesdays) != 0)
            {
                daysOfWeek.Add(DayOfWeek.Wednesday);
            }

            if ((scheduleDaysOfWeek & ScheduleDaysOfWeek.Thursdays) != 0)
            {
                daysOfWeek.Add(DayOfWeek.Thursday);
            }

            if ((scheduleDaysOfWeek & ScheduleDaysOfWeek.Fridays) != 0)
            {
                daysOfWeek.Add(DayOfWeek.Friday);
            }

            if ((scheduleDaysOfWeek & ScheduleDaysOfWeek.Saturdays) != 0)
            {
                daysOfWeek.Add(DayOfWeek.Saturday);
            }

            if ((scheduleDaysOfWeek & ScheduleDaysOfWeek.Sundays) != 0)
            {
                daysOfWeek.Add(DayOfWeek.Sunday);
            }

            return daysOfWeek;
        }