Esempio n. 1
0
        protected override List <CalendarDatum> GetCalendarEventsAsync()
        {
            List <CalendarDatum> calendarDatums = new List <CalendarDatum>();

            string[] eventProperties =
            {
                CalendarContract.Events.InterfaceConsts.Id,
                CalendarContract.Events.InterfaceConsts.Title,
                CalendarContract.Events.InterfaceConsts.Dtstart,
                CalendarContract.Events.InterfaceConsts.Dtend,
                CalendarContract.Events.InterfaceConsts.Duration,
                CalendarContract.Events.InterfaceConsts.Description,
                CalendarContract.Events.InterfaceConsts.EventLocation,
                CalendarContract.Events.InterfaceConsts.Organizer,
                CalendarContract.Events.InterfaceConsts.IsOrganizer,
            };

            DateTimeOffset epoch = DateTimeOffset.FromUnixTimeMilliseconds(0);

            long last = ((DateTimeOffset)LastPollTime).ToUnixTimeMilliseconds();
            long now  = Java.Lang.JavaSystem.CurrentTimeMillis();

            ICursor cursor = Application.Context.ContentResolver.Query(CalendarContract.Events.ContentUri, eventProperties, $"{CalendarContract.Events.InterfaceConsts.Dtstart} > ? AND {CalendarContract.Events.InterfaceConsts.Dtstart} <= ?", new string[] { last.ToString(), now.ToString() }, CalendarContract.Events.InterfaceConsts.Dtstart + " DESC");
            Dictionary <string, int> columns = eventProperties.ToDictionary(x => x, x => cursor.GetColumnIndex(x));

            while (cursor.MoveToNext())
            {
                CalendarDatum calendarDatum = new CalendarDatum(cursor.GetString(columns[CalendarContract.Events.InterfaceConsts.Id]), cursor.GetString(columns[CalendarContract.Events.InterfaceConsts.Title]), epoch.AddMilliseconds(cursor.GetLong(columns[CalendarContract.Events.InterfaceConsts.Dtstart])), epoch.AddMilliseconds(cursor.GetLong(columns[CalendarContract.Events.InterfaceConsts.Dtend])), cursor.GetDouble(columns[CalendarContract.Events.InterfaceConsts.Duration]), cursor.GetString(columns[CalendarContract.Events.InterfaceConsts.Description]), cursor.GetString(columns[CalendarContract.Events.InterfaceConsts.EventLocation]), cursor.GetString(columns[CalendarContract.Events.InterfaceConsts.Organizer]), cursor.GetInt(columns[CalendarContract.Events.InterfaceConsts.IsOrganizer]) == 1, DateTimeOffset.UtcNow);

                calendarDatums.Add(calendarDatum);
            }

            return(calendarDatums);
        }
Esempio n. 2
0
        protected override List <CalendarDatum> GetCalendarEventsAsync()
        {
            List <CalendarDatum> datums = new List <CalendarDatum>();
            EKEventStore         store  = new EKEventStore();

            EKCalendar[] calendars = store.GetCalendars(EKEntityType.Event);

            NSDate last = (NSDate)LastPollTime;
            NSDate now  = (NSDate)DateTime.Now;

            NSPredicate predicate = store.PredicateForEvents(last, now, calendars);

            EKEvent[] items = store.EventsMatching(predicate);

            foreach (EKEvent item in items)
            {
                CalendarDatum datum = new CalendarDatum(item.EventIdentifier, item.Title, (DateTime)item.StartDate, (DateTime)item.EndDate, ((DateTime)item.EndDate - (DateTime)item.StartDate).TotalMilliseconds, item.Description, item.Location, item.Organizer?.Name, item.Organizer == null || item.Organizer?.IsCurrentUser == true, DateTimeOffset.UtcNow);

                datums.Add(datum);
            }

            return(datums);
        }