Thunderbird: как получить доступ к календарю?
Я планирую разработать инструмент (работающий на ПК с Windows), который позволит сравнивать и объединять события календаря между различными календарями. Мое мобильное устройство и мой календарь Lightning должны поддерживаться.
Идея состоит в том, чтобы написать приложение для моего мобильного устройства, подключающегося к инструменту через TCP или UDP, чтобы инструмент мог изменять календарь мобильного устройства, отправляя команды в приложение.
К сожалению, я не знаю, как мне получить доступ к календарю Thunderbird Lightning с помощью моего инструмента.
Вопрос 1: (Возможность 1)
Можно ли получить доступ к чтению / записи календаря Thunderbird (Lightning) из другого приложения (например, путем прямого доступа к архиву SQLite) безопасным способом?
"Безопасным способом" означает: нет риска, что формат календаря изменится в следующем выпуске Lightning, а запись событий уничтожит его!
Вопрос 2: (Возможность 2)
Есть ли возможность доступа к данным календаря Lightning из другого плагина Thunderbird?
(Я искал об этом в Google в течение 2 часов и ничего не нашел!)
Можно ли создать "постоянное" TCP-соединение из плагина Thunderbird (выполнение некоторых операций в фоновом режиме)?
1 ответ
Я бы посоветовал против варианта 1, но если вам нужно, то вы можете проверить таблицу версий, чтобы увидеть, изменилась ли версия хранилища. Это случается не очень часто. Что касается доступа к данным календаря, вы можете связаться с менеджером календаря и событиями следующим образом:
Components.utils.import("resource://calendar/modules/calUtils.jsm");
let calmgr = cal.getCalendarManager();
let calendars = calmgr.getCalendars({});
let mycal = calendars[0]; // pick one
Календарь в mycal
будет следовать calICalendar
интерфейс, о котором вы можете прочитать здесь. Самые важные методы addItem
, modifyItem
, deleteItem
, getItem
а также getItems
,
Что касается создания постоянного соединения из Thunderbird, вероятно, лучше всего использовать веб-сокеты, которые вы можете использовать из любого окна DOM. Возможно, имеет смысл создать свой собственный, например, с iframe
,