0

我正在创建一个扩展来将待办事项从 CRM 导入到雷鸟/闪电。我使用 calITodo 界面来创建我的 todos :

var todo = Components.classes["@mozilla.org/calendar/todo;1"].createInstance(Components.interfaces.calITodo);

但我找不到如何设置提醒,或为我的待办事项创建自定义提醒。

4

1 回答 1

0

我将更广泛地回答这个问题,向您展示替代方案,您可能已经在这样做了。

如果您想将 CRM 用作日历的后端,您可能需要编写一个“Provider”类型的扩展,类似于 Google Calendar 的 Provider。您只需要为通常的操作(get/add/modify/delete)实现一些方法即可开始。请参阅Provider for Google Calendar 的源代码作为起点。

如果您只想进行一次性导入,那么您可能正朝着正确的方向前进。只需在相关日历上使用 addItem/adoptItem 方法即可。如果你需要一个对话框来选择日历,你可以重复使用这个,它可以通过 uri chrome://calendar/content/chooseCalendarDialog.xul 获得。

现在来回答你真正的问题。要向事件或待办事项添加提醒,以下代码会有所帮助。当然你可以选择不同的报警关系。

Components.utils.import("resource://calendar/modules/calUtils.jsm");

let todo = cal.createToDo();
let alarm = cal.createAlarm();
let alarmDate = cal.createDateTime();

alarm.related = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE;
alarm.alarmDate = alarmDate;

todo.addAlarm(alarm);
// ...

报警器实现了calIAarm,你可以在这里找到接口说明。然后将其添加到实现 calITodo 和 calIItemBase 的 todo 中。有关某个项目的警报方法的概述,请参见此处

如果您对其他可用的实用功能感兴趣,请参阅此处。您只需导入 calUtils 即可使用这两个文件中的函数。jsm _ 只需在每个函数前加上“cal.”即可。

于 2011-07-06T09:07:42.663 回答