merge wrt-plugins-tizen_0.2.0-12
[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 toVectorOfAttendeesFromDictionary(JSValueRef attendees);
49     TizenApis::Api::Calendar::EventAttendeeListPtr toVectorOfAttendeesFromReference(JSValueRef attendees);
50
51     TizenApis::Api::Calendar::CalendarEvent::EventAlarmType toEventAlarmType(std::string tizenValue) const;
52     TizenApis::Api::Calendar::CalendarEvent::EventStatus toEventStatus(std::string tizenValue) const;
53     TizenApis::Api::Calendar::EventRecurrenceRule::EventRecurrence toRecurrenceFrequency(std::string tizenValue) const;
54     TizenApis::Api::Calendar::EventRecurrenceRulePtr toEventRecurrenceRule(JSValueRef rrule);
55
56     TizenApis::Api::Calendar::CalendarEvent::EventVisibility toEventVisibility(std::string tizenValue) const;
57     TizenApis::Api::Calendar::CalendarEvent::EventAvailability toEventAvailability(std::string tizenValue) const;
58     TizenApis::Api::Calendar::EventAttendee::EventAttendeeRole toEventAttendeeRole(std::string tizenValue) const;
59     TizenApis::Api::Calendar::EventAttendee::EventAttendeeStatus toEventAttendeeStatus(std::string tizenValue) const;
60     TizenApis::Api::Calendar::EventAttendee::EventAttendeeType toEventAttendeeType(std::string tizenValue) const;
61
62     std::string toTizenValue(TizenApis::Api::Calendar::CalendarEvent::EventAlarmType abstractValue) const;
63     std::string toTizenValue(TizenApis::Api::Calendar::CalendarEvent::EventStatus abstractValue) const;
64     std::string toTizenValue(TizenApis::Api::Calendar::EventRecurrenceRule::EventRecurrence abstractValue) const;
65     std::string toTizenValue(TizenApis::Api::Calendar::CalendarEvent::EventVisibility abstractValue) const;
66     std::string toTizenValue(TizenApis::Api::Calendar::CalendarEvent::EventAvailability abstractValue) const;
67     std::string toTizenValue(TizenApis::Api::Calendar::EventAttendee::EventAttendeeRole abstractValue) const;
68     std::string toTizenValue(TizenApis::Api::Calendar::EventAttendee::EventAttendeeStatus abstractValue) const;
69     std::string toTizenValue(TizenApis::Api::Calendar::EventAttendee::EventAttendeeType abstractValue) const;
70     std::string toTizenValue(TizenApis::Api::Calendar::CalendarEvent::TaskPriority abstractValue) const;
71
72     JSValueRef toJSValueRefItem(const TizenApis::Api::Calendar::CalendarEventPtr& arg);
73     JSValueRef toJSValueRefEvent(const TizenApis::Api::Calendar::CalendarEventPtr& arg);
74     JSValueRef toJSValueRefTask(const TizenApis::Api::Calendar::CalendarEventPtr& arg);
75     JSValueRef toJSValueRefItemArray(const TizenApis::Api::Calendar::CalendarEventListPtr &arg);
76     JSValueRef toJSValueRefEventArray(const TizenApis::Api::Calendar::CalendarEventListPtr &arg);
77     JSValueRef toJSValueRefTaskArray(const TizenApis::Api::Calendar::CalendarEventListPtr &arg);
78     JSValueRef toJSValueRefCalendar(const TizenApis::Api::Calendar::ICalendarPtr& arg);
79     JSValueRef toJSValueRef(const std::vector<TizenApis::Api::Calendar::ICalendarPtr> &arg);
80
81     TizenApis::Api::Calendar::EventAlarmPtr toEventAlarm(JSValueRef alarm);
82     TizenApis::Api::Calendar::EventAlarmListPtr toVectorOfEventAlarmsFromDictionary(JSValueRef alarms);
83     TizenApis::Api::Calendar::EventAlarmListPtr toVectorOfEventAlarmsFromReference(JSValueRef alarms);
84     TizenApis::Api::Calendar::EventIdPtr toEventId(JSValueRef eventId);
85     TizenApis::Api::Calendar::EventIdListPtr toVectorOfEventIds(JSValueRef eventIds);
86     TizenApis::Api::Calendar::CalendarItemGeoPtr toGeolocation(JSValueRef geoInfo);
87     std::vector<time_t> toVectorOfTimeTFromTZDate(JSValueRef dates);
88     TizenApis::Api::Calendar::CalendarEvent::TaskPriority toTaskPriority(std::string priority) const;
89         TizenApis::Api::Calendar::CalendarEvent::CalendarType toCalendarType(std::string type) const;
90         TizenApis::Api::Calendar::CalendarEvent::VObjectFormat toVObjectFormat(std::string type) const;
91
92     /**
93      * @throw InvalidArgumentException If not a callback nor JS null.
94      */
95     JSValueRef toFunctionOrNull(const JSValueRef& arg);
96
97     /**
98      * @throw ConversionException If JS null.
99      * @throw InvalidArgumentException If not a callback nor JS null.
100      */
101     JSValueRef toFunction(const JSValueRef& arg);
102
103   private:
104     void toEventFilterConvertId(const TizenApis::Api::Calendar::EventFilterPtr &result,
105             const JSValueRef &filters);
106     void toEventFilterConvertSummary(const TizenApis::Api::Calendar::EventFilterPtr &result,
107             const JSValueRef &filters);
108     void toEventFilterConvertDescription(const TizenApis::Api::Calendar::EventFilterPtr &result,
109             const JSValueRef &filters);
110     void toEventFilterConvertLocation(const TizenApis::Api::Calendar::EventFilterPtr &result,
111             const JSValueRef &filters);
112     void toEventFilterConvertCategory(const TizenApis::Api::Calendar::EventFilterPtr &result,
113             const JSValueRef &filters);
114     void toEventFilterConvertStatus(const TizenApis::Api::Calendar::EventFilterPtr &result,
115             const JSValueRef &filters);
116     void toEventFilterConvertStartTime(const TizenApis::Api::Calendar::EventFilterPtr &result,
117             const JSValueRef &filters);
118
119     static std::vector<std::string> m_allowedAttributes;
120     TizenApis::Api::Calendar::CalendarEvent::CalendarType m_calendarType;
121 };
122
123 typedef WrtDeviceApis::CommonsJavaScript::ConverterFactory<CalendarConverter> CalendarConverterFactory;
124
125 }
126 }
127 }
128
129 #endif /* _JS_TIZEN_CALENDAR_CONVERTER_H_ */