Ejemplo n.º 1
0
        private void UpdateNextLocalCalendar()
        {
            if (_calendarsToUpdate.Count == 0)
            {
                OnSyncComplete(true);
                return;
            }

            _currentUpdatingCalendar = _calendarsToUpdate.First();
            _calendarsToUpdate.Remove(_currentUpdatingCalendar);
            _ocClient.LoadCalendarDataComplete += LoadEventInfoComplete;
            _ocClient.LoadCalendarData(_currentUpdatingCalendar, new CalendarEventRequest {
                LoadCalendarData = false
            });
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Lädt die Termine eines Kalendars
        /// </summary>
        /// <param name="cInfo">Die Information über den Kalendar</param>
        /// <param name="request">The request</param>
        public void LoadCalendarData(CalendarCalDavInfo cInfo, CalendarEventRequest request = null)
        {
            this.BeginHttpRequest(Address.CombineServerAddress(cInfo.Url));

            ContentTypeXml();
            this.SetMethod("REPORT");

            Request.Headers["Depth"]  = "1";
            Request.Headers["Prefer"] = "return-minimal";

            if (request == null)
            {
                request = new CalendarEventRequest();
            }

            Request.BeginGetRequestStream(CalendarDataWriteRequest, request);
        }
        public void DisableCalendar(CalendarCalDavInfo calendar)
        {
            using (var context = new OwnCloudDataContext())
            {
                var entity = (from o in context.Calendars where o.Url == calendar.Url select o).SingleOrDefault();

                if (entity != null)
                {
                    context.Calendars.DeleteOnSubmit(entity);
                }

                var eventsToDelete = context.Events.Where(o => o.CalendarId == entity.Id).ToArray();

                context.Events.DeleteAllOnSubmit(eventsToDelete);

                context.SubmitChanges();
            }
        }
        public void EnableCalendar(CalendarCalDavInfo calendar)
        {
            using (var context = new OwnCloudDataContext())
            {
                var existingEntity =
                    (from o in context.Calendars where o.Url == calendar.Url select o).SingleOrDefault();

                if (existingEntity != null)
                {
                    return;
                }

                var entity = TableCalendar.FromCalDavCalendarInfo(calendar);
                entity.GetCTag = "";

                entity._accountId = this._accountId;

                context.Calendars.InsertOnSubmit(entity);
                context.SubmitChanges();
            }
        }
Ejemplo n.º 5
0
        public static CalendarCalDavInfo[] ParseCalendarCalDavInfo(Stream stream)
        {
            var rootItem = LoadRootItem(stream);

            var responses = rootItem.Elements();

            var calendars = new List <CalendarCalDavInfo>();

            foreach (var res in responses)
            {
                var info = new CalendarCalDavInfo
                {
                    Url = res.Elements(XName.Get("href", XmlNamespaces.NsDav)).Single().Value
                };

                var propstat = res.Element(XName.Get("propstat", XmlNamespaces.NsDav));
                if (propstat != null)
                {
                    var status = propstat.GetIfExists(XName.Get("status", XmlNamespaces.NsDav));
                    if (status != "HTTP/1.1 200 OK")
                    {
                        continue;
                    }
                }
                else
                {
                    continue;
                }

                foreach (var prop in propstat.Elements(XName.Get("prop", XmlNamespaces.NsDav)))
                {
                    info.DisplayName = prop.GetIfExists(XName.Get("displayname", XmlNamespaces.NsDav));
                    info.GetCTag     = prop.GetIfExists(XName.Get("getctag", XmlNamespaces.NsCalenderServer));
                }

                calendars.Add(info);
            }

            return(calendars.ToArray());
        }