2 // Tizen Web Device API
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
19 #include <dpl/log/log.h>
20 #include <CommonsJavaScript/Validator.h>
21 #include <CommonsJavaScript/JSUtils.h>
22 #include "JSCalendarEvent.h"
23 #include "JSCalendarTask.h"
24 #include "JSCalendarItemProperties.h"
25 #include "JSCalendarEventId.h"
26 #include "CalendarConverter.h"
27 #include "JSCalendar.h"
28 #include "JSCalendarManager.h"
29 #include "JSCalendarAttendee.h"
30 #include "JSCalendarRecurrenceRule.h"
31 #include "JSCalendarAlarm.h"
32 #include "JSStringArray.h"
33 #include "JSNumberArray.h"
34 #include "JSTZDateArray.h"
36 #include <TimeUtilConverter.h>
37 #include <DurationProperties.h>
38 #include <JSSimpleCoordinates.h>
39 #include <ContactConverter.h>
42 using namespace WrtDeviceApis::Commons;
43 using namespace WrtDeviceApis::CommonsJavaScript;
44 using namespace DeviceAPI::Time;
47 const int DEFAULT_EVENT_INTERVAL = 1;
53 CalendarConverter::CalendarConverter(JSContextRef context, CalendarEvent::CalendarType calendarType) : Converter(context)
55 m_calendarType = calendarType;
58 CalendarConverter::~CalendarConverter()
62 JSValueRef CalendarConverter::toJSValueRefEvent(const CalendarEventPtr& arg)
64 return JSUtils::makeObject(m_context, JSCalendarEvent::getClassRef(), arg);
67 JSValueRef CalendarConverter::toJSValueRefTask(const CalendarEventPtr& arg)
69 return JSUtils::makeObject(m_context, JSCalendarTask::getClassRef(), arg);
72 JSValueRef CalendarConverter::toJSValueRefEventArray(const CalendarEventListPtr &arg)
74 return toJSValueRef_(*arg, &CalendarConverter::toJSValueRefEvent, this);
77 JSValueRef CalendarConverter::toJSValueRefTaskArray(const CalendarEventListPtr &arg)
79 return toJSValueRef_(*arg, &CalendarConverter::toJSValueRefTask, this);
82 JSValueRef CalendarConverter::toJSValueRefCalendar(const ICalendarPtr& arg)
84 CalendarPrivObject *priv = new CalendarPrivObject(m_context, arg);
85 return JSObjectMake(m_context, JSCalendar::getClassRef(), priv);
88 JSValueRef CalendarConverter::toJSValueRef(const std::vector<ICalendarPtr> &arg)
90 return toJSValueRef_(arg, &CalendarConverter::toJSValueRefCalendar, this);
93 JSValueRef CalendarConverter::toJSValueRef(const StringArrayPtr &arg)
95 return JSStringArray::createArray(m_context, arg);
98 JSValueRef CalendarConverter::toJSValueRefNumberArray(const NumberArrayPtr &arg)
100 return JSNumberArray::createArray(m_context, arg);
103 JSValueRef CalendarConverter::toJSValueRefTZDateArray(const NumberArrayPtr &arg)
105 return JSTZDateArray::createArray(m_context, arg);
108 StringArrayPtr CalendarConverter::toStringArray(const JSValueRef &jsValue)
110 if(JSStringArray::isObjectOfClass(m_context, jsValue))
111 return JSStringArray::getStringArray(m_context, jsValue);
113 if(!JSIsArrayValue(m_context, jsValue))
114 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "StringArray is not array.");
116 StringArrayPtr result = StringArrayPtr(new StringArray());
117 JSObjectRef jsObject = toJSObjectRef(jsValue);
118 for (std::size_t i = 0; i < JSGetArrayLength(m_context, jsObject); ++i) {
119 JSValueRef element = JSGetArrayElement(m_context, jsObject, i);
120 result->push_back(toString(element));
125 NumberArrayPtr CalendarConverter::toNumberArray(const JSValueRef &jsValue)
127 if(JSNumberArray::isObjectOfClass(m_context, jsValue))
128 return JSNumberArray::getNumberArray(m_context, jsValue);
130 if(!JSIsArrayValue(m_context, jsValue))
131 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "NumberArray is not array.");
133 NumberArrayPtr result = NumberArrayPtr(new NumberArray());
134 JSObjectRef jsObject = toJSObjectRef(jsValue);
135 for (std::size_t i = 0; i < JSGetArrayLength(m_context, jsObject); ++i) {
136 JSValueRef element = JSGetArrayElement(m_context, jsObject, i);
137 result->push_back((long long int) (toLongLong(element)));
139 LogDebug("First number: "<<result->at(0));
143 NumberArrayPtr CalendarConverter::toTZDateArray(const JSValueRef &jsValue)
145 if(JSNumberArray::isObjectOfClass(m_context, jsValue))
146 return JSNumberArray::getNumberArray(m_context, jsValue);
148 if(!JSIsArrayValue(m_context, jsValue))
149 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "NumberArray is not array.");
151 TimeUtilConverter timeConverter(m_context);
153 NumberArrayPtr result = NumberArrayPtr(new NumberArray());
154 JSObjectRef jsObject = toJSObjectRef(jsValue);
155 for (std::size_t i = 0; i < JSGetArrayLength(m_context, jsObject); ++i) {
156 JSValueRef element = JSGetArrayElement(m_context, jsObject, i);
157 result->push_back((long long int) (timeConverter.getTimeInMilliseconds(element)/1000));
159 LogDebug("First value: "<<result->at(0));
163 EventAlarm::EventAlarmType CalendarConverter::toEventAlarmType(std::string alarmMethod)
166 if (!alarmMethod.compare(TIZEN_CALENDAR_PROPERTY_DISPLAY_ALARM))
167 return EventAlarm::SILENT_ALARM;
168 else if (!alarmMethod.compare(TIZEN_CALENDAR_PROPERTY_SOUND_ALARM))
169 return EventAlarm::SOUND_ALARM;
171 ThrowMsg(ConversionException, "Invalid alarm type.");
173 return EventAlarm::UNDEFINED_ALARM_TYPE;
176 std::string CalendarConverter::toTizenValue(EventAlarm::EventAlarmType abstractValue) const
178 switch (abstractValue) {
179 case EventAlarm::SILENT_ALARM:
180 return TIZEN_CALENDAR_PROPERTY_DISPLAY_ALARM;
181 case EventAlarm::SOUND_ALARM:
182 return TIZEN_CALENDAR_PROPERTY_SOUND_ALARM;
186 ThrowMsg(ConversionException, "Invalid alarm type");
189 CalendarEvent::EventStatus CalendarConverter::toEventStatus(std::string tizenValue) const
191 if(!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_TENTATIVE_STATUS))
192 return CalendarEvent::TENTATIVE_STATUS;
193 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_CONFIRMED_STATUS))
194 return CalendarEvent::CONFIRMED_STATUS;
195 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_CANCELLED_STATUS))
196 return CalendarEvent::CANCELLED_STATUS;
197 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_NEEDS_ACTION_STATUS))
198 return CalendarEvent::NEEDS_ACTION_STATUS;
199 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_IN_PROCESS_STATUS))
200 return CalendarEvent::IN_PROCESS_STATUS;
201 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_COMPLETED_STATUS))
202 return CalendarEvent::COMPLETED_STATUS;
204 ThrowMsg(ConversionException, "Invalid status type.");
206 return CalendarEvent::UNDEFINED_STATUS;
209 std::string CalendarConverter::toTizenValue(CalendarEvent::EventStatus abstractValue)
212 switch (abstractValue) {
213 case CalendarEvent::TENTATIVE_STATUS:
214 return TIZEN_CALENDAR_PROPERTY_TENTATIVE_STATUS;
215 case CalendarEvent::CONFIRMED_STATUS:
216 return TIZEN_CALENDAR_PROPERTY_CONFIRMED_STATUS;
217 case CalendarEvent::CANCELLED_STATUS:
218 return TIZEN_CALENDAR_PROPERTY_CANCELLED_STATUS;
219 case CalendarEvent::NEEDS_ACTION_STATUS:
220 return TIZEN_CALENDAR_PROPERTY_NEEDS_ACTION_STATUS;
221 case CalendarEvent::IN_PROCESS_STATUS:
222 return TIZEN_CALENDAR_PROPERTY_IN_PROCESS_STATUS;
223 case CalendarEvent::COMPLETED_STATUS:
224 return TIZEN_CALENDAR_PROPERTY_COMPLETED_STATUS;
227 if (CalendarEvent::TASK_TYPE==m_calendarType) {
228 return TIZEN_CALENDAR_PROPERTY_NEEDS_ACTION_STATUS;
230 return TIZEN_CALENDAR_PROPERTY_CONFIRMED_STATUS;
237 EventRecurrenceRule::EventRecurrence CalendarConverter::toRecurrenceFrequency(
238 std::string tizenValue) const
240 if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_DAILY_RECURRENCE))
241 return EventRecurrenceRule::DAILY_RECURRENCE;
242 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_WEEKLY_RECURRENCE))
243 return EventRecurrenceRule::WEEKLY_RECURRENCE;
244 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_MONTHLY_RECURRENCE))
245 return EventRecurrenceRule::MONTHLY_RECURRENCE;
246 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_YEARLY_RECURRENCE))
247 return EventRecurrenceRule::YEARLY_RECURRENCE;
249 ThrowMsg(ConversionException, "Invalid recurrence frequency type.");
251 return EventRecurrenceRule::UNDEFINED_RECURRENCE;
254 std::string CalendarConverter::toTizenValue(
255 EventRecurrenceRule::EventRecurrence abstractValue) const
257 switch (abstractValue) {
258 case EventRecurrenceRule::DAILY_RECURRENCE:
259 return TIZEN_CALENDAR_PROPERTY_DAILY_RECURRENCE;
260 case EventRecurrenceRule::WEEKLY_RECURRENCE:
261 return TIZEN_CALENDAR_PROPERTY_WEEKLY_RECURRENCE;
262 case EventRecurrenceRule::MONTHLY_RECURRENCE:
263 return TIZEN_CALENDAR_PROPERTY_MONTHLY_RECURRENCE;
264 case EventRecurrenceRule::YEARLY_RECURRENCE:
265 return TIZEN_CALENDAR_PROPERTY_YEARLY_RECURRENCE;
266 case EventRecurrenceRule::NO_RECURRENCE:
273 EventRecurrenceRulePtr CalendarConverter::toEventRecurrenceRule(JSValueRef rrule)
275 EventRecurrenceRulePtr result(new EventRecurrenceRule());
276 const ScopedJSStringRef frequencyStr(JSStringCreateWithUTF8CString(TIZEN_RECURRENCE_RULE_FREQUENCY));
277 const ScopedJSStringRef intervalStr(JSStringCreateWithUTF8CString(TIZEN_RECURRENCE_RULE_INTERVAL));
278 const ScopedJSStringRef untilDateStr(JSStringCreateWithUTF8CString(TIZEN_RECURRENCE_RULE_UNTIL_DATE));
279 const ScopedJSStringRef occurrenceCountStr(JSStringCreateWithUTF8CString(TIZEN_RECURRENCE_RULE_OCCURRENCE_COUNT));
280 //const ScopedJSStringRef daysOfTheMonthStr(JSStringCreateWithUTF8CString(TIZEN_RECURRENCE_RULE_DAYS_OF_THE_MONTH));
281 const ScopedJSStringRef daysOfTheWeekStr(JSStringCreateWithUTF8CString(TIZEN_RECURRENCE_RULE_DAYS_OF_THE_WEEK));
282 //const ScopedJSStringRef daysOfTheYearStr(JSStringCreateWithUTF8CString(TIZEN_RECURRENCE_RULE_DAYS_OF_THE_YEAR));
283 //const ScopedJSStringRef weeksOfTheYearStr(JSStringCreateWithUTF8CString(TIZEN_RECURRENCE_RULE_WEEKS_OF_THE_YEAR));
284 const ScopedJSStringRef setPositionsStr(JSStringCreateWithUTF8CString(TIZEN_RECURRENCE_RULE_SET_POSITIONS));
285 const ScopedJSStringRef exceptionsStr(JSStringCreateWithUTF8CString(TIZEN_RECURRENCE_RULE_EXCEPTIONS));
287 JSObjectRef arg = toJSObjectRef(rrule);
289 JSValueRef frequencyData = JSObjectGetProperty(m_context, arg, frequencyStr.get(), NULL);
290 JSValueRef intervalData = JSObjectGetProperty(m_context, arg, intervalStr.get(), NULL);
291 JSValueRef untilDateData = JSObjectGetProperty(m_context, arg, untilDateStr.get(), NULL);
292 JSValueRef occurrenceCountData = JSObjectGetProperty(m_context, arg, occurrenceCountStr.get(), NULL);
293 //JSValueRef daysOfTheMonthData = JSObjectGetProperty(m_context, arg, daysOfTheMonthStr.get(), NULL);
294 JSValueRef daysOfTheWeekData = JSObjectGetProperty(m_context, arg, daysOfTheWeekStr.get(), NULL);
295 //JSValueRef daysOfTheYearData = JSObjectGetProperty(m_context, arg, daysOfTheYearStr.get(), NULL);
296 //JSValueRef weeksOfTheYearData = JSObjectGetProperty(m_context, arg, weeksOfTheYearStr.get(), NULL);
297 JSValueRef setPositionsData = JSObjectGetProperty(m_context, arg, setPositionsStr.get(), NULL);
298 JSValueRef exceptionsData = JSObjectGetProperty(m_context, arg, exceptionsStr.get(), NULL);
300 if (!JSValueIsUndefined(m_context, frequencyData)) {
301 result->setFrequency(toRecurrenceFrequency(toString(frequencyData)));
303 if (!JSValueIsUndefined(m_context, intervalData)) {
304 result->setInterval(toInt(intervalData));
306 if (!JSValueIsUndefined(m_context, untilDateData)) {
307 if (!JSValueIsNull(m_context, untilDateData)) {
308 TimeUtilConverter timeUtilConverter(m_context);
309 result->setEndDate((long long int) (timeUtilConverter.getTimeInMilliseconds(untilDateData)/1000));
310 result->setTimeZone(timeUtilConverter.getPropertiesInTZDate(untilDateData).timezone);
312 result->setEndDate(0);
315 if (!JSValueIsUndefined(m_context, occurrenceCountData)) {
316 result->setOccurrenceCount(toLong(occurrenceCountData));
318 /*if (!JSValueIsUndefined(m_context, daysOfTheMonthData)) {
319 result->setDaysOfTheMonth(toVectorOfInts(daysOfTheMonthData));
321 if (!JSValueIsUndefined(m_context, daysOfTheWeekData)) {
322 result->setDaysOfTheWeek(toStringArray(daysOfTheWeekData));
324 /*if (!JSValueIsUndefined(m_context, daysOfTheYearData)) {
325 result->setDaysOfTheYear(toVectorOfInts(daysOfTheYearData));
327 if (!JSValueIsUndefined(m_context, weeksOfTheYearData)) {
328 result->setWeeksOfTheYear(toVectorOfInts(weeksOfTheYearData));
330 if (!JSValueIsUndefined(m_context, setPositionsData)) {
331 result->setSetPositions(toNumberArray(setPositionsData));
333 if (!JSValueIsUndefined(m_context, exceptionsData)) {
334 result->setExceptions(toTZDateArray(exceptionsData));
340 CalendarEvent::EventVisibility CalendarConverter::toEventVisibility(std::string tizenValue)
343 if(!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_PUBLIC_VISIBILITY))
344 return CalendarEvent::PUBLIC_VISIBILITY;
345 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_PRIVATE_VISIBILITY))
346 return CalendarEvent::PRIVATE_VISIBILITY;
347 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_CONFIDENTIAL_VISIBILITY))
348 return CalendarEvent::CONFIDENTIAL_VISIBILITY;
350 ThrowMsg(ConversionException, "Invalid visibility type.");
352 return CalendarEvent::UNDEFINED_VISIBILITY;
355 std::string CalendarConverter::toTizenValue(
356 CalendarEvent::EventVisibility abstractValue) const
358 switch (abstractValue) {
359 case CalendarEvent::PUBLIC_VISIBILITY:
360 return TIZEN_CALENDAR_PROPERTY_PUBLIC_VISIBILITY;
361 case CalendarEvent::PRIVATE_VISIBILITY:
362 return TIZEN_CALENDAR_PROPERTY_PRIVATE_VISIBILITY;
363 case CalendarEvent::CONFIDENTIAL_VISIBILITY:
364 return TIZEN_CALENDAR_PROPERTY_CONFIDENTIAL_VISIBILITY;
369 return TIZEN_CALENDAR_PROPERTY_PUBLIC_VISIBILITY;
372 CalendarEvent::EventAvailability CalendarConverter::toEventAvailability(std::string tizenValue)
375 if(!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_BUSY))
376 return CalendarEvent::BUSY_FB;
377 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_BUSY_UNAVAILABLE_FB))
378 return CalendarEvent::BUSY_UNAVAILABLE_FB;
379 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_FREE))
380 return CalendarEvent::FREE_FB;
381 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_BUSY_TENTATIVE))
382 return CalendarEvent::BUSY_TENTATIVE_FB;
384 ThrowMsg(ConversionException, "Invalid availability type.");
386 return CalendarEvent::UNDEFINED_AVAILABILITY;
389 std::string CalendarConverter::toTizenValue(
390 CalendarEvent::EventAvailability abstractValue) const
392 switch (abstractValue) {
393 case CalendarEvent::BUSY_FB:
394 return TIZEN_CALENDAR_PROPERTY_BUSY;
395 case CalendarEvent::BUSY_UNAVAILABLE_FB:
396 return TIZEN_CALENDAR_PROPERTY_BUSY_UNAVAILABLE_FB;
397 case CalendarEvent::FREE_FB:
398 return TIZEN_CALENDAR_PROPERTY_FREE;
399 case CalendarEvent::BUSY_TENTATIVE_FB:
400 return TIZEN_CALENDAR_PROPERTY_BUSY_TENTATIVE;
405 return TIZEN_CALENDAR_PROPERTY_BUSY;
408 EventAttendee::EventAttendeeRole CalendarConverter::toEventAttendeeRole(std::string tizenValue)
411 if(!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_REQ_PARTICIPANT_ROLE))
412 return EventAttendee::REQ_PARTICIPANT_ROLE;
413 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_OPT_PARTICIPANT_ROLE))
414 return EventAttendee::OPT_PARTICIPANT_ROLE;
415 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_NON_PARTICIPANT_ROLE))
416 return EventAttendee::NON_PARTICIPANT_ROLE;
417 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_CHAIR_ROLE))
418 return EventAttendee::CHAIR_ROLE;
420 ThrowMsg(ConversionException, "Invalid attendee role type.");
422 return EventAttendee::UNDEFINED_ATTENDEE_ROLE;
425 std::string CalendarConverter::toTizenValue(
426 EventAttendee::EventAttendeeRole abstractValue) const
428 switch (abstractValue) {
429 case EventAttendee::REQ_PARTICIPANT_ROLE:
430 return TIZEN_CALENDAR_PROPERTY_REQ_PARTICIPANT_ROLE;
431 case EventAttendee::OPT_PARTICIPANT_ROLE:
432 return TIZEN_CALENDAR_PROPERTY_OPT_PARTICIPANT_ROLE;
433 case EventAttendee::NON_PARTICIPANT_ROLE:
434 return TIZEN_CALENDAR_PROPERTY_NON_PARTICIPANT_ROLE;
435 case EventAttendee::CHAIR_ROLE:
436 return TIZEN_CALENDAR_PROPERTY_CHAIR_ROLE;
440 return TIZEN_CALENDAR_PROPERTY_REQ_PARTICIPANT_ROLE;
443 EventAttendee::EventAttendeeStatus CalendarConverter::toEventAttendeeStatus(std::string tizenValue)
446 if(!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_PENDING_STATUS))
447 return EventAttendee::PENDING_AT_STATUS;
448 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_ACCEPTED_STATUS))
449 return EventAttendee::ACCEPTED_AT_STATUS;
450 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_DECLINED_STATUS))
451 return EventAttendee::DECLINED_AT_STATUS;
452 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_TENTATIVE_STATUS))
453 return EventAttendee::TENTATIVE_AT_STATUS;
454 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_DELEGATED_STATUS))
455 return EventAttendee::DELEGATED_AT_STATUS;
456 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_COMPLETED_STATUS))
457 return EventAttendee::COMPLETED_AT_STATUS;
458 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_IN_PROCESS_STATUS))
459 return EventAttendee::IN_PROCESS_AT_STATUS;
461 ThrowMsg(ConversionException, "Invalid attendee status type.");
463 return EventAttendee::UNDEFINED_ATTENDEE_STATUS;
466 std::string CalendarConverter::toTizenValue(
467 EventAttendee::EventAttendeeStatus abstractValue) const
469 switch (abstractValue) {
470 case EventAttendee::PENDING_AT_STATUS:
471 return TIZEN_CALENDAR_PROPERTY_PENDING_STATUS;
472 case EventAttendee::ACCEPTED_AT_STATUS:
473 return TIZEN_CALENDAR_PROPERTY_ACCEPTED_STATUS;
474 case EventAttendee::DECLINED_AT_STATUS:
475 return TIZEN_CALENDAR_PROPERTY_DECLINED_STATUS;
476 case EventAttendee::TENTATIVE_AT_STATUS:
477 return TIZEN_CALENDAR_PROPERTY_TENTATIVE_STATUS;
478 case EventAttendee::DELEGATED_AT_STATUS:
479 return TIZEN_CALENDAR_PROPERTY_DELEGATED_STATUS;
480 case EventAttendee::COMPLETED_AT_STATUS:
481 return TIZEN_CALENDAR_PROPERTY_COMPLETED_STATUS;
482 case EventAttendee::IN_PROCESS_AT_STATUS:
483 return TIZEN_CALENDAR_PROPERTY_IN_PROCESS_STATUS;
487 return TIZEN_CALENDAR_PROPERTY_PENDING_STATUS;
490 EventAttendee::EventAttendeeType CalendarConverter::toEventAttendeeType(std::string tizenValue)
493 if(!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_INDIVIDUAL_TYPE))
494 return EventAttendee::INDIVIDUAL_TYPE;
495 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_GROUP_TYPE))
496 return EventAttendee::GROUP_TYPE;
497 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_RESOURCE_TYPE))
498 return EventAttendee::RESOURCE_TYPE;
499 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_ROOM_TYPE))
500 return EventAttendee::ROOM_TYPE;
501 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_UNKNOWN_TYPE))
502 return EventAttendee::UNKNOWN_TYPE;
504 ThrowMsg(ConversionException, "Invalid attendee type.");
506 return EventAttendee::INDIVIDUAL_TYPE;
509 std::string CalendarConverter::toTizenValue(
510 EventAttendee::EventAttendeeType abstractValue) const
512 switch (abstractValue) {
513 case EventAttendee::INDIVIDUAL_TYPE:
514 return TIZEN_CALENDAR_PROPERTY_INDIVIDUAL_TYPE;
515 case EventAttendee::GROUP_TYPE:
516 return TIZEN_CALENDAR_PROPERTY_GROUP_TYPE;
517 case EventAttendee::RESOURCE_TYPE:
518 return TIZEN_CALENDAR_PROPERTY_RESOURCE_TYPE;
519 case EventAttendee::ROOM_TYPE:
520 return TIZEN_CALENDAR_PROPERTY_ROOM_TYPE;
521 case EventAttendee::UNKNOWN_TYPE:
522 return TIZEN_CALENDAR_PROPERTY_UNKNOWN_TYPE;
527 return TIZEN_CALENDAR_PROPERTY_INDIVIDUAL_TYPE;
530 JSValueRef CalendarConverter::toFunctionOrNull(const JSValueRef& arg)
532 if (Validator(m_context).isCallback(arg)) {
534 } else if (!JSValueIsNull(m_context,
535 arg) && !JSValueIsUndefined(m_context, arg)) {
536 ThrowMsg(ConversionException, "Not a function nor JS null.");
541 JSValueRef CalendarConverter::toFunction(const JSValueRef& arg)
543 if (Validator(m_context).isCallback(arg)) {
546 ThrowMsg(ConversionException, "Not a function.");
549 StringArrayPtr CalendarConverter::toCategories(JSValueRef categories)
551 StringArrayPtr result(new StringArray());
552 *result = toVectorOfStrings(categories);
556 EventAttendeePtr CalendarConverter::toAttendee(JSValueRef attendee)
558 EventAttendeePtr result(new EventAttendee());
559 const ScopedJSStringRef nameStr(JSStringCreateWithUTF8CString(TIZEN_ATTENDEE_NAME));
560 const ScopedJSStringRef uriStr(JSStringCreateWithUTF8CString(TIZEN_ATTENDEE_URI));
561 const ScopedJSStringRef roleStr(JSStringCreateWithUTF8CString(TIZEN_ATTENDEE_ROLE));
562 const ScopedJSStringRef statusStr(JSStringCreateWithUTF8CString(TIZEN_ATTENDEE_STATUS));
563 const ScopedJSStringRef RSVPStr(JSStringCreateWithUTF8CString(TIZEN_ATTENDEE_RSVP));
564 const ScopedJSStringRef typeStr(JSStringCreateWithUTF8CString(TIZEN_ATTENDEE_TYPE));
565 const ScopedJSStringRef groupStr(JSStringCreateWithUTF8CString(TIZEN_ATTENDEE_GROUP));
566 const ScopedJSStringRef delegatorURIStr(JSStringCreateWithUTF8CString(TIZEN_ATTENDEE_DELEGATORURI));
567 const ScopedJSStringRef delegateURIStr(JSStringCreateWithUTF8CString(TIZEN_ATTENDEE_DELEGATEURI));
568 const ScopedJSStringRef contactRefStr(JSStringCreateWithUTF8CString(TIZEN_ATTENDEE_CONTACT_REF));
570 JSObjectRef arg = toJSObjectRef(attendee);
572 JSValueRef nameData = JSObjectGetProperty(m_context, arg, nameStr.get(), NULL);
573 JSValueRef uriData = JSObjectGetProperty(m_context, arg, uriStr.get(), NULL);
574 JSValueRef roleData = JSObjectGetProperty(m_context, arg, roleStr.get(), NULL);
575 JSValueRef statusData = JSObjectGetProperty(m_context, arg, statusStr.get(), NULL);
576 JSValueRef RSVPData = JSObjectGetProperty(m_context, arg, RSVPStr.get(), NULL);
577 JSValueRef typeData = JSObjectGetProperty(m_context, arg, typeStr.get(), NULL);
578 JSValueRef groupData = JSObjectGetProperty(m_context, arg, groupStr.get(), NULL);
579 JSValueRef delegatorURIData = JSObjectGetProperty(m_context, arg, delegatorURIStr.get(), NULL);
580 JSValueRef delegateURIData = JSObjectGetProperty(m_context, arg, delegateURIStr.get(), NULL);
581 JSValueRef contactRefData = JSObjectGetProperty(m_context, arg, contactRefStr.get(), NULL);
583 if (!JSValueIsUndefined(m_context, nameData)) {
584 result->setName(toString(nameData));
586 if (!JSValueIsUndefined(m_context, uriData)) {
587 result->setURI(toString(uriData));
589 if (!JSValueIsUndefined(m_context, roleData)) {
590 result->setRole(toEventAttendeeRole(toString(roleData)));
592 if (!JSValueIsUndefined(m_context, statusData)) {
593 result->setStatus(toEventAttendeeStatus(toString(statusData)));
595 if (!JSValueIsUndefined(m_context, RSVPData)) {
596 result->setRSVP(toBool(RSVPData));
598 if (!JSValueIsUndefined(m_context, typeData)) {
599 result->setType(toEventAttendeeType(toString(typeData)));
601 if (!JSValueIsUndefined(m_context, groupData)) {
602 result->setGroup(toString(groupData));
604 if (!JSValueIsUndefined(m_context, delegatorURIData)) {
605 result->setDelegatorURI(toString(delegatorURIData));
607 if (!JSValueIsUndefined(m_context, delegateURIData)) {
608 result->setDelegateURI(toString(delegateURIData));
610 if (!JSValueIsUndefined(m_context, contactRefData)) {
611 DeviceAPI::Contact::ContactConverter contactConverter(m_context);
612 result->setContactId(contactConverter.toContactRef(contactRefData)->getContactId());
613 result->setAddressBookId(contactConverter.toContactRef(contactRefData)->getAddressBookId());
619 EventAttendeeListPtr CalendarConverter::toVectorOfAttendeesFromDictionary(JSValueRef attendees)
621 EventAttendeeListPtr result(new EventAttendeeList());
623 std::vector<EventAttendeePtr> resultVector;
624 JSObjectRef objArg = toJSObjectRef(attendees);
625 LogDebug("array length "<<JSGetArrayLength(m_context, objArg));
626 for (std::size_t i = 0; i < JSGetArrayLength(m_context, objArg); i++) {
627 JSValueRef element = JSGetArrayElement(m_context, objArg, i);
628 resultVector.push_back(toAttendee(element));
631 *result = resultVector;
635 EventAttendeeListPtr CalendarConverter::toVectorOfAttendeesFromReference(JSValueRef attendees)
637 EventAttendeeListPtr result(new EventAttendeeList());
639 std::vector<EventAttendeePtr> resultVector;
640 JSObjectRef objArg = toJSObjectRef(attendees);
641 LogDebug("array length "<<JSGetArrayLength(m_context, objArg));
642 for (std::size_t i = 0; i < JSGetArrayLength(m_context, objArg); i++) {
643 JSValueRef element = JSGetArrayElement(m_context, objArg, i);
644 resultVector.push_back(JSCalendarAttendee::getPrivateObject(JSValueToObject(m_context, element, NULL)));
647 *result = resultVector;
651 EventAlarmPtr CalendarConverter::toEventAlarm(JSValueRef alarm)
653 EventAlarmPtr result(new EventAlarm());
654 const ScopedJSStringRef absoluteDateStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_ALARM_ABSOLUTE_DATE));
655 const ScopedJSStringRef beforeStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_ALARM_BEFORE));
656 const ScopedJSStringRef methodStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_ALARM_METHOD));
657 const ScopedJSStringRef descriptionStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_ALARM_DESCRIPTION));
659 JSObjectRef arg = toJSObjectRef(alarm);
661 JSValueRef absoluteDateData = JSObjectGetProperty(m_context, arg, absoluteDateStr.get(), NULL);
662 JSValueRef beforeData = JSObjectGetProperty(m_context, arg, beforeStr.get(), NULL);
663 JSValueRef methodData = JSObjectGetProperty(m_context, arg, methodStr.get(), NULL);
664 JSValueRef descriptionData = JSObjectGetProperty(m_context, arg, descriptionStr.get(), NULL);
666 if (!JSValueIsUndefined(m_context, absoluteDateData)) {
667 TimeUtilConverter timeConverter(m_context);
668 result->setAbsoluteDate((long long int) (timeConverter.getTimeInMilliseconds(absoluteDateData)/1000));
670 if (!JSValueIsUndefined(m_context, beforeData)) {
671 TimeUtilConverter timeConverter(m_context);
672 result->setDuration(timeConverter.getDurationPropertis(beforeData));
674 if (!JSValueIsUndefined(m_context, methodData)) {
675 result->setMethod(toEventAlarmType(toString(methodData)));
677 if (!JSValueIsUndefined(m_context, descriptionData)) {
678 result->setDescription(toString(descriptionData));
684 EventAlarmListPtr CalendarConverter::toVectorOfEventAlarmsFromDictionary(JSValueRef alarms)
686 EventAlarmListPtr result(new EventAlarmList());
688 std::vector<EventAlarmPtr> resultVector;
689 JSObjectRef objArg = toJSObjectRef(alarms);
690 LogDebug("array length "<<JSGetArrayLength(m_context, objArg));
691 for (std::size_t i = 0; i < JSGetArrayLength(m_context, objArg); i++) {
692 JSValueRef element = JSGetArrayElement(m_context, objArg, i);
693 resultVector.push_back(toEventAlarm(element));
696 *result = resultVector;
700 EventAlarmListPtr CalendarConverter::toVectorOfEventAlarmsFromReference(JSValueRef alarms)
702 EventAlarmListPtr result(new EventAlarmList());
704 std::vector<EventAlarmPtr> resultVector;
705 JSObjectRef objArg = toJSObjectRef(alarms);
706 LogDebug("array length "<<JSGetArrayLength(m_context, objArg));
707 for (std::size_t i = 0; i < JSGetArrayLength(m_context, objArg); i++) {
708 JSValueRef element = JSGetArrayElement(m_context, objArg, i);
709 resultVector.push_back(JSCalendarAlarm::getPrivateObject(JSValueToObject(m_context, element, NULL)));
712 *result = resultVector;
716 CalendarEventPtr CalendarConverter::toEvent(const JSValueRef event)
718 CalendarEventPtr result(new CalendarEvent());
719 const ScopedJSStringRef descriptionStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_ITEM_DESCRIPTION));
720 const ScopedJSStringRef summaryStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_ITEM_SUMMARY));
721 const ScopedJSStringRef startTimeStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_ITEM_START_DATE));
722 const ScopedJSStringRef durationStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_ITEM_DURATION));
723 const ScopedJSStringRef locationStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_ITEM_LOCATION));
724 const ScopedJSStringRef categoriesStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_ITEM_CATEGORIES));
725 const ScopedJSStringRef statusStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_ITEM_STATUS));
726 const ScopedJSStringRef alarmsStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_ITEM_ALARMS));
727 const ScopedJSStringRef isAllDayStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_ITEM_IS_ALL_DAY));
728 const ScopedJSStringRef organizerStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_ITEM_ORGANIZER));
729 const ScopedJSStringRef attendeesStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_ITEM_ATTENDEES));
730 const ScopedJSStringRef geolocationStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_ITEM_GEOLOCATION));
731 const ScopedJSStringRef visibilityStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_ITEM_VISIBILITY));
732 const ScopedJSStringRef availabilityStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_EVENT_AVAILABILITY));
733 const ScopedJSStringRef recurrenceRuleStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_EVENT_RECURRENCE_RULE));
734 const ScopedJSStringRef priorityStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_ITEM_PRIORITY));
735 const ScopedJSStringRef endDateStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_EVENT_END_DATE));
736 const ScopedJSStringRef dueDateStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_TASK_DUE_DATE));
737 const ScopedJSStringRef completedDateStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_TASK_COMPLETED_DATE));
738 const ScopedJSStringRef progressStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_TASK_PROGRESS));
740 JSObjectRef arg = toJSObjectRef(event);
742 JSValueRef descriptionData = JSObjectGetProperty(m_context, arg, descriptionStr.get(), NULL);
743 JSValueRef summaryData = JSObjectGetProperty(m_context, arg, summaryStr.get(), NULL);
744 JSValueRef startTimeData = JSObjectGetProperty(m_context, arg, startTimeStr.get(), NULL);
745 JSValueRef durationData = JSObjectGetProperty(m_context, arg, durationStr.get(), NULL);
746 JSValueRef locationData = JSObjectGetProperty(m_context, arg, locationStr.get(), NULL);
747 JSValueRef categoriesData = JSObjectGetProperty(m_context, arg, categoriesStr.get(), NULL);
748 JSValueRef statusData = JSObjectGetProperty(m_context, arg, statusStr.get(), NULL);
749 JSValueRef alarmsData = JSObjectGetProperty(m_context, arg, alarmsStr.get(), NULL);
750 JSValueRef isAllDayData = JSObjectGetProperty(m_context, arg, isAllDayStr.get(), NULL);
751 JSValueRef organizerData = JSObjectGetProperty(m_context, arg, organizerStr.get(), NULL);
752 JSValueRef attendeesData = JSObjectGetProperty(m_context, arg, attendeesStr.get(), NULL);
753 JSValueRef geolocationData = JSObjectGetProperty(m_context, arg, geolocationStr.get(), NULL);
754 JSValueRef visibilityData = JSObjectGetProperty(m_context, arg, visibilityStr.get(), NULL);
755 JSValueRef availabilityData = JSObjectGetProperty(m_context, arg, availabilityStr.get(), NULL);
756 JSValueRef recurrenceRuleData = JSObjectGetProperty(m_context, arg, recurrenceRuleStr.get(), NULL);
757 JSValueRef priorityData = JSObjectGetProperty(m_context, arg, priorityStr.get(), NULL);
758 JSValueRef endDateData = JSObjectGetProperty(m_context, arg, endDateStr.get(), NULL);
759 JSValueRef dueDateData = JSObjectGetProperty(m_context, arg, dueDateStr.get(), NULL);
760 JSValueRef completedDateData = JSObjectGetProperty(m_context, arg, completedDateStr.get(), NULL);
761 JSValueRef progressData = JSObjectGetProperty(m_context, arg, progressStr.get(), NULL);
763 TimeUtilConverter timeUtilConverter(m_context);
765 if (!JSValueIsUndefined(m_context, descriptionData)) {
766 result->setDescription(toString(descriptionData));
769 if (!JSValueIsUndefined(m_context, summaryData)) {
770 result->setSubject(toString(summaryData));
773 //It's important to set startTime before duration to set end date
774 if (!JSValueIsUndefined(m_context, startTimeData)) {
775 result->setStartTime((long long int) (timeUtilConverter.getTimeInMilliseconds(startTimeData)/1000));
776 result->setTimeZone(timeUtilConverter.getPropertiesInTZDate(startTimeData).timezone);
777 LogInfo("start time converted from TZDate: "<<result->getStartTime()<<", time zone: "<<result->getTimeZone());
780 //set default value, current local time.
781 if(m_calendarType == CalendarEvent::EVENT_TYPE) {
782 //result->setStartTime(std::time(NULL));
786 if (!JSValueIsUndefined(m_context, durationData)) {
787 long length = timeUtilConverter.getDurationLength(durationData);
788 int unit = timeUtilConverter.getDurationUnit(durationData);
789 LogInfo("duration length: "<<length<<", unit "<<unit);
791 ThrowMsg(ConversionException, "Wrong duration length.");
793 if( SECONDS_UNIT==unit ) {
794 result->setEndTime(result->getStartTime() + length);
795 } else if ( MINUTES_UNIT==unit ) {
796 result->setEndTime(result->getStartTime() + length*60);
797 } else if ( HOURS_UNIT==unit ) {
798 result->setEndTime(result->getStartTime() + length*60*60);
799 } else if ( DAYS_UNIT==unit ) {
800 result->setEndTime(result->getStartTime() + length*24*60*60);
802 ThrowMsg(ConversionException, "Wrong duration unit.");
805 if (!JSValueIsUndefined(m_context, locationData)) {
806 result->setLocation(toString(locationData));
808 if (!JSValueIsUndefined(m_context, categoriesData)) {
809 StringArrayPtr categories(new StringArray());
810 *categories = toVectorOfStrings(categoriesData);
811 result->setCategories(categories);
814 if (!JSValueIsUndefined(m_context, statusData)) {
815 result->setStatus(toEventStatus(toString(statusData)));
817 result->setStatus(CalendarEvent::CONFIRMED_STATUS);
819 if (!JSValueIsUndefined(m_context, alarmsData)) {
820 EventAlarmListPtr alarms = toVectorOfEventAlarmsFromReference(alarmsData);
821 result->setAlarms(alarms);
823 if (!JSValueIsUndefined(m_context, isAllDayData)) {
824 result->setIsAllDay(toBool(isAllDayData));
826 if (!JSValueIsUndefined(m_context, organizerData)) {
827 result->setOrganizer(toString(organizerData));
829 if (!JSValueIsUndefined(m_context, attendeesData)) {
830 EventAttendeeListPtr attendees = toVectorOfAttendeesFromReference(attendeesData);
831 result->setAttendees(attendees);
833 if (!JSValueIsUndefined(m_context, geolocationData)) {
834 DeviceAPI::Tizen::SimpleCoordinatesPtr geoLocation =
835 DeviceAPI::Tizen::JSSimpleCoordinates::getSimpleCoordinates(m_context, geolocationData);
836 result->setLatitude(geoLocation->getLatitude());
837 result->setLongitude(geoLocation->getLongitude());
839 if (!JSValueIsUndefined(m_context, visibilityData)) {
840 result->setVisibility(toEventVisibility(toString(visibilityData)));
842 if (!JSValueIsUndefined(m_context, availabilityData)) {
843 result->setAvailability(toEventAvailability(toString(availabilityData)));
845 if (!JSValueIsUndefined(m_context, recurrenceRuleData)) {
846 result->setRecurrenceRule(JSCalendarRecurrenceRule::getPrivateObject(JSValueToObject(m_context, recurrenceRuleData, NULL)));
848 if (!JSValueIsUndefined(m_context, priorityData)) {
849 result->setPriority(toTaskPriority(toString(priorityData)));
851 if (!JSValueIsUndefined(m_context, endDateData)) {
852 if( result->getTimeZone().empty() ) {
853 result->setTimeZone(timeUtilConverter.getPropertiesInTZDate(endDateData).timezone);
855 result->setEndTime((long long int) (timeUtilConverter.getTimeInMilliseconds(endDateData)/1000));
857 if (!JSValueIsUndefined(m_context, dueDateData)) {
858 if( result->getTimeZone().empty() ) {
859 result->setTimeZone(timeUtilConverter.getPropertiesInTZDate(dueDateData).timezone);
861 result->setEndTime((long long int) (timeUtilConverter.getTimeInMilliseconds(dueDateData)/1000));
863 if (!JSValueIsUndefined(m_context, completedDateData)) {
864 if( result->getTimeZone().empty() ) {
865 result->setTimeZone(timeUtilConverter.getPropertiesInTZDate(completedDateData).timezone);
867 result->setCompletedDate((long long int) (timeUtilConverter.getTimeInMilliseconds(completedDateData)/1000));
869 if (!JSValueIsUndefined(m_context, progressData)) {
870 result->setProgress(toInt(progressData));
872 LogDebug("timezone: "<<result->getTimeZone());
877 CalendarEventListPtr CalendarConverter::toVectorOfEvents(JSValueRef events)
879 CalendarEventListPtr result(new CalendarEventList());
881 std::vector<CalendarEventPtr> resultVector;
882 JSObjectRef objArg = toJSObjectRef(events);
883 LogDebug("array length "<<JSGetArrayLength(m_context, objArg));
884 for (std::size_t i = 0; i < JSGetArrayLength(m_context, objArg); i++) {
885 JSValueRef element = JSGetArrayElement(m_context, objArg, i);
886 JSObjectRef arg = JSValueToObject(m_context, element, NULL);
887 resultVector.push_back(JSCalendarEvent::getPrivateObject(arg));
890 *result = resultVector;
894 CalendarEventListPtr CalendarConverter::toVectorOfEventsFromProperty(JSValueRef events)
896 CalendarEventListPtr result(new CalendarEventList());
898 std::vector<CalendarEventPtr> resultVector;
899 JSObjectRef objArg = toJSObjectRef(events);
900 LogDebug("array length "<<JSGetArrayLength(m_context, objArg));
901 for (std::size_t i = 0; i < JSGetArrayLength(m_context, objArg); i++) {
902 resultVector.push_back(toEvent(JSGetArrayElement(m_context, objArg, i)));
905 *result = resultVector;
909 EventIdPtr CalendarConverter::toEventId(JSValueRef eventId)
911 EventIdPtr result(new EventId());
912 const ScopedJSStringRef uidStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_EVENT_ID_UID));
913 const ScopedJSStringRef recurrenceIdStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_EVENT_ID_RECURRENCEID));
915 JSObjectRef arg = toJSObjectRef(eventId);
917 JSValueRef uidData = JSObjectGetProperty(m_context, arg, uidStr.get(), NULL);
918 JSValueRef recurrenceIdData = JSObjectGetProperty(m_context, arg, recurrenceIdStr.get(), NULL);
920 if (!JSValueIsUndefined(m_context, uidData)) {
921 result->setUId(toString(uidData));
923 if (!JSValueIsUndefined(m_context, recurrenceIdData)) {
924 result->setRecurrenceId(toString(recurrenceIdData));
930 EventIdListPtr CalendarConverter::toVectorOfEventIds(JSValueRef eventIds)
932 EventIdListPtr result(new EventIdList());
934 std::vector<EventIdPtr> resultVector;
935 JSObjectRef objArg = toJSObjectRef(eventIds);
936 LogDebug("array length "<<JSGetArrayLength(m_context, objArg));
937 for (std::size_t i = 0; i < JSGetArrayLength(m_context, objArg); i++) {
938 JSValueRef element = JSGetArrayElement(m_context, objArg, i);
939 EventIdPtr idPtr = JSCalendarEventId::getPrivateObject(JSValueToObject(m_context, element, NULL));
940 idPtr->setCalendarType(CalendarEvent::EVENT_TYPE);
941 resultVector.push_back(idPtr);
944 *result = resultVector;
948 std::vector<long long int> CalendarConverter::toVectorOfTimeFromTZDate(JSValueRef dates)
950 std::vector<long long int> result;
951 TimeUtilConverter converter(m_context);
953 JSObjectRef objArg = toJSObjectRef(dates);
954 LogDebug("array length "<<JSGetArrayLength(m_context, objArg));
955 for (std::size_t i = 0; i < JSGetArrayLength(m_context, objArg); i++) {
956 JSValueRef element = JSGetArrayElement(m_context, objArg, i);
957 result.push_back((long long int) (converter.getTimeInMilliseconds(element)/1000));
963 std::string CalendarConverter::toTizenValue(CalendarEvent::TaskPriority abstractValue) const
965 switch (abstractValue) {
966 case CalendarEvent::HIGH_PRIORITY:
967 return TIZEN_CALENDAR_PROPERTY_HIGH_PRIORITY;
968 case CalendarEvent::MEDIUM_PRIORITY:
969 return TIZEN_CALENDAR_PROPERTY_MEDIUM_PRIORITY;
970 case CalendarEvent::LOW_PRIORITY:
971 return TIZEN_CALENDAR_PROPERTY_LOW_PRIORITY;
975 return TIZEN_CALENDAR_PROPERTY_LOW_PRIORITY;
978 CalendarEvent::TaskPriority CalendarConverter::toTaskPriority(std::string priority) const
980 if (!priority.compare(TIZEN_CALENDAR_PROPERTY_HIGH_PRIORITY))
981 return CalendarEvent::HIGH_PRIORITY;
982 else if (!priority.compare(TIZEN_CALENDAR_PROPERTY_MEDIUM_PRIORITY))
983 return CalendarEvent::MEDIUM_PRIORITY;
984 else if (!priority.compare(TIZEN_CALENDAR_PROPERTY_LOW_PRIORITY))
985 return CalendarEvent::LOW_PRIORITY;
987 ThrowMsg(ConversionException, "Invalid priority type.");
989 return CalendarEvent::UNDEFINED_PRIORITY;
992 CalendarEvent::CalendarType CalendarConverter::toCalendarType(std::string type) const
994 if (!type.compare(TIZEN_CALENDAR_PROPERTY_TYPE_EVENT))
995 return CalendarEvent::EVENT_TYPE;
996 else if (!type.compare(TIZEN_CALENDAR_PROPERTY_TYPE_TASK))
997 return CalendarEvent::TASK_TYPE;
999 ThrowMsg(ConversionException, "Invalid calendar type.");
1001 return CalendarEvent::UNDEFINED_TYPE;
1004 CalendarEvent::VObjectFormat CalendarConverter::toVObjectFormat(std::string format) const
1006 if (!format.compare(TIZEN_CALENDAR_PROPERTY_VCALENDAR_20_FORMAT))
1007 return CalendarEvent::ICALENDAR_20;
1008 else if (!format.compare(TIZEN_CALENDAR_PROPERTY_VCALENDAR_10_FORMAT))
1009 return CalendarEvent::VCALENDAR_10;
1011 ThrowMsg(ConversionException, "Invalid format type.");
1013 return CalendarEvent::UNDEFINED_FORMAT;