如何更新循环日历事件

如何更新循环日历事件教程

描述

本文介绍如何在你的应用中使用Tizen平台设备API修改/更新一个已有的日历循环事件。 本文仅应用于基于Tizen平台的系统。

前提条件

使用日历API方法,您在config.xml文件中必须声明需要的功能。

  • :有允许使用的日历的全部功能的权限。 API的访问策略由执行或部署定义。
  • :有从日历中读取数据的权限。
  • :有往日历写日历的权限。
  • :有允许使用Time API全功能的权限。

更新循环日历事件

要更新一个已有的事件有如下步骤:

  • 检索日历实例。
  • 检索日历事件。
  • 确定要被更新的事件。
  • 保存更新的事件。

用的calendar.getDefaultCalendar方法检索默认日历实例。


$ var myCalendar = null;
// Get the default calendar
$ myCalendar = tizen.calendar.getDefaultCalendar("EVENT");

通过Calendar.find方法,你可以在默认日历事件中获取全部或部分(以过滤器)列表。 在这个例子中,onEventSearchSuccess()方法被注册为一个成功回调函数,onError()方法被注册为一个处理错误的回调函数。


//Fetch all events in default calendar
$ myCalendar.find(onEventSearchSuccess, onError);

您可以用过滤器指定过滤条件,并通过过滤器和Calendar.find方法搜索操作的排列顺序。


// Define the event success callback.
$ function eventSearchSuccess(events) {
    updateEvent(events[0]);
}

//The error callback
$ function onError(e) {
    console.log(e.message);
}

通过Calendar.update方法可以更新已有的日历事项。 Calendar.update方法有两个参数;被更新的日历事项,和一个布尔参数。

布尔参数指示是否需要更新日历事项所有发生的事件。

假设事件数组的第一个事件是我们用下面更新程序运行的循环事件。

更新单个实例日历循环事件

为了更新循环事件的单个实例,可以通过调用ev.expandRecurrence方法获取事件实例列表。 一旦你检索了所有的事件实例,随着需要被更新的事件实例调用myCalendar.update()方法并将updateAllInstances标志设为“false”。


// The error callback
$ function errorCB(response) {
   console.log( 'The following error occurred: ' + response.name);
}

// The expand success callback
$ function eventExpandSuccessCB(events) {
   events[1].summary = 'updated the summary';
   myCalendar.update(events[1], false);
}

$ function updateEvent(ev) {
// Expand the recurring event to get its instances
   ev.expandRecurrence(
      new tizen.TZDate(2012, 2, 1),
      new tizen.TZDate(2012, 2, 15),
      eventExpandSuccessCB,
      errorCB );
}

更新循环日历事件的所有实例

为了更新循环日历事件的所有实例,随着需要被更新的事件实例调用myCalendar.update()方法并将updateAllInstances标志设为“true”。


//Update all the instaces of recurring event.
$ function updateEvent(ev) {
   myCalendar.update(ev, true)
}