Пример #1
0
        /// <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"
            }
        }
Пример #2
0
        /// <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);
            }
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }
Пример #7
0
        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();
            }
        }
Пример #8
0
        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;
                }
            }
        }
Пример #9
0
        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();
        }