1. 遍历EventList列表取得Item(Event)
PIMList list = PIM.getInstance().openPIMList(PIM.EVENT_LIST,PIM.READ_ONLY,name); // 遍历所有的记录,获取Event PIMItem item; for (Enumeration e = list.items(); e.hasMoreElements();) { item = (PIMItem)e.nextElement(); }
2. 读取Event循环数据
private void populateRepeatForm() throws PIMException { //重复部分的处理 RepeatRule repeat = ((Event)item).getRepeat(); if(repeat != null) { //存在重复 int[] fields = repeat.getFields(); for(int i=0; i<fields.length; i++) { switch(fields[i]) { case RepeatRule.FREQUENCY: //判断日程循环类型 String value = null; int frequency = repeat.getInt(RepeatRule.FREQUENCY); switch(frequency) { //按天循环 case RepeatRule.DAILY: value = "dayly"; break; //按周循环 case RepeatRule.WEEKLY: value = "weekly"; break; //按月循环 case RepeatRule.MONTHLY: value = "monthly"; break; //按年循环 case RepeatRule.YEARLY: value = "yearly"; break; } Item repeatItem = new TextField("repeat", value, 64, TextField.ANY); append(repeatItem); break; case RepeatRule.DAY_IN_MONTH: //按月循环,取得是每月的第几天 int dayInMonth = repeat.getInt(RepeatRule.DAY_IN_MONTH); Item dayItem = new TextField("day", dayInMonth+"", 128, TextField.DECIMAL); append(dayItem); break; case RepeatRule.DAY_IN_WEEK: /* dayInWeek会返回一个int的数值,该数值为相应的星期对应的int值得和: * 星期字段及对应值 * SUNDAY 65536 * MONDAY 32768 * TUESDAY 16384 * WEDNESDAY 8192 * THURSDAY 4096 * FRIDAY 2048 * 如果event选择每周一、三循环,则dayInWeek值为40960(32768+8192) * 将得到的和进行拆分,判断选择的是周几 */ int dayInWeek = repeat.getInt(RepeatRule.DAY_IN_WEEK); Item weekItem = new TextField("week", dayInWeek+"", 128, TextField.DECIMAL); append(weekItem); break; case RepeatRule.MONTH_IN_YEAR: //monthInYear会返回RepeatRule.JANUARY等十二月的已定义常量定义 int monthInYear = repeat.getInt(RepeatRule.MONTH_IN_YEAR); Item monthItem = new TextField("month", monthInYear+"", 128, TextField.DECIMAL); append(monthItem); break; case RepeatRule.INTERVAL: //读取循环间隔 int interval = repeat.getInt(RepeatRule.INTERVAL); Item intervalItem = new TextField("interval", interval+"", 128, TextField.DECIMAL); append(intervalItem); break; case RepeatRule.COUNT://搞不清干嘛的 int count = repeat.getInt(RepeatRule.COUNT); Item countItem = new TextField("count", count+"", 128, TextField.DECIMAL); append(countItem); break; case RepeatRule.END: //如果有重复结束时间,取得结束时间 long end = repeat.getDate(RepeatRule.END); Item endItem = new DateField("end", DateField.DATE_TIME); ((DateField)endItem).setDate(new Date(end)); append(endItem); break; } } } }
3. 日历Event循环设置
RepeatRule repeat = new RepeatRule(); /* * 设置重复类型, * 每天重复:RepeatRule.DAILY * 每周重复:RepeatRule.WEEKLY * 每月重复:RepeatRule.MONTHLY * 每年重复:RepeatRule.YEARLY */ repeat.setInt(RepeatRule.FREQUENCY, RepeatRule.MONTHLY); /* * 设置重复日期为每月的第二周的星期三 */ repeat.setInt(RepeatRule.WEEK_IN_MONTH, RepeatRule.SECOND); repeat.setInt(RepeatRule.DAY_IN_WEEK, RepeatRule.WEDNESDAY); /* * 设置重复到期时间12月31日下午23:59 */ java.util.Calendar cal = Calendar.getInstance(); cal.set(Calendar.MONTH, Calendar.DECEMBER); cal.set(Calendar.DAY_OF_MONTH, 31); cal.set(Calendar.AM_PM, Calendar.PM); cal.set(Calendar.HOUR_OF_DAY, 23); cal.set(Calendar.MINUTE, 59); setDate(RepeatRule.END, cal.getTime().getTime()); //第二个参数为long型 ((Event)item).setRepeatRule(repeat); //将循环规则加入到Event