예제 #1
0
        public async Task DoLoadCalendarEventsGrouped(DateTime dStart, DateTime dEnd, int iMax = 0)
        {
            try
            {
                var newEvents = new SortedDictionary <DateTime, SortedDictionary <DateTime, CalendarEvent> >();

                await DoLoadCalendarEventsListed(dStart, dEnd, iMax);

                int iMs = 0;
                foreach (CalendarEvent calEvent in ListedDates)
                {
                    DateTime tFirstDay = calEvent.Start;
                    if (tFirstDay < dStart)
                    {
                        tFirstDay = dStart;
                    }
                    DateTime tLastDay = calEvent.End;
                    if (tFirstDay > dEnd)
                    {
                        tLastDay = dEnd;
                    }
                    for (DateTime tDay = tFirstDay.Date; tDay < tLastDay; tDay = tDay.AddDays(1))
                    {
                        iMs++;
                        if (!newEvents.ContainsKey(tDay))
                        {
                            newEvents.Add(tDay, new SortedDictionary <DateTime, CalendarEvent>());
                        }
                        newEvents[tDay].Add(calEvent.SortTime.AddMilliseconds(iMs), calEvent);
                    }
                }

                base.Clear();
                int iCount            = 0;
                var allEvents         = new List <CalendarEvent>();
                var allDatesAndEvents = new List <object>();
                foreach (DateTime d in newEvents.Keys)
                {
                    base[d] = newEvents[d].Values;
                    iCount += newEvents[d].Count;
                    allDatesAndEvents.Add(d);
                    allDatesAndEvents.AddRange(newEvents[d].Values);
                    allEvents.AddRange(newEvents[d].Values);
                }
                AllEvents.Clear();
                AllEvents.AddRange(allEvents);
                AllDatesAndEvents.Clear();
                AllDatesAndEvents.AddRange(allDatesAndEvents);
                allEvents.Clear();
                allDatesAndEvents.Clear();
            }
            catch (Exception ex)
            {
                base.Clear();
                ex.ToString();
                xLog.Debug("Error reading Calendar Events: " + ex.GetType().Name + ": " + ex.Message);
            }
        }
예제 #2
0
        async Task ExecuteRefreshCommand()
        {
            if (IsBusy)
            {
                return;
            }
            IsBusy = true;

            try
            {
                var table = await CloudService.GetTableAsync <Event>();

                var list = await table.ReadAllEventsAsync();

                AllEvents.Clear();
                DatesWithEvents.Clear();
                foreach (var currentEvent in list)
                {
                    AllEvents.Add(currentEvent);
                    SpecialDate specialDate = new SpecialDate(currentEvent.Date);
                    specialDate.Selectable  = true;
                    specialDate.BorderColor = Color.White;
                    specialDate.BorderWidth = 2;
                    DatesWithEvents.Add(specialDate);
                }
                ShowEventsOfTheDay();
                await CloudService.SyncOfflineCacheAsync();
            }
            catch (Exception ex)
            {
                Debug.WriteLine($"[EventsViewModel] Error loading events: {ex.Message}");
            }
            finally
            {
                IsBusy = false;
            }
        }