找回密码
 立即注册
查看: 3748|回复: 0

Tizen日历:管理日历,日历事件

[复制链接]
发表于 2016-4-10 21:45:49 | 显示全部楼层 |阅读模式
本教程演示了如何管理日历的设备访问、修改、添加和删除日历条目在指定日历在设备上。
官方教程翻译下来的,凑合着看吧!
此功能只支持移动应用程序。
热身
熟悉日历API通过学习基本知识:
任务
事件管理器任务,我们将穿过如何在应用程序中管理日历事件。
先决条件
使用日历API,应用程序必须通过添加以下权限请求许可 config.xml 文件:
  1. <tizen:privilege name="http://tizen.org/privilege/calendar.read"/>
  2. <tizen:privilege name="http://tizen.org/privilege/calendar.write"/>
复制代码
创建一个日历
创建一个新的日历日历是一个基本的管理技能:
注意:创建日历与指定的帐户相关联。 因此,您必须检索帐户之前创建一个新的日历。

  • 声明一个变量来存储创建日历:
    1. var myCalendar = null;
    复制代码

  • 定义一个成功的回调 getAccounts () 方法。 回调接收的列表 账户对象。 使用第一个帐户ID来构造一个新的 日历对象。
    添加新的日历系统使用 addCalendar () 的方法 CalendarManager接口:
    1. function getAccountsSuccess(accounts)
    2. {
    3.    var account = accounts[0];
    4.    if (account)
    5.    {
    6.       /* New calendar can be created and added */
    7.       myCalendar = new tizen.Calendar(account.id, "remote calendar", "TASK");
    8.       tizen.calendar.addCalendar(myCalendar);
    9.       console.log("New calendar created with ID=" + myCalendar.id);
    10.    }
    11. }
    复制代码

  • 检索可用账户,使用 getAccounts () 方法。 以下方法调用调用 getAccountsSuccess 上面定义事件处理程序:
    1. tizen.account.getAccounts(getAccountsSuccess, function(err));
    复制代码

将事件添加到日历
创建与应用程序与各种日历功能,你必须学会添加事件日历:
  • 检索系统默认使用的日历 getDefaultCalendar () 的方法 CalendarManager接口。
    参数,指定日历类型作为一个事件。
    1. var calendar = tizen.calendar.getDefaultCalendar("EVENT");
    复制代码

  • 创建一个 CalendarEvent对象和定义的事件属性:
    1. var ev = new tizen.CalendarEvent
    2. ({
    3.    description:"HTML5 Introduction",
    4.    summary:"HTML5 Webinar",
    5.    startDate: new tizen.TZDate(2011, 3, 30, 10, 0),
    6.    duration: new tizen.TimeDuration(1, "HOURS"),
    7.    location:"Huesca",
    复制代码

  • 重复事件,定义一个递归规则。
    在这个例子中,3天的事件每天重复一次。
    1.    recurrenceRule: new tizen.CalendarRecurrenceRule("DAILY", {occurrenceCount: 3})
    2. });
    复制代码

  • 设置一个闹钟,提醒用户事件,创建警报 CalendarAlarm接口,并添加事件的报警:
    1. /* Alarm is triggered with sound 30 minutes before the event start time */
    2. var alarm = new tizen.CalendarAlarm(new tizen.TimeDuration(30, "MINS"), "SOUND");
    3. ev.alarms = [alarm];
    复制代码

  • 添加 CalendarEvent 对象默认日历的 添加add () 的方法 日历对象。
    1. calendar.add(ev);  /* ev.id attribute is generated */
    复制代码

在批处理模式中添加事件日历
创建与应用程序与各种日历功能,你必须学会在批处理模式中添加事件日历:
1.检索系统默认使用的日历 getDefaultCalendar () 的方法 CalendarManager接口:
  1. var calendar = tizen.calendar.getDefaultCalendar("EVENT");
复制代码
2.定义项目添加一个数组:
  1. var ev = new tizen.CalendarEvent
  2. ({
  3.    description:"HTML5 Introduction",
  4.    summary:"HTML5 Webinar",
  5.    startDate: new tizen.TZDate(2011, 3, 30, 10, 0),
  6.    duration: new tizen.TimeDuration(1, "HOURS"),
  7.    location:"Huesca"
  8. });
复制代码
注意:保持尽可能简单的例子中,上面的数组只包含1事件。

3.使用 addBatch () 的方法 日历对象数组中的事件添加到日历:
  1. calendar.addBatch([ev]);
复制代码
注意:addBatch () 方法是异步的,其必须使用回调对操作的成功或失败。

管理一个日程表事件
创建与应用程序与各种日历功能,你必须学会管理一个日历事件:
  • 检索系统默认使用的日历 getDefaultCalendar () 的方法 CalendarManager接口。
    参数,指定日历类型事件。
    1. var myCalendar = tizen.calendar.getDefaultCalendar("EVENT");
    复制代码

  • 检索所有事件存储在日历使用 find () 的方法 日历对象:
    1. myCalendar.find(eventSearchSuccessCallback);
    复制代码
    注意:检索一组特定的事件,您可以指定一个过滤和排序顺序的搜索操作 过滤器filter sortMode 参数(属性支持过滤器,看到日历过滤器属性)。
    在这个例子中,所有的事件都因为没有过滤检索使用。
  • 更新或删除里面的发现项 eventSearchSuccessCallback () 事件处理程序。
    在这个例子中,第一个事件的描述参数改变和更新事件日历使用 更新update () 方法。 第二个事件使用删除 删除remove () 方法。
    1. /* Define the event success callback */
    2. function eventSearchSuccessCallback(events)
    3. {
    4.    /* Update the first existing event */
    5.    events[0].description = "New Description";
    6.    myCalendar.update(events[0]);
    7.    /* Delete the second existing event */
    8.    myCalendar.remove(events[1].id);
    9. }
    复制代码

    更新的日程表事件
创建与应用程序与各种日历功能,你必须学会更新日程表事件重复:
  • 检索系统默认使用的日历 getDefaultCalendar () 的方法 CalendarManager接口。
    检索使用的日历事件 得到get() 方法通过指定事件ID。
    1. var calendar = tizen.calendar.getDefaultCalendar("EVENT");
    2. var event = calendar.get(evId);
    复制代码

  • 扩大重复事件实例通过使用 expandRecurrence () 的方法 CalendarEvent对象:
    1. event.expandRecurrence(new tizen.TZDate(2012, 2, 1), new tizen.TZDate(2012, 2, 15),
    2.                        eventExpandSuccessCB);
    复制代码
    扩展事件有自己的实例 id.uid id.rid 属性, id.uid 属性是相同的所有实例。
  • 更新的单一实例重复事件扩大。
    在重复事件的情况下,可以使用第二个参数 更新
    在这个例子中,更新事件的第二个实例。update () 方法来确定单个实例或更新出现的所有事件。 如果参数设置 真正的true更新所有实例,而如果它被设置 false的,只有指定的实例重复事件(基于更新 id.rid属性)。在这个例子中,更新事件的第二个实例。
    1. /* Success event handler */
    2. function eventExpandSuccessCB(events)
    3. {
    4.    events[1].summary = 'updated summary';
    5.    calendar.update(events[1], false);
    6. }
    复制代码

在批处理模式下管理多个日历事件
创建与应用程序与各种日历功能,你必须学会管理多个日历事件在批处理模式:
  • 检索系统默认使用的日历 getDefaultCalendar () 的方法 CalendarManager接口。
    参数,指定日历类型事件。
    1. var myCalendar = tizen.calendar.getDefaultCalendar("EVENT");
    复制代码

  • 检索所有事件存储在日历使用 找到 () 的方法 日历对象:
    复制代码
    注意:检索一组特定的事件,您可以指定一个过滤和排序顺序的搜索操作 过滤器filter sortMode 参数(属性支持过滤器,看到日历过滤器属性)。
    在这个例子中,所有的事件都因为没有过滤检索使用。
  • 更新事件:

    • 定义的项目更新成功的事件处理程序 找到find () 方法:
      1. function eventSearchSuccessCallback(events)
      2. {
      3.    events[0].description = "New Description 1";
      4.    events[1].description = "New Description 2";
      复制代码

    • 使用 updateBatch () 方法异步更新多个日历条目:
      1.    /* Update the first 2 existing events */
      2.    myCalendar.updateBatch(events.slice(0, 2));
      3. }
      复制代码

    4.删除事件,使用 removeBatch () 成功的事件处理程序的方法 找到find () 异步方法删除多个日历条目:
  1. function eventSearchSuccessCallback(events)
  2. {
  3.    /* Delete the first 2 existing events */
  4.    myCalendar.removeBatch([events[0].id, events[1].id]);
  5. }
复制代码
日历事件格式转换
下面的例子说明了如何使日历事件交换更有效的在您的应用程序通过将日历事件iCalendar格式或其他方式使用 CalendarEvent构造函数和 convertToString () 的方法 日历对象分别为:
  • 将一个iCalendar字符串转换为一个日历事件:
    • 检索系统默认使用的日历 getDefaultCalendar () 的方法 CalendarManager接口。
      参数,指定日历类型事件。
      1. var calendar = tizen.calendar.getDefaultCalendar("EVENT");
      复制代码

    • 创建一个新的 CalendarEvent 从iCalendar的字符串对象,并将它添加到默认日历:
      1. try
      2. {
      3.    var ev = new tizen.CalendarEvent
      4.    (
      5.       "BEGIN:VCALENDAR\r\n" +
      6.       "BEGIN:VEVENT\r\n" +
      7.       "DTSTAMP:19970901T1300Z\r\n" +
      8.       "DTSTART:19970903T163000Z\r\n" +
      9.       "DTEND:19970903T190000Z\r\n" +
      10.       "SUMMARY:Tizen, Annual Employee Review\r\n" +
      11.       "CATEGORIES:BUSINESS,HUMAN RESOURCES\r\n" +
      12.       "END:VEVENT\r\n" +
      13.       "END:VCALENDAR", "ICALENDAR_20"
      14.    );
      15.    calendar.add(ev);
      16.    console.log('Event added with UID ' + ev.id.uid);
      17. }
      复制代码

  • 将多个字符串,并将其导入到一个日历,把字符串,然后使用一个接一个 addBatch () 方法 添加所有的事件在一个批处理模式
  • 把日历事件iCalendar格式:
    • 获得默认日历和找到所有日历事件,包括“Tizen”字符串 总结 属性:
      1. var myCalendar;
      2. myCalendar = tizen.calendar.getDefaultCalendar("EVENT");
      3. /* Define a filter */
      4. var filter = new tizen.AttributeFilter("summary", "CONTAINS", "Tizen");
      5. /* Search for the events */
      6. myCalendar.find(eventSearchSuccessCallback, errorCallback, filter);
      复制代码

    • 日历事件转换为一个iCalendar字符串的成功事件处理程序 找到find () 方法使用 convertToString () 方法:
      1. function eventSearchSuccessCallback(events)
      2. {
      3.    /* Convert the first event */
      4.    var vevent = events[0].convertToString("ICALENDAR_20");
      5. }
      复制代码
      出口和转换多个事件日历,找到所需的事件使用 找到find () 方法应用过滤器,然后将发现事件一个接一个。
将任务添加到日历
创建与应用程序与各种日历功能,你必须学会添加任务日历:
  • 检索系统默认使用的日历 getDefaultCalendar () 的方法 CalendarManager接口。
    与参数,指定日历类型的任务。
    1. var calendar = tizen.calendar.getDefaultCalendar("TASK");
    复制代码

  • 创建一个 CalendarTask对象和定义任务属性:
    1. var task = new tizen.CalendarTask
    2. ({
    3.    description:"HTML5 Introduction",
    4.    summary:"HTML5 Webinar",
    5.    startDate: new tizen.TZDate(2011, 3, 10, 10, 0),
    6.    dueDate: new tizen.TZDate(2011, 3, 30, 10, 0),
    7.    completedDate: new tizen.TZDate(2011, 3, 20, 10, 0),
    8.    location:"Huesca"
    9. });
    复制代码

  • 设置一个闹钟,提醒用户的任务,创建警报 CalendarAlarm接口,并添加闹钟的任务:
    1. /* Alarm is triggered with sound 30 minutes before the task start time */
    2. var alarm = new tizen.CalendarAlarm(new tizen.TimeDuration(30, "MINS"), "SOUND");
    3. task.alarms = [alarm];
    复制代码

  • 添加 CalendarTask 对象默认日历的 添加 () 的方法 日历对象:
    1. calendar.add(task);  /* task.id attribute is generated */
    复制代码

在批处理模式将任务添加到日历
创建与应用程序与各种日历功能,你必须学会添加任务日历在批处理模式:
  • 检索系统默认使用的日历 getDefaultCalendar () 的方法 CalendarManager接口:
    1. var calendar = tizen.calendar.getDefaultCalendar("TASK");
    复制代码

  • 定义项目添加一个数组:
    1. var task = new tizen.CalendarTask
    2. ({
    3.    description:"HTML5 Introduction",
    4.    summary:"HTML5 Webinar",
    5.    startDate: new tizen.TZDate(2011, 3, 30, 10, 0),
    6.    dueDate: new tizen.TZDate(2011, 5, 30, 10, 0),
    7.    completedDate: new tizen.TZDate(2011, 4, 30, 10, 0),
    8.    location:"Huesca"
    9. });
    复制代码
    注意:保持尽可能简单的例子中,上面的数组只包含1的任务。
  • 使用 addBatch () 的方法 日历对象数组中的任务添加到日历:
    1. calendar.addBatch([task]);
    复制代码
    注意: addBatch () 方法是异步的,其回调函数必须使用如果你想应对操作的成功或失败。
管理一个日历的任务
创建与应用程序与各种日历功能,你必须学会管理一个日历任务:
  • 检索系统默认使用的日历 getDefaultCalendar () 的方法 CalendarManager接口。
    与参数,指定日历类型的任务。
    1. var myCalendar = tizen.calendar.getDefaultCalendar("TASK");
    复制代码

  • 检索所有任务通过使用存储在日历 找到find () 的方法 日历对象:
    1. myCalendar.find(taskSearchSuccessCallback);
    复制代码
    注意:检索一组特定的任务,您可以指定一个过滤和排序顺序的搜索操作 过滤器 sortMode 参数(属性支持过滤器,看到日历过滤器属性)。
    在这个例子中,所有的任务因为没有过滤检索使用。
  • 更新或删除里面的发现项 taskSearchSuccessCallback () 事件处理程序。
    在这个例子中,第一个任务的描述参数改变和更新任务日历使用 更新update () 方法。 第二个任务是使用删除 删除remove () 方法。
    1. /* Define the event success callback */
    2. function taskSearchSuccessCallback(tasks)
    3. {
    4.    /* Update the first existing task */
    5.    tasks[0].description = "New Description";
    6.    myCalendar.update(tasks[0]);
    7.    /* Delete the second existing task */
    8.    myCalendar.remove(tasks[1].id);
    9. }
    复制代码

日历管理多个任务在批处理模式
创建与应用程序与各种日历功能,你必须学会管理多个日历任务在批处理模式:
  • 检索系统默认使用的日历 getDefaultCalendar () 的方法 CalendarManager接口。
    与参数,指定日历类型的任务。
    1. var myCalendar = tizen.calendar.getDefaultCalendar("TASK");
    复制代码

  • 检索所有任务通过使用存储在日历 find () 的方法 日历对象:
    1. myCalendar.find(taskSearchSuccessCallback);
    复制代码
    注意:检索一组特定的任务,您可以指定一个过滤和排序顺序的搜索操作 filter sortMode 参数(属性支持过滤器,看到日历过滤器属性)。
    在这个例子中,所有的任务因为没有过滤检索使用。
  • 更新任务:

    • 定义的项目更新成功的事件处理程序 find () 方法:
      1. function taskSearchSuccessCallback(tasks)
      2. {
      3.    tasks[0].description = "New Description 1";
      4.    tasks[1].description = "New Description 2";
      复制代码
      2.使用 updateBatch () 方法异步更新多个日历条目:
      1.   /* Update the first 2 existing tasks */
      2.    myCalendar.updateBatch(tasks.slice(0, 2));
      3. }
      复制代码


    4.删除任务,使用 removeBatch () 成功的事件处理程序的方法 找到 () 异步方法删除多个日历条目:
  1. function taskSearchSuccessCallback(tasks)
  2. {
  3.    /* Delete the first 2 existing tasks */
  4.    myCalendar.removeBatch([tasks[0].id, tasks[1].id]);
  5. }
复制代码
日历任务转换格式
下面的例子说明了如何使日历任务交换更有效的在您的应用程序通过将日历任务iCalendar格式或其他方式使用 CalendarTask构造函数和 convertToString () 的方法 日历对象分别为:
  • 将一个iCalendar字符串转换为一个日历任务:
    • 检索系统默认使用的日历 getDefaultCalendar () 的方法 CalendarManager接口。
      与参数,指定日历类型的任务。
      1. var calendar = tizen.calendar.getDefaultCalendar("TASK");
      复制代码

    • 创建一个新的 CalendarTask 从iCalendar的字符串对象,并将它添加到默认日历:
      1. var task = new tizen.CalendarTask
      2. (
      3.    "BEGIN:VCALENDAR\r\n" +
      4.    "VERSION:2.0\r\n" +
      5.    "BEGIN:VTODO\r\n" +
      6.    "DTSTAMP:TZID=CET:20110902T110000Z\r\n" +
      7.    "DTSTART;TZID=CET:20110906T140000Z\r\n" +
      8.    "DUE;TZID=CET:20110906T150000Z\r\n" +
      9.    "SUMMARY:Tizen, discuss the schedule\r\n" +
      10.    "DESCRIPTION:Find the feasible schedule\r\n" +
      11.    "CATEGORIES:HUMAN RESOURCES\r\n" +
      12.    "END:VTODO\r\n" +
      13.    "END:VCALENDAR", "ICALENDAR_20"
      14. );
      15. calendar.add(task);
      16. console.log('Task added with id ' + task.id);
      复制代码

  • 将多个字符串,并将其导入到一个日历,把字符串,然后使用一个接一个 addBatch () 方法 添加所有的任务在一个批处理模式
  • 把日历任务iCalendar格式:
    • 把默认日历和找到所有日历包括“Tizen”字符串 总结Summary 属性:
      1. var myCalendar;
      2. myCalendar = tizen.calendar.getDefaultCalendar("TASK");
      3. /* Define a filter */
      4. var filter = new tizen.AttributeFilter("summary", "CONTAINS", "Tizen");
      5. /* Search for the tasks */
      6. myCalendar.find(taskSearchSuccessCallback, null, filter);
      复制代码

    • 一个日历条目转换为一个iCalendar字符串的成功事件处理程序 找到 () 方法使用 convertToString () 方法:
      1. function taskSearchSuccessCallback(tasks)
      2. {
      3.    /* Convert the first task */
      4.    var vtodo = tasks[0].convertToString("ICALENDAR_20");
      5. }
      复制代码

  • 出口将多个任务从一个日历,找到所需的任务使用 找到find() 方法应用过滤器,然后将发现任务一个接一个。

接收通知日历上的变化
创建与应用程序与各种日历功能,你必须学会接收通知当日历条目的添加,更新,或删除:
  • 定义所需的变量:
    1. /* Watcher identifier */
    2. var watcherId = 0;
    3. /* This example assumes that the calendar is initialized */
    4. var calendar;
    复制代码

  • 定义事件处理程序使用不同的通知 CalendarChangeCallback监听器接口:
    1. var watcher =
    2. {
    3.    /* When new items are added */
    4.    onitemsadded: function(items)
    5.    {
    6.       console.log(items.length + " items were added");
    7.    },
    8.    /* When items are updated */
    9.    onitemsupdated: function(items)
    10.    {
    11.       console.log(items.length + " items were updated");
    12.    },
    13.    /* When items are deleted */
    14.    onitemsremoved: function(ids)
    15.    {
    16.       console.log(ids.length + " items were removed");
    17.    }
    18. };
    复制代码

  • 注册侦听器使用定义的事件处理程序:
    1. watcherId = calendar.addChangeListener(watcher);
    复制代码

  • 停止通知,使用 removeChangeListener () 方法:
    1. function cancelWatch()
    2. {
    3.    calendar.removeChangeListener(watcherId);
    4. }
    复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
欢迎来到泰泽网:http://www.tizennet.com/ 泰泽论坛:http://bbs.tizennet.com/ 好没有内涵哦,快到设置中更改这个无聊的签名吧!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|泰泽应用|泰泽论坛|泰泽网|小黑屋|Archiver|手机版|泰泽邮箱|泰泽网 ( 蜀ICP备13024062号-1 )

GMT+8, 2024-11-24 19:05 , Processed in 0.099431 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表