edffa6f56aff02c03463856928e801a082a3be39
[framework/web/wrt-plugins-tizen.git] / src / Calendar / JSCalendarTask.h
1 //
2 // Tizen Web Device API
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 //
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
8 //
9 // http://www.apache.org/licenses/LICENSE-2.0
10 //
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.
16 //
17
18
19 #ifndef _JS_CALENDAR_TASK_H_
20 #define _JS_CALENDAR_TASK_H_
21
22 #include <JavaScriptCore/JavaScript.h>
23 #include "CalendarEvent.h"
24 #include <CommonsJavaScript/PrivateObject.h>
25
26 namespace DeviceAPI {
27 namespace Calendar {
28
29 #define TIZEN_INTERFACE_CALENDAR_TASK "CalendarTask"
30
31 #define TIZEN_CALENDAR_TASK_ID "id"
32 #define TIZEN_CALENDAR_TASK_LAST_MODIFICATION_DATE "lastModificationDate"
33
34 typedef WrtDeviceApis::CommonsJavaScript::PrivateObject<CalendarEventPtr,
35         WrtDeviceApis::CommonsJavaScript::NoOwnership> CalendarTaskPrivObject;
36
37 class JSCalendarTask
38 {
39   public:
40
41     static const JSClassDefinition* getClassInfo();
42
43     static const JSClassRef getClassRef();
44
45     static CalendarEventPtr getPrivateObject(JSObjectRef object);
46
47     static void setPrivateObject(const CalendarEventPtr &event,
48             JSContextRef ctx,
49             const JSObjectRef object);
50
51     static bool validate(JSContextRef ctx,
52             const JSObjectRef object,
53             JSValueRef* exception);
54
55         static JSObjectRef createJSCalendarTask(JSContextRef context, CalendarEventPtr task);
56
57   private:
58     /**
59      * This member variable contains the values which has to be passed when
60      * the this class is embedded into JS Engine.
61      */
62     static JSClassDefinition m_classInfo;
63
64     /**
65      * This structure describes a statically declared function property.
66      */
67     static JSStaticFunction m_function[];
68
69     /**
70      * This member variable contains the initialization values for the
71      * properties of this class. The values are given according to the
72      * data structure JSPropertySpec.
73      */
74     static JSStaticValue m_property[];
75
76     static JSClassRef m_jsClassRef;
77
78         /**
79          * The calendar object to be used for asynchronous platform function invocation.
80          */
81         static ICalendarPtr m_calendar;
82
83     /**
84      * The callback invoked when an object is first created.
85      */
86     static void initialize(JSContextRef context,
87             JSObjectRef object);
88
89     /**
90      * The callback invoked when an object is finalized.
91      */
92     static void finalize(JSObjectRef object);
93
94         /**
95          * Constructor for the CalendarTask interface.
96          */
97         static JSObjectRef constructor(JSContextRef context,
98     JSObjectRef constructor,
99     size_t argumentCount,
100     const JSValueRef arguments[],
101     JSValueRef* exception);
102
103     /**
104      * Getters and setters for properties
105      */
106     static JSValueRef getPropertyId(JSContextRef context,
107             JSObjectRef object,
108             JSStringRef propertyName,
109             JSValueRef* exception);
110 };
111
112 }
113 }
114
115 #endif /* _JS_CALENDAR_TASK_H_ */