2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 #include <dpl/log/log.h>
19 #include <CommonsJavaScript/Validator.h>
20 #include <CommonsJavaScript/JSUtils.h>
21 #include "JSCalendarEvent.h"
22 #include "JSCalendarTask.h"
23 #include "JSCalendarItemProperties.h"
24 #include "JSCalendarEventId.h"
25 #include "CalendarConverter.h"
26 #include "JSCalendar.h"
27 #include "JSCalendarManager.h"
28 #include "JSCalendarAttendee.h"
29 #include "JSCalendarRecurrenceRule.h"
30 #include "JSCalendarAlarm.h"
31 #include "JSStringArray.h"
32 #include "JSNumberArray.h"
34 #include <Tizen/TimeUtil/TimeUtilConverter.h>
35 #include <API/TimeUtil/DurationProperties.h>
36 #include <Tizen/Tizen/JSSimpleCoordinates.h>
37 #include <Tizen/Contact/ContactConverter.h>
39 using namespace TizenApis::Api::Calendar;
40 using namespace WrtDeviceApis::Commons;
41 using namespace WrtDeviceApis::CommonsJavaScript;
44 const int DEFAULT_EVENT_INTERVAL = 1;
51 CalendarConverter::CalendarConverter(JSContextRef context, CalendarEvent::CalendarType calendarType) : Converter(context)
55 m_calendarType = calendarType;
58 CalendarConverter::~CalendarConverter()
63 JSValueRef CalendarConverter::toJSValueRefEvent(const CalendarEventPtr& arg)
65 return JSUtils::makeObject(m_context, JSCalendarEvent::getClassRef(), arg);
68 JSValueRef CalendarConverter::toJSValueRefTask(const CalendarEventPtr& arg)
70 return JSUtils::makeObject(m_context, JSCalendarTask::getClassRef(), arg);
73 JSValueRef CalendarConverter::toJSValueRefEventArray(const CalendarEventListPtr &arg)
75 return toJSValueRef_(*arg, &CalendarConverter::toJSValueRefEvent, this);
78 JSValueRef CalendarConverter::toJSValueRefTaskArray(const CalendarEventListPtr &arg)
80 return toJSValueRef_(*arg, &CalendarConverter::toJSValueRefTask, this);
83 JSValueRef CalendarConverter::toJSValueRefCalendar(const ICalendarPtr& arg)
85 CalendarPrivObject *priv = new CalendarPrivObject(m_context, arg);
86 return JSObjectMake(m_context, JSCalendar::getClassRef(), priv);
89 JSValueRef CalendarConverter::toJSValueRef(const std::vector<ICalendarPtr> &arg)
91 return toJSValueRef_(arg, &CalendarConverter::toJSValueRefCalendar, this);
94 JSValueRef CalendarConverter::toJSValueRef(const StringArrayPtr &arg)
96 return JSStringArray::createArray(m_context, arg);
99 JSValueRef CalendarConverter::toJSValueRef(const NumberArrayPtr &arg)
101 return JSNumberArray::createArray(m_context, arg);
104 StringArrayPtr CalendarConverter::toStringArray(const JSValueRef &jsValue)
106 if(JSStringArray::isObjectOfClass(m_context, jsValue))
107 return JSStringArray::getStringArray(m_context, jsValue);
109 if(!JSIsArrayValue(m_context, jsValue))
110 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "StringArray is not array.");
112 StringArrayPtr result = StringArrayPtr(new StringArray());
113 JSObjectRef jsObject = toJSObjectRef(jsValue);
114 for (std::size_t i = 0; i < JSGetArrayLength(m_context, jsObject); ++i) {
115 JSValueRef element = JSGetArrayElement(m_context, jsObject, i);
116 result->push_back(toString(element));
121 NumberArrayPtr CalendarConverter::toNumberArray(const JSValueRef &jsValue)
124 if(JSNumberArray::isObjectOfClass(m_context, jsValue))
125 return JSNumberArray::getNumberArray(m_context, jsValue);
127 if(!JSIsArrayValue(m_context, jsValue))
128 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "NumberArray is not array.");
130 TimeUtilConverter timeConverter(m_context);
132 NumberArrayPtr result = NumberArrayPtr(new NumberArray());
133 JSObjectRef jsObject = toJSObjectRef(jsValue);
134 for (std::size_t i = 0; i < JSGetArrayLength(m_context, jsObject); ++i) {
135 JSValueRef element = JSGetArrayElement(m_context, jsObject, i);
136 result->push_back((long long int) (timeConverter.getTimeInMilliseconds(element)/1000));
138 LogInfo("First exception: "<<result->at(0));
142 EventAlarm::EventAlarmType CalendarConverter::toEventAlarmType(std::string alarmMethod)
145 if (!alarmMethod.compare(TIZEN_CALENDAR_PROPERTY_DISPLAY_ALARM))
146 return EventAlarm::SILENT_ALARM;
147 else if (!alarmMethod.compare(TIZEN_CALENDAR_PROPERTY_SOUND_ALARM))
148 return EventAlarm::SOUND_ALARM;
150 ThrowMsg(ConversionException, "Invalid alarm type.");
152 return EventAlarm::UNDEFINED_ALARM_TYPE;
155 std::string CalendarConverter::toTizenValue(EventAlarm::EventAlarmType abstractValue) const
157 switch (abstractValue) {
158 case EventAlarm::SILENT_ALARM:
159 return TIZEN_CALENDAR_PROPERTY_DISPLAY_ALARM;
160 case EventAlarm::SOUND_ALARM:
161 return TIZEN_CALENDAR_PROPERTY_SOUND_ALARM;
165 ThrowMsg(ConversionException, "Invalid alarm type");
168 CalendarEvent::EventStatus CalendarConverter::toEventStatus(std::string tizenValue) const
170 if(!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_TENTATIVE_STATUS))
171 return CalendarEvent::TENTATIVE_STATUS;
172 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_CONFIRMED_STATUS))
173 return CalendarEvent::CONFIRMED_STATUS;
174 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_CANCELLED_STATUS))
175 return CalendarEvent::CANCELLED_STATUS;
176 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_NEEDS_ACTION_STATUS))
177 return CalendarEvent::NEEDS_ACTION_STATUS;
178 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_IN_PROCESS_STATUS))
179 return CalendarEvent::IN_PROCESS_STATUS;
180 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_COMPLETED_STATUS))
181 return CalendarEvent::COMPLETED_STATUS;
183 ThrowMsg(ConversionException, "Invalid status type.");
185 return CalendarEvent::UNDEFINED_STATUS;
188 std::string CalendarConverter::toTizenValue(CalendarEvent::EventStatus abstractValue)
191 switch (abstractValue) {
192 case CalendarEvent::TENTATIVE_STATUS:
193 return TIZEN_CALENDAR_PROPERTY_TENTATIVE_STATUS;
194 case CalendarEvent::CONFIRMED_STATUS:
195 return TIZEN_CALENDAR_PROPERTY_CONFIRMED_STATUS;
196 case CalendarEvent::CANCELLED_STATUS:
197 return TIZEN_CALENDAR_PROPERTY_CANCELLED_STATUS;
198 case CalendarEvent::NEEDS_ACTION_STATUS:
199 return TIZEN_CALENDAR_PROPERTY_NEEDS_ACTION_STATUS;
200 case CalendarEvent::IN_PROCESS_STATUS:
201 return TIZEN_CALENDAR_PROPERTY_IN_PROCESS_STATUS;
202 case CalendarEvent::COMPLETED_STATUS:
203 return TIZEN_CALENDAR_PROPERTY_COMPLETED_STATUS;
206 if (CalendarEvent::TASK_TYPE==m_calendarType) {
207 return TIZEN_CALENDAR_PROPERTY_NEEDS_ACTION_STATUS;
209 return TIZEN_CALENDAR_PROPERTY_CONFIRMED_STATUS;
215 ThrowMsg(ConversionException, "Invalid status");
218 EventRecurrenceRule::EventRecurrence CalendarConverter::toRecurrenceFrequency(
219 std::string tizenValue) const
221 if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_DAILY_RECURRENCE))
222 return EventRecurrenceRule::DAILY_RECURRENCE;
223 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_WEEKLY_RECURRENCE))
224 return EventRecurrenceRule::WEEKLY_RECURRENCE;
225 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_MONTHLY_RECURRENCE))
226 return EventRecurrenceRule::MONTHLY_RECURRENCE;
227 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_YEARLY_RECURRENCE))
228 return EventRecurrenceRule::YEARLY_RECURRENCE;
230 ThrowMsg(ConversionException, "Invalid recurrence frequency type.");
232 return EventRecurrenceRule::UNDEFINED_RECURRENCE;
235 std::string CalendarConverter::toTizenValue(
236 EventRecurrenceRule::EventRecurrence abstractValue) const
238 switch (abstractValue) {
239 case EventRecurrenceRule::DAILY_RECURRENCE:
240 return TIZEN_CALENDAR_PROPERTY_DAILY_RECURRENCE;
241 case EventRecurrenceRule::WEEKLY_RECURRENCE:
242 return TIZEN_CALENDAR_PROPERTY_WEEKLY_RECURRENCE;
243 case EventRecurrenceRule::MONTHLY_RECURRENCE:
244 return TIZEN_CALENDAR_PROPERTY_MONTHLY_RECURRENCE;
245 case EventRecurrenceRule::YEARLY_RECURRENCE:
246 return TIZEN_CALENDAR_PROPERTY_YEARLY_RECURRENCE;
247 case EventRecurrenceRule::NO_RECURRENCE:
254 EventRecurrenceRulePtr CalendarConverter::toEventRecurrenceRule(JSValueRef rrule)
257 EventRecurrenceRulePtr result(new EventRecurrenceRule());
258 const ScopedJSStringRef frequencyStr(JSStringCreateWithUTF8CString(TIZEN_RECURRENCE_RULE_FREQUENCY));
259 const ScopedJSStringRef intervalStr(JSStringCreateWithUTF8CString(TIZEN_RECURRENCE_RULE_INTERVAL));
260 const ScopedJSStringRef untilDateStr(JSStringCreateWithUTF8CString(TIZEN_RECURRENCE_RULE_UNTIL_DATE));
261 const ScopedJSStringRef occurrenceCountStr(JSStringCreateWithUTF8CString(TIZEN_RECURRENCE_RULE_OCCURRENCE_COUNT));
262 //const ScopedJSStringRef daysOfTheMonthStr(JSStringCreateWithUTF8CString(TIZEN_RECURRENCE_RULE_DAYS_OF_THE_MONTH));
263 const ScopedJSStringRef daysOfTheWeekStr(JSStringCreateWithUTF8CString(TIZEN_RECURRENCE_RULE_DAYS_OF_THE_WEEK));
264 //const ScopedJSStringRef daysOfTheYearStr(JSStringCreateWithUTF8CString(TIZEN_RECURRENCE_RULE_DAYS_OF_THE_YEAR));
265 //const ScopedJSStringRef weeksOfTheYearStr(JSStringCreateWithUTF8CString(TIZEN_RECURRENCE_RULE_WEEKS_OF_THE_YEAR));
266 const ScopedJSStringRef setPositionStr(JSStringCreateWithUTF8CString(TIZEN_RECURRENCE_RULE_SET_POSITION));
267 const ScopedJSStringRef exceptionsStr(JSStringCreateWithUTF8CString(TIZEN_RECURRENCE_RULE_EXCEPTIONS));
269 JSObjectRef arg = toJSObjectRef(rrule);
271 JSValueRef frequencyData = JSObjectGetProperty(m_context, arg, frequencyStr.get(), NULL);
272 JSValueRef intervalData = JSObjectGetProperty(m_context, arg, intervalStr.get(), NULL);
273 JSValueRef untilDateData = JSObjectGetProperty(m_context, arg, untilDateStr.get(), NULL);
274 JSValueRef occurrenceCountData = JSObjectGetProperty(m_context, arg, occurrenceCountStr.get(), NULL);
275 //JSValueRef daysOfTheMonthData = JSObjectGetProperty(m_context, arg, daysOfTheMonthStr.get(), NULL);
276 JSValueRef daysOfTheWeekData = JSObjectGetProperty(m_context, arg, daysOfTheWeekStr.get(), NULL);
277 //JSValueRef daysOfTheYearData = JSObjectGetProperty(m_context, arg, daysOfTheYearStr.get(), NULL);
278 //JSValueRef weeksOfTheYearData = JSObjectGetProperty(m_context, arg, weeksOfTheYearStr.get(), NULL);
279 JSValueRef setPositionData = JSObjectGetProperty(m_context, arg, setPositionStr.get(), NULL);
280 JSValueRef exceptionsData = JSObjectGetProperty(m_context, arg, exceptionsStr.get(), NULL);
282 if (!JSValueIsUndefined(m_context, frequencyData)) {
283 result->setFrequency(toRecurrenceFrequency(toString(frequencyData)));
285 if (!JSValueIsUndefined(m_context, intervalData)) {
286 result->setInterval(toInt(intervalData));
288 if (!JSValueIsUndefined(m_context, untilDateData)) {
289 if (!JSValueIsNull(m_context, untilDateData)) {
290 TimeUtilConverter timeUtilConverter(m_context);
291 result->setEndDate((long long int) (timeUtilConverter.getTimeInMilliseconds(untilDateData)/1000));
292 result->setTimeZone(timeUtilConverter.getPropertiesInTZDate(untilDateData).timezone);
294 result->setEndDate(0);
297 if (!JSValueIsUndefined(m_context, occurrenceCountData)) {
298 result->setOccurrenceCount(toLong(occurrenceCountData));
300 /*if (!JSValueIsUndefined(m_context, daysOfTheMonthData)) {
301 result->setDaysOfTheMonth(toVectorOfInts(daysOfTheMonthData));
303 if (!JSValueIsUndefined(m_context, daysOfTheWeekData)) {
304 result->setDaysOfTheWeek(toStringArray(daysOfTheWeekData));
306 /*if (!JSValueIsUndefined(m_context, daysOfTheYearData)) {
307 result->setDaysOfTheYear(toVectorOfInts(daysOfTheYearData));
309 if (!JSValueIsUndefined(m_context, weeksOfTheYearData)) {
310 result->setWeeksOfTheYear(toVectorOfInts(weeksOfTheYearData));
312 if (!JSValueIsUndefined(m_context, setPositionData)) {
313 ThrowMsg(UnsupportedException, "setPositions not supported yet.");
314 //result->setSetPosition(toBool(setPositionData));
316 if (!JSValueIsUndefined(m_context, exceptionsData)) {
317 result->setExceptions(toNumberArray(exceptionsData));
323 CalendarEvent::EventVisibility CalendarConverter::toEventVisibility(std::string tizenValue)
326 if(!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_PUBLIC_VISIBILITY))
327 return CalendarEvent::PUBLIC_VISIBILITY;
328 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_PRIVATE_VISIBILITY))
329 return CalendarEvent::PRIVATE_VISIBILITY;
330 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_CONFIDENTIAL_VISIBILITY))
331 return CalendarEvent::CONFIDENTIAL_VISIBILITY;
333 ThrowMsg(ConversionException, "Invalid visibility type.");
335 return CalendarEvent::UNDEFINED_VISIBILITY;
338 std::string CalendarConverter::toTizenValue(
339 CalendarEvent::EventVisibility abstractValue) const
341 switch (abstractValue) {
342 case CalendarEvent::PUBLIC_VISIBILITY:
343 return TIZEN_CALENDAR_PROPERTY_PUBLIC_VISIBILITY;
344 case CalendarEvent::PRIVATE_VISIBILITY:
345 return TIZEN_CALENDAR_PROPERTY_PRIVATE_VISIBILITY;
346 case CalendarEvent::CONFIDENTIAL_VISIBILITY:
347 return TIZEN_CALENDAR_PROPERTY_CONFIDENTIAL_VISIBILITY;
352 return TIZEN_CALENDAR_PROPERTY_PUBLIC_VISIBILITY;
355 CalendarEvent::EventAvailability CalendarConverter::toEventAvailability(std::string tizenValue)
358 if(!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_BUSY))
359 return CalendarEvent::BUSY_FB;
360 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_BUSY_UNAVAILABLE_FB))
361 return CalendarEvent::BUSY_UNAVAILABLE_FB;
362 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_FREE))
363 return CalendarEvent::FREE_FB;
364 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_BUSY_TENTATIVE))
365 return CalendarEvent::BUSY_TENTATIVE_FB;
367 ThrowMsg(ConversionException, "Invalid availability type.");
369 return CalendarEvent::UNDEFINED_AVAILABILITY;
372 std::string CalendarConverter::toTizenValue(
373 CalendarEvent::EventAvailability abstractValue) const
375 switch (abstractValue) {
376 case CalendarEvent::BUSY_FB:
377 return TIZEN_CALENDAR_PROPERTY_BUSY;
378 case CalendarEvent::BUSY_UNAVAILABLE_FB:
379 return TIZEN_CALENDAR_PROPERTY_BUSY_UNAVAILABLE_FB;
380 case CalendarEvent::FREE_FB:
381 return TIZEN_CALENDAR_PROPERTY_FREE;
382 case CalendarEvent::BUSY_TENTATIVE_FB:
383 return TIZEN_CALENDAR_PROPERTY_BUSY_TENTATIVE;
388 return TIZEN_CALENDAR_PROPERTY_BUSY;
391 EventAttendee::EventAttendeeRole CalendarConverter::toEventAttendeeRole(std::string tizenValue)
394 if(!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_REQ_PARTICIPANT_ROLE))
395 return EventAttendee::REQ_PARTICIPANT_ROLE;
396 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_OPT_PARTICIPANT_ROLE))
397 return EventAttendee::OPT_PARTICIPANT_ROLE;
398 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_NON_PARTICIPANT_ROLE))
399 return EventAttendee::NON_PARTICIPANT_ROLE;
400 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_CHAIR_ROLE))
401 return EventAttendee::CHAIR_ROLE;
403 ThrowMsg(ConversionException, "Invalid attendee role type.");
405 return EventAttendee::UNDEFINED_ATTENDEE_ROLE;
408 std::string CalendarConverter::toTizenValue(
409 EventAttendee::EventAttendeeRole abstractValue) const
411 switch (abstractValue) {
412 case EventAttendee::REQ_PARTICIPANT_ROLE:
413 return TIZEN_CALENDAR_PROPERTY_REQ_PARTICIPANT_ROLE;
414 case EventAttendee::OPT_PARTICIPANT_ROLE:
415 return TIZEN_CALENDAR_PROPERTY_OPT_PARTICIPANT_ROLE;
416 case EventAttendee::NON_PARTICIPANT_ROLE:
417 return TIZEN_CALENDAR_PROPERTY_NON_PARTICIPANT_ROLE;
418 case EventAttendee::CHAIR_ROLE:
419 return TIZEN_CALENDAR_PROPERTY_CHAIR_ROLE;
423 return TIZEN_CALENDAR_PROPERTY_REQ_PARTICIPANT_ROLE;
426 EventAttendee::EventAttendeeStatus CalendarConverter::toEventAttendeeStatus(std::string tizenValue)
429 if(!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_PENDING_STATUS))
430 return EventAttendee::PENDING_AT_STATUS;
431 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_ACCEPTED_STATUS))
432 return EventAttendee::ACCEPTED_AT_STATUS;
433 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_DECLINED_STATUS))
434 return EventAttendee::DECLINED_AT_STATUS;
435 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_TENTATIVE_STATUS))
436 return EventAttendee::TENTATIVE_AT_STATUS;
437 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_DELEGATED_STATUS))
438 return EventAttendee::DELEGATED_AT_STATUS;
439 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_COMPLETED_STATUS))
440 return EventAttendee::COMPLETED_AT_STATUS;
441 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_IN_PROCESS_STATUS))
442 return EventAttendee::IN_PROCESS_AT_STATUS;
444 ThrowMsg(ConversionException, "Invalid attendee status type.");
446 return EventAttendee::UNDEFINED_ATTENDEE_STATUS;
449 std::string CalendarConverter::toTizenValue(
450 EventAttendee::EventAttendeeStatus abstractValue) const
452 switch (abstractValue) {
453 case EventAttendee::PENDING_AT_STATUS:
454 return TIZEN_CALENDAR_PROPERTY_PENDING_STATUS;
455 case EventAttendee::ACCEPTED_AT_STATUS:
456 return TIZEN_CALENDAR_PROPERTY_ACCEPTED_STATUS;
457 case EventAttendee::DECLINED_AT_STATUS:
458 return TIZEN_CALENDAR_PROPERTY_DECLINED_STATUS;
459 case EventAttendee::TENTATIVE_AT_STATUS:
460 return TIZEN_CALENDAR_PROPERTY_TENTATIVE_STATUS;
461 case EventAttendee::DELEGATED_AT_STATUS:
462 return TIZEN_CALENDAR_PROPERTY_DELEGATED_STATUS;
463 case EventAttendee::COMPLETED_AT_STATUS:
464 return TIZEN_CALENDAR_PROPERTY_COMPLETED_STATUS;
465 case EventAttendee::IN_PROCESS_AT_STATUS:
466 return TIZEN_CALENDAR_PROPERTY_IN_PROCESS_STATUS;
470 return TIZEN_CALENDAR_PROPERTY_PENDING_STATUS;
473 EventAttendee::EventAttendeeType CalendarConverter::toEventAttendeeType(std::string tizenValue)
476 if(!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_INDIVIDUAL_TYPE))
477 return EventAttendee::INDIVIDUAL_TYPE;
478 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_GROUP_TYPE))
479 return EventAttendee::GROUP_TYPE;
480 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_RESOURCE_TYPE))
481 return EventAttendee::RESOURCE_TYPE;
482 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_ROOM_TYPE))
483 return EventAttendee::ROOM_TYPE;
484 else if (!tizenValue.compare(TIZEN_CALENDAR_PROPERTY_UNKNOWN_TYPE))
485 return EventAttendee::UNKNOWN_TYPE;
487 ThrowMsg(ConversionException, "Invalid attendee type.");
489 return EventAttendee::INDIVIDUAL_TYPE;
492 std::string CalendarConverter::toTizenValue(
493 EventAttendee::EventAttendeeType abstractValue) const
495 switch (abstractValue) {
496 case EventAttendee::INDIVIDUAL_TYPE:
497 return TIZEN_CALENDAR_PROPERTY_INDIVIDUAL_TYPE;
498 case EventAttendee::GROUP_TYPE:
499 return TIZEN_CALENDAR_PROPERTY_GROUP_TYPE;
500 case EventAttendee::RESOURCE_TYPE:
501 return TIZEN_CALENDAR_PROPERTY_RESOURCE_TYPE;
502 case EventAttendee::ROOM_TYPE:
503 return TIZEN_CALENDAR_PROPERTY_ROOM_TYPE;
504 case EventAttendee::UNKNOWN_TYPE:
505 return TIZEN_CALENDAR_PROPERTY_UNKNOWN_TYPE;
510 return TIZEN_CALENDAR_PROPERTY_INDIVIDUAL_TYPE;
513 JSValueRef CalendarConverter::toFunctionOrNull(const JSValueRef& arg)
515 if (Validator(m_context).isCallback(arg)) {
517 } else if (!JSValueIsNull(m_context,
518 arg) && !JSValueIsUndefined(m_context, arg)) {
519 ThrowMsg(ConversionException, "Not a function nor JS null.");
524 JSValueRef CalendarConverter::toFunction(const JSValueRef& arg)
526 if (Validator(m_context).isCallback(arg)) {
529 ThrowMsg(ConversionException, "Not a function.");
532 StringArrayPtr CalendarConverter::toCategories(JSValueRef categories)
535 StringArrayPtr result(new StringArray());
536 *result = toVectorOfStrings(categories);
540 EventAttendeePtr CalendarConverter::toAttendee(JSValueRef attendee)
543 EventAttendeePtr result(new EventAttendee());
544 const ScopedJSStringRef nameStr(JSStringCreateWithUTF8CString(TIZEN_ATTENDEE_NAME));
545 const ScopedJSStringRef uriStr(JSStringCreateWithUTF8CString(TIZEN_ATTENDEE_URI));
546 const ScopedJSStringRef roleStr(JSStringCreateWithUTF8CString(TIZEN_ATTENDEE_ROLE));
547 const ScopedJSStringRef statusStr(JSStringCreateWithUTF8CString(TIZEN_ATTENDEE_STATUS));
548 const ScopedJSStringRef RSVPStr(JSStringCreateWithUTF8CString(TIZEN_ATTENDEE_RSVP));
549 const ScopedJSStringRef typeStr(JSStringCreateWithUTF8CString(TIZEN_ATTENDEE_TYPE));
550 const ScopedJSStringRef groupStr(JSStringCreateWithUTF8CString(TIZEN_ATTENDEE_GROUP));
551 const ScopedJSStringRef delegatorURIStr(JSStringCreateWithUTF8CString(TIZEN_ATTENDEE_DELEGATORURI));
552 const ScopedJSStringRef delegateURIStr(JSStringCreateWithUTF8CString(TIZEN_ATTENDEE_DELEGATEURI));
553 const ScopedJSStringRef contactRefStr(JSStringCreateWithUTF8CString(TIZEN_ATTENDEE_CONTACT_REF));
555 JSObjectRef arg = toJSObjectRef(attendee);
557 JSValueRef nameData = JSObjectGetProperty(m_context, arg, nameStr.get(), NULL);
558 JSValueRef uriData = JSObjectGetProperty(m_context, arg, uriStr.get(), NULL);
559 JSValueRef roleData = JSObjectGetProperty(m_context, arg, roleStr.get(), NULL);
560 JSValueRef statusData = JSObjectGetProperty(m_context, arg, statusStr.get(), NULL);
561 JSValueRef RSVPData = JSObjectGetProperty(m_context, arg, RSVPStr.get(), NULL);
562 JSValueRef typeData = JSObjectGetProperty(m_context, arg, typeStr.get(), NULL);
563 JSValueRef groupData = JSObjectGetProperty(m_context, arg, groupStr.get(), NULL);
564 JSValueRef delegatorURIData = JSObjectGetProperty(m_context, arg, delegatorURIStr.get(), NULL);
565 JSValueRef delegateURIData = JSObjectGetProperty(m_context, arg, delegateURIStr.get(), NULL);
566 JSValueRef contactRefData = JSObjectGetProperty(m_context, arg, contactRefStr.get(), NULL);
568 if (!JSValueIsUndefined(m_context, nameData)) {
569 result->setName(toString(nameData));
571 if (!JSValueIsUndefined(m_context, uriData)) {
572 result->setURI(toString(uriData));
574 if (!JSValueIsUndefined(m_context, roleData)) {
575 result->setRole(toEventAttendeeRole(toString(roleData)));
577 if (!JSValueIsUndefined(m_context, statusData)) {
578 result->setStatus(toEventAttendeeStatus(toString(statusData)));
580 if (!JSValueIsUndefined(m_context, RSVPData)) {
581 result->setRSVP(toBool(RSVPData));
583 if (!JSValueIsUndefined(m_context, typeData)) {
584 result->setType(toEventAttendeeType(toString(typeData)));
586 if (!JSValueIsUndefined(m_context, groupData)) {
587 result->setGroup(toString(groupData));
589 if (!JSValueIsUndefined(m_context, delegatorURIData)) {
590 result->setDelegatorURI(toString(delegatorURIData));
592 if (!JSValueIsUndefined(m_context, delegateURIData)) {
593 result->setDelegateURI(toString(delegateURIData));
595 if (!JSValueIsUndefined(m_context, contactRefData)) {
596 TizenApis::Tizen1_0::Contact::ContactConverter contactConverter(m_context);
597 result->setContactId(contactConverter.toContactRef(contactRefData)->getContactId());
598 result->setAddressBookId(contactConverter.toContactRef(contactRefData)->getAddressBookId());
604 EventAttendeeListPtr CalendarConverter::toVectorOfAttendeesFromDictionary(JSValueRef attendees)
607 EventAttendeeListPtr result(new EventAttendeeList());
609 std::vector<EventAttendeePtr> resultVector;
610 JSObjectRef objArg = toJSObjectRef(attendees);
611 LogDebug("array length "<<JSGetArrayLength(m_context, objArg));
612 for (std::size_t i = 0; i < JSGetArrayLength(m_context, objArg); i++) {
613 JSValueRef element = JSGetArrayElement(m_context, objArg, i);
614 resultVector.push_back(toAttendee(element));
617 *result = resultVector;
621 EventAttendeeListPtr CalendarConverter::toVectorOfAttendeesFromReference(JSValueRef attendees)
624 EventAttendeeListPtr result(new EventAttendeeList());
626 std::vector<EventAttendeePtr> resultVector;
627 JSObjectRef objArg = toJSObjectRef(attendees);
628 LogDebug("array length "<<JSGetArrayLength(m_context, objArg));
629 for (std::size_t i = 0; i < JSGetArrayLength(m_context, objArg); i++) {
630 JSValueRef element = JSGetArrayElement(m_context, objArg, i);
631 resultVector.push_back(JSCalendarAttendee::getPrivateObject(JSValueToObject(m_context, element, NULL)));
634 *result = resultVector;
638 EventAlarmPtr CalendarConverter::toEventAlarm(JSValueRef alarm)
641 EventAlarmPtr result(new EventAlarm());
642 const ScopedJSStringRef absoluteDateStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_ALARM_ABSOLUTE_DATE));
643 const ScopedJSStringRef beforeStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_ALARM_BEFORE));
644 const ScopedJSStringRef methodStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_ALARM_METHOD));
645 const ScopedJSStringRef descriptionStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_ALARM_DESCRIPTION));
647 JSObjectRef arg = toJSObjectRef(alarm);
649 JSValueRef absoluteDateData = JSObjectGetProperty(m_context, arg, absoluteDateStr.get(), NULL);
650 JSValueRef beforeData = JSObjectGetProperty(m_context, arg, beforeStr.get(), NULL);
651 JSValueRef methodData = JSObjectGetProperty(m_context, arg, methodStr.get(), NULL);
652 JSValueRef descriptionData = JSObjectGetProperty(m_context, arg, descriptionStr.get(), NULL);
654 if (!JSValueIsUndefined(m_context, absoluteDateData)) {
655 TimeUtilConverter timeConverter(m_context);
656 result->setAbsoluteDate((long long int) (timeConverter.getTimeInMilliseconds(absoluteDateData)/1000));
658 if (!JSValueIsUndefined(m_context, beforeData)) {
659 TimeUtilConverter timeConverter(m_context);
660 result->setDuration(timeConverter.getDurationPropertis(beforeData));
662 if (!JSValueIsUndefined(m_context, methodData)) {
663 std::string method = toString(methodData);
664 std::vector<EventAlarm::EventAlarmType> convertedMethods;
665 convertedMethods.push_back(toEventAlarmType(method));
666 result->setMethods(convertedMethods);
668 if (!JSValueIsUndefined(m_context, descriptionData)) {
669 result->setDescription(toString(descriptionData));
675 EventAlarmListPtr CalendarConverter::toVectorOfEventAlarmsFromDictionary(JSValueRef alarms)
678 EventAlarmListPtr result(new EventAlarmList());
680 std::vector<EventAlarmPtr> resultVector;
681 JSObjectRef objArg = toJSObjectRef(alarms);
682 LogDebug("array length "<<JSGetArrayLength(m_context, objArg));
683 for (std::size_t i = 0; i < JSGetArrayLength(m_context, objArg); i++) {
684 JSValueRef element = JSGetArrayElement(m_context, objArg, i);
685 resultVector.push_back(toEventAlarm(element));
688 *result = resultVector;
692 EventAlarmListPtr CalendarConverter::toVectorOfEventAlarmsFromReference(JSValueRef alarms)
695 EventAlarmListPtr result(new EventAlarmList());
697 std::vector<EventAlarmPtr> resultVector;
698 JSObjectRef objArg = toJSObjectRef(alarms);
699 LogDebug("array length "<<JSGetArrayLength(m_context, objArg));
700 for (std::size_t i = 0; i < JSGetArrayLength(m_context, objArg); i++) {
701 JSValueRef element = JSGetArrayElement(m_context, objArg, i);
702 resultVector.push_back(JSCalendarAlarm::getPrivateObject(JSValueToObject(m_context, element, NULL)));
705 *result = resultVector;
709 CalendarEventPtr CalendarConverter::toEvent(const JSValueRef event)
712 CalendarEventPtr result(new CalendarEvent());
713 const ScopedJSStringRef descriptionStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_ITEM_DESCRIPTION));
714 const ScopedJSStringRef summaryStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_ITEM_SUMMARY));
715 const ScopedJSStringRef startTimeStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_ITEM_START_DATE));
716 const ScopedJSStringRef durationStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_ITEM_DURATION));
717 const ScopedJSStringRef locationStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_ITEM_LOCATION));
718 const ScopedJSStringRef categoriesStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_ITEM_CATEGORIES));
719 const ScopedJSStringRef statusStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_ITEM_STATUS));
720 const ScopedJSStringRef alarmsStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_ITEM_ALARMS));
721 const ScopedJSStringRef isAllDayStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_ITEM_IS_ALL_DAY));
722 const ScopedJSStringRef organizerStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_ITEM_ORGANIZER));
723 const ScopedJSStringRef attendeesStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_ITEM_ATTENDEES));
724 const ScopedJSStringRef geolocationStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_ITEM_GEOLOCATION));
725 const ScopedJSStringRef visibilityStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_ITEM_VISIBILITY));
726 const ScopedJSStringRef availabilityStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_EVENT_AVAILABILITY));
727 const ScopedJSStringRef recurrenceRuleStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_EVENT_RECURRENCE_RULE));
728 const ScopedJSStringRef priorityStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_ITEM_PRIORITY));
729 const ScopedJSStringRef endDateStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_EVENT_END_DATE));
730 const ScopedJSStringRef dueDateStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_TASK_DUE_DATE));
731 const ScopedJSStringRef completedDateStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_TASK_COMPLETED_DATE));
732 const ScopedJSStringRef progressStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_TASK_PROGRESS));
734 JSObjectRef arg = toJSObjectRef(event);
736 JSValueRef descriptionData = JSObjectGetProperty(m_context, arg, descriptionStr.get(), NULL);
737 JSValueRef summaryData = JSObjectGetProperty(m_context, arg, summaryStr.get(), NULL);
738 JSValueRef startTimeData = JSObjectGetProperty(m_context, arg, startTimeStr.get(), NULL);
739 JSValueRef durationData = JSObjectGetProperty(m_context, arg, durationStr.get(), NULL);
740 JSValueRef locationData = JSObjectGetProperty(m_context, arg, locationStr.get(), NULL);
741 JSValueRef categoriesData = JSObjectGetProperty(m_context, arg, categoriesStr.get(), NULL);
742 JSValueRef statusData = JSObjectGetProperty(m_context, arg, statusStr.get(), NULL);
743 JSValueRef alarmsData = JSObjectGetProperty(m_context, arg, alarmsStr.get(), NULL);
744 JSValueRef isAllDayData = JSObjectGetProperty(m_context, arg, isAllDayStr.get(), NULL);
745 JSValueRef organizerData = JSObjectGetProperty(m_context, arg, organizerStr.get(), NULL);
746 JSValueRef attendeesData = JSObjectGetProperty(m_context, arg, attendeesStr.get(), NULL);
747 JSValueRef geolocationData = JSObjectGetProperty(m_context, arg, geolocationStr.get(), NULL);
748 JSValueRef visibilityData = JSObjectGetProperty(m_context, arg, visibilityStr.get(), NULL);
749 JSValueRef availabilityData = JSObjectGetProperty(m_context, arg, availabilityStr.get(), NULL);
750 JSValueRef recurrenceRuleData = JSObjectGetProperty(m_context, arg, recurrenceRuleStr.get(), NULL);
751 JSValueRef priorityData = JSObjectGetProperty(m_context, arg, priorityStr.get(), NULL);
752 JSValueRef endDateData = JSObjectGetProperty(m_context, arg, endDateStr.get(), NULL);
753 JSValueRef dueDateData = JSObjectGetProperty(m_context, arg, dueDateStr.get(), NULL);
754 JSValueRef completedDateData = JSObjectGetProperty(m_context, arg, completedDateStr.get(), NULL);
755 JSValueRef progressData = JSObjectGetProperty(m_context, arg, progressStr.get(), NULL);
757 TimeUtilConverter timeUtilConverter(m_context);
759 if (!JSValueIsUndefined(m_context, descriptionData)) {
760 result->setDescription(toString(descriptionData));
763 if (!JSValueIsUndefined(m_context, summaryData)) {
764 result->setSubject(toString(summaryData));
767 //It's important to set startTime before duration to set end date
768 if (!JSValueIsUndefined(m_context, startTimeData)) {
769 result->setStartTime((long long int) (timeUtilConverter.getTimeInMilliseconds(startTimeData)/1000));
770 result->setTimeZone(timeUtilConverter.getPropertiesInTZDate(startTimeData).timezone);
771 LogInfo("start time converted from TZDate: "<<result->getStartTime()<<", time zone: "<<result->getTimeZone());
774 //set default value, current local time.
775 if(m_calendarType == CalendarEvent::EVENT_TYPE) {
776 //result->setStartTime(std::time(NULL));
780 if (!JSValueIsUndefined(m_context, durationData)) {
781 long length = timeUtilConverter.getDurationLength(durationData);
782 int unit = timeUtilConverter.getDurationUnit(durationData);
783 LogInfo("duration length: "<<length<<", unit "<<unit);
785 ThrowMsg(ConversionException, "Wrong duration length.");
787 if( SECONDS_UNIT==unit ) {
788 result->setEndTime(result->getStartTime() + length);
789 } else if ( MINUTES_UNIT==unit ) {
790 result->setEndTime(result->getStartTime() + length*60);
791 } else if ( HOURS_UNIT==unit ) {
792 result->setEndTime(result->getStartTime() + length*60*60);
793 } else if ( DAYS_UNIT==unit ) {
794 result->setEndTime(result->getStartTime() + length*24*60*60);
796 ThrowMsg(ConversionException, "Wrong duration unit.");
799 if (!JSValueIsUndefined(m_context, locationData)) {
800 result->setLocation(toString(locationData));
802 if (!JSValueIsUndefined(m_context, categoriesData)) {
803 StringArrayPtr categories(new StringArray());
804 *categories = toVectorOfStrings(categoriesData);
805 result->setCategories(categories);
808 if (!JSValueIsUndefined(m_context, statusData)) {
809 result->setStatus(toEventStatus(toString(statusData)));
811 result->setStatus(CalendarEvent::CONFIRMED_STATUS);
813 if (!JSValueIsUndefined(m_context, alarmsData)) {
814 EventAlarmListPtr alarms = toVectorOfEventAlarmsFromReference(alarmsData);
815 result->setAlarms(alarms);
817 if (!JSValueIsUndefined(m_context, isAllDayData)) {
818 result->setIsAllDay(toBool(isAllDayData));
820 if (!JSValueIsUndefined(m_context, organizerData)) {
821 result->setOrganizer(toString(organizerData));
823 if (!JSValueIsUndefined(m_context, attendeesData)) {
824 EventAttendeeListPtr attendees = toVectorOfAttendeesFromReference(attendeesData);
825 result->setAttendees(attendees);
827 if (!JSValueIsUndefined(m_context, geolocationData)) {
828 TizenApis::Api::Tizen::SimpleCoordinatesPtr geoLocation =
829 TizenApis::Tizen1_0::Tizen::JSSimpleCoordinates::getSimpleCoordinates(m_context, geolocationData);
830 result->setLatitude(geoLocation->getLatitude());
831 result->setLongitude(geoLocation->getLongitude());
833 if (!JSValueIsUndefined(m_context, visibilityData)) {
834 result->setVisibility(toEventVisibility(toString(visibilityData)));
836 if (!JSValueIsUndefined(m_context, availabilityData)) {
837 result->setAvailability(toEventAvailability(toString(availabilityData)));
839 if (!JSValueIsUndefined(m_context, recurrenceRuleData)) {
840 result->setRecurrenceRule(JSCalendarRecurrenceRule::getPrivateObject(JSValueToObject(m_context, recurrenceRuleData, NULL)));
842 if (!JSValueIsUndefined(m_context, priorityData)) {
843 result->setPriority(toTaskPriority(toString(priorityData)));
845 if (!JSValueIsUndefined(m_context, endDateData)) {
846 if( result->getTimeZone().empty() ) {
847 result->setTimeZone(timeUtilConverter.getPropertiesInTZDate(endDateData).timezone);
849 result->setEndTime((long long int) (timeUtilConverter.getTimeInMilliseconds(endDateData)/1000));
851 if (!JSValueIsUndefined(m_context, dueDateData)) {
852 if( result->getTimeZone().empty() ) {
853 result->setTimeZone(timeUtilConverter.getPropertiesInTZDate(dueDateData).timezone);
855 result->setEndTime((long long int) (timeUtilConverter.getTimeInMilliseconds(dueDateData)/1000));
857 if (!JSValueIsUndefined(m_context, completedDateData)) {
858 if( result->getTimeZone().empty() ) {
859 result->setTimeZone(timeUtilConverter.getPropertiesInTZDate(completedDateData).timezone);
861 result->setCompletedDate((long long int) (timeUtilConverter.getTimeInMilliseconds(completedDateData)/1000));
863 if (!JSValueIsUndefined(m_context, progressData)) {
864 result->setProgress(toInt(progressData));
866 LogDebug("timezone: "<<result->getTimeZone());
871 CalendarEventListPtr CalendarConverter::toVectorOfEvents(JSValueRef events)
874 CalendarEventListPtr result(new CalendarEventList());
876 std::vector<CalendarEventPtr> resultVector;
877 JSObjectRef objArg = toJSObjectRef(events);
878 LogDebug("array length "<<JSGetArrayLength(m_context, objArg));
879 for (std::size_t i = 0; i < JSGetArrayLength(m_context, objArg); i++) {
880 JSValueRef element = JSGetArrayElement(m_context, objArg, i);
881 JSObjectRef arg = JSValueToObject(m_context, element, NULL);
882 resultVector.push_back(JSCalendarEvent::getPrivateObject(arg));
885 *result = resultVector;
889 CalendarEventListPtr CalendarConverter::toVectorOfEventsFromProperty(JSValueRef events)
892 CalendarEventListPtr result(new CalendarEventList());
894 std::vector<CalendarEventPtr> resultVector;
895 JSObjectRef objArg = toJSObjectRef(events);
896 LogDebug("array length "<<JSGetArrayLength(m_context, objArg));
897 for (std::size_t i = 0; i < JSGetArrayLength(m_context, objArg); i++) {
898 resultVector.push_back(toEvent(JSGetArrayElement(m_context, objArg, i)));
901 *result = resultVector;
905 EventIdPtr CalendarConverter::toEventId(JSValueRef eventId)
908 EventIdPtr result(new EventId());
909 const ScopedJSStringRef uidStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_EVENT_ID_UID));
910 const ScopedJSStringRef recurrenceIdStr(JSStringCreateWithUTF8CString(TIZEN_CALENDAR_EVENT_ID_RECURRENCEID));
912 JSObjectRef arg = toJSObjectRef(eventId);
914 JSValueRef uidData = JSObjectGetProperty(m_context, arg, uidStr.get(), NULL);
915 JSValueRef recurrenceIdData = JSObjectGetProperty(m_context, arg, recurrenceIdStr.get(), NULL);
917 if (!JSValueIsUndefined(m_context, uidData)) {
918 result->setUId(toString(uidData));
920 if (!JSValueIsUndefined(m_context, recurrenceIdData)) {
921 result->setRecurrenceId(toString(recurrenceIdData));
927 EventIdListPtr CalendarConverter::toVectorOfEventIds(JSValueRef eventIds)
930 EventIdListPtr result(new EventIdList());
932 std::vector<EventIdPtr> resultVector;
933 JSObjectRef objArg = toJSObjectRef(eventIds);
934 LogDebug("array length "<<JSGetArrayLength(m_context, objArg));
935 for (std::size_t i = 0; i < JSGetArrayLength(m_context, objArg); i++) {
936 JSValueRef element = JSGetArrayElement(m_context, objArg, i);
937 EventIdPtr idPtr = JSCalendarEventId::getPrivateObject(JSValueToObject(m_context, element, NULL));
938 idPtr->setCalendarType(CalendarEvent::EVENT_TYPE);
939 resultVector.push_back(idPtr);
942 *result = resultVector;
946 std::vector<long long int> CalendarConverter::toVectorOfTimeFromTZDate(JSValueRef dates)
949 std::vector<long long int> result;
950 TimeUtilConverter converter(m_context);
952 JSObjectRef objArg = toJSObjectRef(dates);
953 LogDebug("array length "<<JSGetArrayLength(m_context, objArg));
954 for (std::size_t i = 0; i < JSGetArrayLength(m_context, objArg); i++) {
955 JSValueRef element = JSGetArrayElement(m_context, objArg, i);
956 result.push_back((long long int) (converter.getTimeInMilliseconds(element)/1000));
962 std::string CalendarConverter::toTizenValue(Api::Calendar::CalendarEvent::TaskPriority abstractValue) const
964 switch (abstractValue) {
965 case CalendarEvent::HIGH_PRIORITY:
966 return TIZEN_CALENDAR_PROPERTY_HIGH_PRIORITY;
967 case CalendarEvent::MEDIUM_PRIORITY:
968 return TIZEN_CALENDAR_PROPERTY_MEDIUM_PRIORITY;
969 case CalendarEvent::LOW_PRIORITY:
970 return TIZEN_CALENDAR_PROPERTY_LOW_PRIORITY;
974 return TIZEN_CALENDAR_PROPERTY_LOW_PRIORITY;
977 CalendarEvent::TaskPriority CalendarConverter::toTaskPriority(std::string priority) const
979 if (!priority.compare(TIZEN_CALENDAR_PROPERTY_HIGH_PRIORITY))
980 return CalendarEvent::HIGH_PRIORITY;
981 else if (!priority.compare(TIZEN_CALENDAR_PROPERTY_MEDIUM_PRIORITY))
982 return CalendarEvent::MEDIUM_PRIORITY;
983 else if (!priority.compare(TIZEN_CALENDAR_PROPERTY_LOW_PRIORITY))
984 return CalendarEvent::LOW_PRIORITY;
986 ThrowMsg(ConversionException, "Invalid priority type.");
988 return CalendarEvent::UNDEFINED_PRIORITY;
991 CalendarEvent::CalendarType CalendarConverter::toCalendarType(std::string type) const
993 if (!type.compare(TIZEN_CALENDAR_PROPERTY_TYPE_EVENT))
994 return CalendarEvent::EVENT_TYPE;
995 else if (!type.compare(TIZEN_CALENDAR_PROPERTY_TYPE_TASK))
996 return CalendarEvent::TASK_TYPE;
998 ThrowMsg(ConversionException, "Invalid calendar type.");
1000 return CalendarEvent::UNDEFINED_TYPE;
1003 CalendarEvent::VObjectFormat CalendarConverter::toVObjectFormat(std::string format) const
1005 if (!format.compare(TIZEN_CALENDAR_PROPERTY_VCALENDAR_20_FORMAT))
1006 return CalendarEvent::ICALENDAR_20;
1007 else if (!format.compare(TIZEN_CALENDAR_PROPERTY_VCALENDAR_10_FORMAT))
1008 return CalendarEvent::VCALENDAR_10;
1010 ThrowMsg(ConversionException, "Invalid format type.");
1012 return CalendarEvent::UNDEFINED_FORMAT;