Exemplo n.º 1
0
        /// <summary>
        /// Get list of currently set alarms for this application.
        /// </summary>
        /// <returns>Alarm list.</returns>
        public List <AlarmInfoViewModel> GetAlarmList()
        {
            var alarmList = new List <AlarmInfoViewModel>();

            IEnumerable <Alarm> systemAlarmList;

            try
            {
                systemAlarmList = AlarmManager.GetAllScheduledAlarms();
            }
            catch (Exception e)
            {
                Debug.WriteLine("Cannot list scheduled alarms. Exception message: " + e.Message);
                return(alarmList);
            }

            if (systemAlarmList == null)
            {
                return(alarmList);
            }

            foreach (var alarm in systemAlarmList)
            {
                var appInfo = ApplicationManager.GetInstalledApplication(alarm.AlarmAppControl.ApplicationId);

                if (appInfo == null)
                {
                    continue;
                }

                int delay = 0;
                if (alarm.WeekFlag == 0 && alarm.Period != 0)
                {
                    delay = Convert.ToInt32((alarm.ScheduledDate - DateTime.Now).TotalSeconds);

                    // We don't allow delay equal or greater from 1 day so it would be some error we log and skip.
                    if (delay >= 24 * 60 * 60)
                    {
                        Debug.WriteLine("ERROR: Alarm delay over accepted maximum value!");
                        continue;
                    }
                }

                alarmList.Add(new AlarmInfoViewModel
                {
                    AlarmReference  = alarm,
                    AlarmId         = alarm.AlarmId,
                    AppInfo         = new AppInfo(appInfo.Label, appInfo.ApplicationId),
                    Date            = alarm.ScheduledDate,
                    IsRepeatEnabled = alarm.WeekFlag != 0 || alarm.Period > 0,
                    DaysFlags       = AlarmWeek2DaysOfWeek(alarm.WeekFlag),
                    Delay           = delay
                });
            }

            return(alarmList);
        }