Windows Phone 7 - Генератор iCal - C # - PullRequest
5 голосов
/ 26 июля 2011

Мне нужно создать строку iCal из встреч, полученных с устройства.Существует ли какая-либо библиотека, поддерживаемая в Windows Phone 7 для создания iCal из встреч?

Я пытался DDay.iCal , но он не работает с Windows Phone 7.

1 Ответ

3 голосов
/ 28 октября 2011

Не существует библиотеки, специфичной для Windows Phone 7, с которой я сталкивался, но не должно быть слишком сложно написать свои собственные классы для генерации файлов iCal, поскольку в конце концов iCal - это просто текст. RFC довольно плотное чтение , но для начала нужно использовать некоторые онлайн-ссылки , например, , и посмотреть на некоторые примеры файлов iCal.Возьмите этот пример файла iCal из википедии, например:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
UID:uid1@example.com
DTSTAMP:19970714T170000Z
ORGANIZER;CN=John Doe:MAILTO:john.doe@example.com
DTSTART:19970714T170000Z
DTEND:19970715T035959Z
SUMMARY:Bastille Day Party
END:VEVENT
END:VCALENDAR

Итак, обратите внимание, что вы НАЧИНАЕТЕ и ЗАВЕРШИТЕ VCALENDAR, а также VEVENT в них, который имеет некоторые обязательные поля (например, UID).Единственное, что следует отметить, это то, что спецификация требует разбивки строк длиннее 75 октетов, поэтому вы можете использовать этот метод из этого вопроса о переполнении стека для полей с длинным текстом:

Private Function RFC2445TextField(ByVal LongText As String) As String

     LongText = LongText.Replace("\", "\\")
     LongText = LongText.Replace(";", "\;")
     LongText = LongText.Replace(",", "\,")


     Dim sBuilder As New StringBuilder
     Dim charArray() As Char = LongText.ToCharArray

     For i = 1 To charArray.Length
         sBuilder.Append(charArray(i - 1))
         If i Mod 74 = 0 Then sBuilder.Append(vbCrLf & " ")
     Next

     Return sBuilder.ToString

 End Function

Функция в основном экранирует все необходимые escape-символы и вставляет перевод строки / пробел через каждые 74 символа.

Удачи, веселитесь!:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...