611e5b3091f4256b879a1ba4622f11ecee1df544
[profile/ivi/wrt-plugins-tizen.git] / src / standards / Tizen / Calendar / CalendarConverter.h
1 /*
2  * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16
17
18 #ifndef _JS_TIZEN_CALENDAR_CONVERTER_H_
19 #define _JS_TIZEN_CALENDAR_CONVERTER_H_
20
21 #include <vector>
22 #include <string>
23 #include <API/Calendar/EventFilter.h>
24 #include <API/Calendar/ICalendar.h>
25 #include <API/Calendar/EventAttendee.h>
26 #include <API/Calendar/EventAlarm.h>
27 #include <API/Calendar/CalendarItemGeo.h>
28 #include <CommonsJavaScript/Converter.h>
29 #include <CommonsJavaScript/ScopedJSStringRef.h>
30
31 namespace TizenApis {
32 namespace Tizen1_0 {
33 namespace Calendar {
34
35 class CalendarConverter : public WrtDeviceApis::CommonsJavaScript::Converter
36 {
37   public:
38     using Converter::toJSValueRef;
39   public:
40     explicit CalendarConverter(JSContextRef context, TizenApis::Api::Calendar::CalendarEvent::CalendarType calendarType=TizenApis::Api::Calendar::CalendarEvent::EVENT_TYPE);
41     virtual ~CalendarConverter();
42     TizenApis::Api::Calendar::EventFilterPtr toEventFilter(const JSValueRef &filters);
43     TizenApis::Api::Calendar::CalendarEventPtr toEvent(const JSValueRef event);
44     TizenApis::Api::Calendar::CalendarEventListPtr toVectorOfEvents(JSValueRef events);
45     TizenApis::Api::Calendar::CalendarEventListPtr toVectorOfEventsFromProperty(JSValueRef events);
46     TizenApis::Api::Calendar::CategoryListPtr toCategories(JSValueRef categories);
47     TizenApis::Api::Calendar::EventAttendeePtr toAttendee(JSValueRef attendee);
48     TizenApis::Api::Calendar::EventAttendeeListPtr toVectorOfAttendees(JSValueRef attendees);
49
50     TizenApis::Api::Calendar::CalendarEvent::EventAlarmType toEventAlarmType(std::string tizenValue) const;
51     TizenApis::Api::Calendar::CalendarEvent::EventStatus toEventStatus(std::string tizenValue) const;
52     TizenApis::Api::Calendar::EventRecurrenceRule::EventRecurrence toRecurrenceFrequency(std::string tizenValue) const;
53     TizenApis::Api::Calendar::EventRecurrenceRulePtr toEventRecurrenceRule(JSValueRef rrule);
54
55     TizenApis::Api::Calendar::CalendarEvent::EventVisibility toEventVisibility(std::string tizenValue) const;
56     TizenApis::Api::Calendar::CalendarEvent::EventAvailability toEventAvailability(std::string tizenValue) const;
57     TizenApis::Api::Calendar::EventAttendee::EventAttendeeRole toEventAttendeeRole(std::string tizenValue) const;
58     TizenApis::Api::Calendar::EventAttendee::EventAttendeeStatus toEventAttendeeStatus(std::string tizenValue) const;
59     TizenApis::Api::Calendar::EventAttendee::EventAttendeeType toEventAttendeeType(std::string tizenValue) const;
60
61     std::string toTizenValue(TizenApis::Api::Calendar::CalendarEvent::EventAlarmType abstractValue) const;
62     std::string toTizenValue(TizenApis::Api::Calendar::CalendarEvent::EventStatus abstractValue) const;
63     std::string toTizenValue(TizenApis::Api::Calendar::EventRecurrenceRule::EventRecurrence abstractValue) const;
64     std::string toTizenValue(TizenApis::Api::Calendar::CalendarEvent::EventVisibility abstractValue) const;
65     std::string toTizenValue(TizenApis::Api::Calendar::CalendarEvent::EventAvailability abstractValue) const;
66     std::string toTizenValue(TizenApis::Api::Calendar::EventAttendee::EventAttendeeRole abstractValue) const;
67     std::string toTizenValue(TizenApis::Api::Calendar::EventAttendee::EventAttendeeStatus abstractValue) const;
68     std::string toTizenValue(TizenApis::Api::Calendar::EventAttendee::EventAttendeeType abstractValue) const;
69     std::string toTizenValue(TizenApis::Api::Calendar::CalendarEvent::TaskPriority abstractValue) const;
70
71     JSValueRef toJSValueRefItem(const TizenApis::Api::Calendar::CalendarEventPtr& arg);
72     JSValueRef toJSValueRef(const TizenApis::Api::Calendar::CalendarEventListPtr &arg);
73     JSValueRef toJSValueRefCalendar(const TizenApis::Api::Calendar::ICalendarPtr& arg);
74     JSValueRef toJSValueRef(const std::vector<TizenApis::Api::Calendar::ICalendarPtr> &arg);
75         JSValueRef toJSValueRefItemProperties(const TizenApis::Api::Calendar::CalendarEventPtr& arg);
76         JSValueRef toJSValueRef(const TizenApis::Api::Calendar::EventIdPtr& arg);
77         JSValueRef toJSValueRef(const TizenApis::Api::Calendar::CalendarItemGeoPtr& arg);
78
79     TizenApis::Api::Calendar::EventAlarmPtr toEventAlarm(JSValueRef alarm);
80     TizenApis::Api::Calendar::EventAlarmListPtr toVectorOfEventAlarms(JSValueRef alarms);
81     TizenApis::Api::Calendar::EventIdPtr toEventId(JSValueRef eventId);
82     TizenApis::Api::Calendar::EventIdListPtr toVectorOfEventIds(JSValueRef eventIds);
83     TizenApis::Api::Calendar::CalendarItemGeoPtr toGeolocation(JSValueRef geoInfo);
84     std::vector<time_t> toVectorOfTimeTFromTZDate(JSValueRef dates);
85     TizenApis::Api::Calendar::CalendarEvent::TaskPriority toTaskPriority(std::string priority) const;
86         TizenApis::Api::Calendar::CalendarEvent::CalendarType toCalendarType(std::string type) const;
87         TizenApis::Api::Calendar::CalendarEvent::VObjectFormat toVObjectFormat(std::string type) const;
88
89     /**
90      * @throw InvalidArgumentException If not a callback nor JS null.
91      */
92     JSValueRef toFunctionOrNull(const JSValueRef& arg);
93
94     /**
95      * @throw ConversionException If JS null.
96      * @throw InvalidArgumentException If not a callback nor JS null.
97      */
98     JSValueRef toFunction(const JSValueRef& arg);
99
100   private:
101     void toEventFilterConvertId(const TizenApis::Api::Calendar::EventFilterPtr &result,
102             const JSValueRef &filters);
103     void toEventFilterConvertSummary(const TizenApis::Api::Calendar::EventFilterPtr &result,
104             const JSValueRef &filters);
105     void toEventFilterConvertDescription(const TizenApis::Api::Calendar::EventFilterPtr &result,
106             const JSValueRef &filters);
107     void toEventFilterConvertLocation(const TizenApis::Api::Calendar::EventFilterPtr &result,
108             const JSValueRef &filters);
109     void toEventFilterConvertCategory(const TizenApis::Api::Calendar::EventFilterPtr &result,
110             const JSValueRef &filters);
111     void toEventFilterConvertStatus(const TizenApis::Api::Calendar::EventFilterPtr &result,
112             const JSValueRef &filters);
113     void toEventFilterConvertStartTime(const TizenApis::Api::Calendar::EventFilterPtr &result,
114             const JSValueRef &filters);
115
116     static std::vector<std::string> m_allowedAttributes;
117     TizenApis::Api::Calendar::CalendarEvent::CalendarType m_calendarType;
118 };
119
120 typedef WrtDeviceApis::CommonsJavaScript::ConverterFactory<CalendarConverter> CalendarConverterFactory;
121
122 }
123 }
124 }
125
126 #endif /* _JS_TIZEN_CALENDAR_CONVERTER_H_ */