/// <summary> /// Convert how long ago a recording took place into a meaningful description /// </summary> /// <param name="aStartTime">A recordings start time</param> /// <returns>The spoken date label</returns> protected static string GetSpokenViewDate(DateTime aStartTime) { DateTime now = DateTime.Now; DateTime today = now.Date; var thisMonth = new DateTime(today.Year, today.Month, 1); var lastMonth = thisMonth.AddMonths(-1); DayOfWeek firstDayOfWeek = WeekEndTool.GetFirstWorkingDay(); DateTime firstDayOfThisWeek = today; while (firstDayOfThisWeek.DayOfWeek != firstDayOfWeek) { firstDayOfThisWeek = firstDayOfThisWeek.AddDays(-1); } int daysToStartOfWeek = (aStartTime.Date - firstDayOfThisWeek).Days; int daysToStartOfLastWeek = daysToStartOfWeek + 7; if (now < aStartTime) { return(GUILocalizeStrings.Get(6095)); // "Future" } else if (today.Equals(aStartTime.Date)) { return(GUILocalizeStrings.Get(6030)); // "Today" } else if (today.Equals(aStartTime.AddDays(1).Date)) { return(GUILocalizeStrings.Get(6040)); // "Yesterday" } else if (0 <= daysToStartOfWeek && daysToStartOfWeek < 5) // current week excluding today and yesterday { return(GUILocalizeStrings.Get(6055)); // "Earlier this week"; } else if (0 <= daysToStartOfLastWeek && daysToStartOfLastWeek < 7) { return(GUILocalizeStrings.Get(6056)); // "Last week" } else if (thisMonth.Equals(new DateTime(aStartTime.Year, aStartTime.Month, 1))) { return(GUILocalizeStrings.Get(6062)); //"Earlier this month" } else if (lastMonth.Equals(new DateTime(aStartTime.Year, aStartTime.Month, 1))) { return(GUILocalizeStrings.Get(6065)); // "Last month" } else if (today.Year.Equals(aStartTime.Year)) { return(GUILocalizeStrings.Get(6075)); // "Earlier this year" } else if (today.Year.Equals(aStartTime.AddYears(1).Year)) { return(GUILocalizeStrings.Get(6080)); // "Last year"; } else { return(GUILocalizeStrings.Get(6090)); // "Older" } }
/// <summary> /// gets WorkingDays Schedules in a given list of schedules for the next 30 days /// canceled Schedules are ignored /// </summary> /// <param name="schedulesList">a IList contaning the schedules to parse</param> /// <returns>a collection containing the WorkingDays schedules</returns> private void getWorkingDaysSchedules(IList <Schedule> schedulesList, IList <Schedule> refFillList) { foreach (Schedule schedule in schedulesList) { ScheduleRecordingType scheduleType = (ScheduleRecordingType)schedule.ScheduleType; if (schedule.Canceled != Schedule.MinSchedule) { continue; } if (scheduleType != ScheduleRecordingType.WorkingDays) { continue; } DateTime tempDate; // generate the weekly schedules for the next 30 days for (int i = 0; i <= 30; i++) { tempDate = DateTime.Now.AddDays(i); if ((WeekEndTool.IsWorkingDay(tempDate.DayOfWeek)) && (tempDate.Date >= schedule.StartTime.Date)) { Schedule tempSchedule = schedule.Clone(); #region Set Schedule Time & Date // adjusts Endtime for schedules that overlap 2 days (eg : 23:00 - 00:30) if (tempSchedule.StartTime.Day != tempSchedule.EndTime.Day) { tempSchedule.StartTime = new DateTime(tempDate.Year, tempDate.Month, tempDate.Day, tempSchedule.StartTime.Hour, tempSchedule.StartTime.Minute, tempSchedule.StartTime.Second); tempSchedule.EndTime = new DateTime(tempDate.Year, tempDate.Month, tempDate.Day, tempSchedule.EndTime.Hour, tempSchedule.EndTime.Minute, tempSchedule.EndTime.Second); tempSchedule.EndTime = tempSchedule.EndTime.AddDays(1); } else { tempSchedule.StartTime = new DateTime(tempDate.Year, tempDate.Month, tempDate.Day, tempSchedule.StartTime.Hour, tempSchedule.StartTime.Minute, tempSchedule.StartTime.Second); tempSchedule.EndTime = new DateTime(tempDate.Year, tempDate.Month, tempDate.Day, tempSchedule.EndTime.Hour, tempSchedule.EndTime.Minute, tempSchedule.EndTime.Second); } #endregion refFillList.Add(tempSchedule); } //if (_tempDate.DayOfWeek == _Schedule.StartTime.DayOfWeek && _tempDate >= _Schedule.StartTime) } //for (int i = 0; i < 30; i++) } //foreach (Schedule _Schedule in schedulesList) foreach (Schedule sched in refFillList) { schedulesList.Remove(sched); } }
private string GetScheduleType(Schedule schedule, int type) { ScheduleRecordingType ScheduleType = (ScheduleRecordingType)type; string strType = String.Empty; switch (ScheduleType) { 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 = String.Format(GUILocalizeStrings.Get(650), schedule.ReferencedChannel().DisplayName); ; //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 = String.Format(GUILocalizeStrings.Get(990000), schedule.ReferencedChannel().DisplayName);;//Weekly Everytime on this channel break; } return(strType); }
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); }
private void SetLabels() { for (int i = 0; i < GetItemCount(); ++i) { GUIListItem item = GetItem(i); if (item.IsFolder && item.Label.Equals("..")) { continue; } Schedule rec = (Schedule)item.TVTag; if (rec == null) { continue; } item.Label = rec.ProgramName; string strTime = String.Empty; string strType = String.Empty; switch (rec.ScheduleType) { case (int)ScheduleRecordingType.Once: item.Label2 = String.Format("{0} {1} - {2}", Utils.GetShortDayString(rec.StartTime), rec.StartTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat), rec.EndTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat)); ; break; case (int)ScheduleRecordingType.Daily: strTime = String.Format("{0}-{1}", rec.StartTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat), rec.EndTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat)); strType = GUILocalizeStrings.Get(648); item.Label2 = String.Format("{0} {1}", strType, strTime); break; case (int)ScheduleRecordingType.WorkingDays: strTime = String.Format("{0}-{1} {2}-{3}", GUILocalizeStrings.Get(WeekEndTool.GetText(DayType.FirstWorkingDay)), GUILocalizeStrings.Get(WeekEndTool.GetText(DayType.LastWorkingDay)), rec.StartTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat), rec.EndTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat)); strType = GUILocalizeStrings.Get(648); item.Label2 = String.Format("{0} {1}", strType, strTime); break; case (int)ScheduleRecordingType.Weekends: strTime = String.Format("{0}-{1} {2}-{3}", GUILocalizeStrings.Get(WeekEndTool.GetText(DayType.FirstWeekendDay)), GUILocalizeStrings.Get(WeekEndTool.GetText(DayType.LastWeekendDay)), rec.StartTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat), rec.EndTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat)); strType = GUILocalizeStrings.Get(649); item.Label2 = String.Format("{0} {1}", strType, strTime); break; case (int)ScheduleRecordingType.Weekly: string day; switch (rec.StartTime.DayOfWeek) { case DayOfWeek.Monday: day = GUILocalizeStrings.Get(11); break; case DayOfWeek.Tuesday: day = GUILocalizeStrings.Get(12); break; case DayOfWeek.Wednesday: day = GUILocalizeStrings.Get(13); break; case DayOfWeek.Thursday: day = GUILocalizeStrings.Get(14); break; case DayOfWeek.Friday: day = GUILocalizeStrings.Get(15); break; case DayOfWeek.Saturday: day = GUILocalizeStrings.Get(16); break; default: day = GUILocalizeStrings.Get(17); break; } strTime = String.Format("{0}-{1}", rec.StartTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat), rec.EndTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat)); strType = GUILocalizeStrings.Get(649); item.Label2 = String.Format("{0} {1} {2}", strType, day, strTime); break; case (int)ScheduleRecordingType.WeeklyEveryTimeOnThisChannel: switch (rec.StartTime.DayOfWeek) { case DayOfWeek.Monday: day = GUILocalizeStrings.Get(11); break; case DayOfWeek.Tuesday: day = GUILocalizeStrings.Get(12); break; case DayOfWeek.Wednesday: day = GUILocalizeStrings.Get(13); break; case DayOfWeek.Thursday: day = GUILocalizeStrings.Get(14); break; case DayOfWeek.Friday: day = GUILocalizeStrings.Get(15); break; case DayOfWeek.Saturday: day = GUILocalizeStrings.Get(16); break; default: day = GUILocalizeStrings.Get(17); break; } item.Label = rec.ProgramName; item.Label2 = GUILocalizeStrings.Get(990001, new object[] { day, rec.ReferencedChannel().DisplayName }); break; case (int)ScheduleRecordingType.EveryTimeOnThisChannel: item.Label = rec.ProgramName; item.Label2 = GUILocalizeStrings.Get(650, new object[] { rec.ReferencedChannel().DisplayName }); break; case (int)ScheduleRecordingType.EveryTimeOnEveryChannel: item.Label = rec.ProgramName; item.Label2 = GUILocalizeStrings.Get(651); break; } } }
/// <summary> /// GetWakeupTime determines the wakeup time for a Schedule when no guide data is present /// Note that this obviously only works for the following ScheduleRecordingsType's: /// - Once /// - Daily /// - Weekends /// - WorkingDays /// - Weekly /// </summary> /// <param name="schedule">Schedule to determine next wakeup time for</param> /// <returns>DateTime indicating the wakeup time for this Schedule</returns> private static DateTime GetWakeupTime(Schedule schedule) { ScheduleRecordingType type = (ScheduleRecordingType)schedule.ScheduleType; DateTime now = DateTime.Now; DateTime start = new DateTime(now.Year, now.Month, now.Day, schedule.StartTime.Hour, schedule.StartTime.Minute, schedule.StartTime.Second); DateTime stop = new DateTime(now.Year, now.Month, now.Day, schedule.EndTime.Hour, schedule.EndTime.Minute, schedule.EndTime.Second); switch (type) { case ScheduleRecordingType.Once: return(schedule.StartTime.AddMinutes(-schedule.PreRecordInterval)); case ScheduleRecordingType.Daily: // if schedule was already due today, then run tomorrow if (now > stop.AddMinutes(schedule.PostRecordInterval)) { start = start.AddDays(1); } return(start.AddMinutes(-schedule.PreRecordInterval)); case ScheduleRecordingType.Weekends: // check if it's a weekend currently if (WeekEndTool.IsWeekend(now.DayOfWeek)) { // check if schedule has been due already today if (now > stop.AddMinutes(schedule.PostRecordInterval)) { // if so, add appropriate days to wakeup time start = WeekEndTool.IsFirstWeekendDay(now.DayOfWeek) ? start.AddDays(1) : start.AddDays(6); } } else { // it's not a weekend so calculate number of days to add to current time int days = (int)WeekEndTool.FirstWeekendDay - (int)now.DayOfWeek; start = start.AddDays(days); } return(start.AddMinutes(-schedule.PreRecordInterval)); case ScheduleRecordingType.WorkingDays: // check if current time is in weekend; if so add appropriate number of days if (now.DayOfWeek == WeekEndTool.FirstWeekendDay) { start = start.AddDays(2); } else if (now.DayOfWeek == WeekEndTool.SecondWeekendDay) { start = start.AddDays(1); } else { // current time is on a working days; check if schedule has already been due if (now > stop.AddMinutes(schedule.PostRecordInterval)) { // schedule has been due, so add appropriate number of days start = now.DayOfWeek < (WeekEndTool.FirstWeekendDay - 1) ? start.AddDays(1) : start.AddDays(3); } } return(start.AddMinutes(-schedule.PreRecordInterval)); case ScheduleRecordingType.Weekly: // check if current day of week is same as schedule's day of week if (now.DayOfWeek == schedule.StartTime.DayOfWeek) { // check if schedule has been due if (now > stop.AddMinutes(schedule.PostRecordInterval)) { // schedule has been due, so record again next week start = start.AddDays(7); } } else { // current day of week isn't schedule's day of week, so // add appropriate number of days if (now.DayOfWeek < schedule.StartTime.DayOfWeek) { // schedule is due this week int days = schedule.StartTime.DayOfWeek - now.DayOfWeek; start = start.AddDays(days); } else { // schedule should start next week int days = 7 - (now.DayOfWeek - schedule.StartTime.DayOfWeek); start = start.AddDays(days); } } return(start.AddMinutes(-schedule.PreRecordInterval)); } // other recording types cannot be determined manually (every time on ...) return(DateTime.MaxValue); }
private void ChangeType(Schedule rec) { GUIDialogMenu dlg = (GUIDialogMenu)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_MENU); if (dlg != null) { dlg.Reset(); dlg.SetHeading(GUILocalizeStrings.Get(616)); //616=Select Recording type //611=Record once //612=Record everytime on this channel //613=Record everytime on every channel //614=Record every week at this time //615=Record every day at this time for (int i = 611; i <= 615; ++i) { dlg.Add(GUILocalizeStrings.Get(i)); } dlg.Add(GUILocalizeStrings.Get(WeekEndTool.GetText(DayType.Record_WorkingDays))); dlg.Add(GUILocalizeStrings.Get(WeekEndTool.GetText(DayType.Record_WeekendDays))); switch ((ScheduleRecordingType)rec.ScheduleType) { case ScheduleRecordingType.Once: dlg.SelectedLabel = 0; break; case ScheduleRecordingType.EveryTimeOnThisChannel: dlg.SelectedLabel = 1; break; case ScheduleRecordingType.EveryTimeOnEveryChannel: dlg.SelectedLabel = 2; break; case ScheduleRecordingType.Weekly: dlg.SelectedLabel = 3; break; case ScheduleRecordingType.Daily: dlg.SelectedLabel = 4; break; case ScheduleRecordingType.WorkingDays: dlg.SelectedLabel = 5; break; case ScheduleRecordingType.Weekends: dlg.SelectedLabel = 6; break; case ScheduleRecordingType.WeeklyEveryTimeOnThisChannel: dlg.SelectedLabel = 7; break; } dlg.DoModal(GetID); if (dlg.SelectedLabel == -1) { return; } switch (dlg.SelectedLabel) { case 0: //once rec.ScheduleType = (int)ScheduleRecordingType.Once; rec.Canceled = Schedule.MinSchedule; break; case 1: //everytime, this channel rec.ScheduleType = (int)ScheduleRecordingType.EveryTimeOnThisChannel; rec.Canceled = Schedule.MinSchedule; break; case 2: //everytime, all channels rec.ScheduleType = (int)ScheduleRecordingType.EveryTimeOnEveryChannel; rec.Canceled = Schedule.MinSchedule; break; case 3: //weekly rec.ScheduleType = (int)ScheduleRecordingType.Weekly; rec.Canceled = Schedule.MinSchedule; break; case 4: //daily rec.ScheduleType = (int)ScheduleRecordingType.Daily; rec.Canceled = Schedule.MinSchedule; break; case 5: //WorkingDays rec.ScheduleType = (int)ScheduleRecordingType.WorkingDays; rec.Canceled = Schedule.MinSchedule; break; case 6: //Weekends rec.ScheduleType = (int)ScheduleRecordingType.Weekends; rec.Canceled = Schedule.MinSchedule; break; case 7://Weekly everytime, this channel rec.ScheduleType = (int)ScheduleRecordingType.WeeklyEveryTimeOnThisChannel; rec.Canceled = Schedule.MinSchedule; break; } rec.Persist(); TvServer server = new TvServer(); server.OnNewSchedule(); LoadDirectory(); } }
private void SetLabels() { for (int i = 0; i < GetItemCount(); ++i) { GUIListItem item = GetItem(i); Schedule rec = (Schedule)item.TVTag; //@ /* * switch (rec.Status) * { * case Schedule.RecordingStatus.Waiting: * item.Label3 = GUILocalizeStrings.Get(681);//waiting * break; * case Schedule.RecordingStatus.Finished: * item.Label3 = GUILocalizeStrings.Get(683);//Finished * break; * case Schedule.RecordingStatus.Canceled: * item.Label3 = GUILocalizeStrings.Get(684);//Canceled * break; * }*/ // check with recorder. VirtualCard card; TvServer server = new TvServer(); if (server.IsRecordingSchedule(rec.IdSchedule, out card)) { item.Label3 = GUILocalizeStrings.Get(682); //Recording if (rec.ScheduleType != (int)ScheduleRecordingType.Once) { item.PinImage = Thumbs.TvRecordingSeriesIcon; } else { item.PinImage = Thumbs.TvRecordingIcon; } } else if (rec.ReferringConflicts().Count > 0) { item.PinImage = Thumbs.TvConflictRecordingIcon; } else { item.PinImage = String.Empty; } string strType = String.Empty; item.Label = rec.ProgramName; string strTime = String.Format("{0} {1} - {2}", rec.StartTime.ToShortDateString(), rec.StartTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat), rec.EndTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat)); string day; switch ((ScheduleRecordingType)rec.ScheduleType) { case ScheduleRecordingType.Once: item.Label2 = String.Format("{0} {1} - {2}", Utils.GetShortDayString(rec.StartTime), rec.StartTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat), rec.EndTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat)); ; break; case ScheduleRecordingType.Daily: strTime = String.Format("{0}-{1}", rec.StartTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat), rec.EndTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat)); strType = GUILocalizeStrings.Get(648); item.Label2 = String.Format("{0} {1}", strType, strTime); break; case ScheduleRecordingType.WorkingDays: strTime = String.Format("{0}-{1} {2}-{3}", GUILocalizeStrings.Get(WeekEndTool.GetText(DayType.FirstWorkingDay)), GUILocalizeStrings.Get(WeekEndTool.GetText(DayType.LastWorkingDay)), rec.StartTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat), rec.EndTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat)); strType = GUILocalizeStrings.Get(648); item.Label2 = String.Format("{0} {1}", strType, strTime); break; case ScheduleRecordingType.Weekends: strTime = String.Format("{0}-{1} {2}-{3}", GUILocalizeStrings.Get(WeekEndTool.GetText(DayType.FirstWeekendDay)), GUILocalizeStrings.Get(WeekEndTool.GetText(DayType.LastWeekendDay)), rec.StartTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat), rec.EndTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat)); strType = GUILocalizeStrings.Get(649); item.Label2 = String.Format("{0} {1}", strType, strTime); break; case ScheduleRecordingType.Weekly: switch (rec.StartTime.DayOfWeek) { case DayOfWeek.Monday: day = GUILocalizeStrings.Get(11); break; case DayOfWeek.Tuesday: day = GUILocalizeStrings.Get(12); break; case DayOfWeek.Wednesday: day = GUILocalizeStrings.Get(13); break; case DayOfWeek.Thursday: day = GUILocalizeStrings.Get(14); break; case DayOfWeek.Friday: day = GUILocalizeStrings.Get(15); break; case DayOfWeek.Saturday: day = GUILocalizeStrings.Get(16); break; default: day = GUILocalizeStrings.Get(17); break; } strTime = String.Format("{0}-{1}", rec.StartTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat), rec.EndTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat)); strType = GUILocalizeStrings.Get(649); item.Label2 = String.Format("{0} {1} {2}", strType, day, strTime); break; case ScheduleRecordingType.WeeklyEveryTimeOnThisChannel: switch (rec.StartTime.DayOfWeek) { case DayOfWeek.Monday: day = GUILocalizeStrings.Get(11); break; case DayOfWeek.Tuesday: day = GUILocalizeStrings.Get(12); break; case DayOfWeek.Wednesday: day = GUILocalizeStrings.Get(13); break; case DayOfWeek.Thursday: day = GUILocalizeStrings.Get(14); break; case DayOfWeek.Friday: day = GUILocalizeStrings.Get(15); break; case DayOfWeek.Saturday: day = GUILocalizeStrings.Get(16); break; default: day = GUILocalizeStrings.Get(17); break; } item.Label = rec.ProgramName; item.Label2 = GUILocalizeStrings.Get(990001, new object[] { day, rec.ReferencedChannel().DisplayName }); break; case ScheduleRecordingType.EveryTimeOnThisChannel: item.Label = rec.ProgramName; item.Label2 = GUILocalizeStrings.Get(650); break; case ScheduleRecordingType.EveryTimeOnEveryChannel: item.Label = rec.ProgramName; item.Label2 = GUILocalizeStrings.Get(651); break; } } }
private void OnQuickRecord() { GUIDialogMenu dlg = (GUIDialogMenu)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_MENU); if (dlg == null) { return; } dlg.Reset(); dlg.SetHeading(GUILocalizeStrings.Get(891)); //Select TV Channel IList <GroupMap> channels = TVHome.Navigator.CurrentGroup.ReferringGroupMap(); foreach (GroupMap chan in channels) { GUIListItem item = new GUIListItem(chan.ReferencedChannel().DisplayName); string strLogo = Utils.GetCoverArt(Thumbs.TVChannel, chan.ReferencedChannel().DisplayName); if (string.IsNullOrEmpty(strLogo)) { strLogo = "defaultVideoBig.png"; } item.ThumbnailImage = strLogo; item.IconImageBig = strLogo; item.IconImage = strLogo; dlg.Add(item); } dlg.DoModal(GetID); if (dlg.SelectedLabel < 0) { return; } Channel selectedChannel = (channels[dlg.SelectedLabel]).ReferencedChannel(); dlg.Reset(); dlg.SetHeading(616); //select recording type for (int i = 611; i <= 615; ++i) { dlg.Add(GUILocalizeStrings.Get(i)); } dlg.Add(GUILocalizeStrings.Get(WeekEndTool.GetText(DayType.Record_WorkingDays))); dlg.Add(GUILocalizeStrings.Get(WeekEndTool.GetText(DayType.Record_WeekendDays))); Schedule rec = new Schedule(selectedChannel.IdChannel, "", Schedule.MinSchedule, Schedule.MinSchedule); TvBusinessLayer layer = new TvBusinessLayer(); rec.PreRecordInterval = Int32.Parse(layer.GetSetting("preRecordInterval", "5").Value); rec.PostRecordInterval = Int32.Parse(layer.GetSetting("postRecordInterval", "5").Value); rec.ScheduleType = (int)ScheduleRecordingType.Once; DateTime dtNow = DateTime.Now; int day; day = 0; dlg.Reset(); dlg.SetHeading(142); //select time dlg.ShowQuickNumbers = false; //time //int no = 0; int hour, minute, steps; steps = 15; dlg.Add("00:00"); for (hour = 0; hour <= 23; hour++) { for (minute = 0; minute < 60; minute += steps) { if (hour == 0 && minute == 0) { continue; } string time; if (hour < 10) { time = "0" + hour; } else { time = hour.ToString(); } time += ":"; if (minute < 10) { time = time + "0" + minute; } else { time += minute.ToString(); } //if (hour < 1) time = String.Format("{0} {1}", minute, GUILocalizeStrings.Get(3004)); dlg.Add(time); } } // pre-select the current time dlg.SelectedLabel = (DateTime.Now.Hour * (60 / steps)) + (Convert.ToInt16(DateTime.Now.Minute / steps)); dlg.DoModal(GetID); if (dlg.SelectedLabel == -1) { return; } int mins = (dlg.SelectedLabel) * steps; hour = (mins) / 60; minute = ((mins) % 60); dlg.Reset(); dlg.SetHeading(180); //select time dlg.ShowQuickNumbers = false; //duration for (float hours = 0.5f; hours <= 24f; hours += 0.5f) { dlg.Add(String.Format("{0} {1}", hours.ToString("f2"), GUILocalizeStrings.Get(3002))); } dlg.DoModal(GetID); if (dlg.SelectedLabel == -1) { return; } int duration = (dlg.SelectedLabel + 1) * 30; dtNow = DateTime.Now.AddDays(day); rec.StartTime = new DateTime(dtNow.Year, dtNow.Month, dtNow.Day, hour, minute, 0, 0); rec.EndTime = rec.StartTime.AddMinutes(duration); rec.ProgramName = GUILocalizeStrings.Get(413) + " (" + rec.ReferencedChannel().DisplayName + ")"; rec.Persist(); TvServer server = new TvServer(); server.OnNewSchedule(); GUIWindowManager.ShowPreviousWindow(); }