Thunderbird: как получить доступ к календарю?

Я планирую разработать инструмент (работающий на ПК с Windows), который позволит сравнивать и объединять календарные события из разных календарей. Мое мобильное устройство и мой календарь Lightning должны поддерживаться.

Идея состоит в том, чтобы написать приложение для моего мобильного устройства, подключающегося к инструменту через TCP или UDP, чтобы инструмент мог изменять календарь мобильного устройства, отправляя команды в приложение.

К сожалению, я не знаю, как получить доступ к календарю Thunderbird Lightning с помощью моего инструмента.

Вопрос 1: (Возможность 1)

Можно ли безопасно получить доступ к календарю Thunderbird (Lightning) для чтения/записи из другого приложения (например, путем прямого доступа к архиву SQLite)?

«Безопасным способом» означает: нет риска, что формат календаря изменится в следующем выпуске Lightning, а запись событий уничтожит его!

Вопрос 2: (Возможность 2)

Есть ли возможность получить доступ к данным календаря Lightning из другого подключаемого модуля Thunderbird?

(Искал об этом в гугле 2 часа и ничего не нашел!)

Можно ли создать «постоянное» TCP-соединение из подключаемого модуля Thunderbird (выполняя некоторые операции в фоновом режиме)?


person Martin Rosenau    schedule 01.05.2017    source источник


Ответы (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.

person Philipp Kewisch    schedule 01.05.2017