wrt-plugins-tizen_0.4.23
[framework/web/wrt-plugins-tizen.git] / src / Calendar / CalendarEvent.cpp
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 #include <Commons/Exception.h>
19 #include "CalendarEvent.h"
20 #include <Logger.h>
21
22 namespace DeviceAPI {
23 namespace Calendar {
24
25 CalendarEvent::CalendarEvent():
26     m_id(UNDEFINED_ITEM_ID),
27     m_parentId(UNDEFINED_ITEM_ID),
28     m_calendarId(UNDEFINED_CALENDAR_ID),
29     m_startTime(UNDEFINED_TIME),
30     m_endTime(UNDEFINED_TIME),
31     m_recurrence(new EventRecurrenceRule()),
32     m_status(UNDEFINED_STATUS),
33     m_alarms(new EventAlarmList()),
34     m_categories(new StringArray()),
35     m_categoriesJSRef(NULL),
36     m_isAllDay(false),
37     m_lastModifiedDate(UNDEFINED_TIME),
38     m_visibility(PUBLIC_VISIBILITY),
39     m_availability(BUSY_FB),
40     m_uid(UNDEFINED_ID),
41     m_recurrenceId(UNDEFINED_TIME),
42     m_attendees(new EventAttendeeList()),
43     m_isDetached(false),
44     m_geolocation(new DeviceAPI::Tizen::SimpleCoordinates(UNDEFINED_GEO, UNDEFINED_GEO)),
45     m_timeZone(DEFAULT_TIMEZONE),
46     m_priority(LOW_PRIORITY),
47     m_createdDate(UNDEFINED_TIME),
48     m_completedDate(UNDEFINED_TIME),
49     m_progress(0),
50     m_calendarType(EVENT_TYPE),
51     m_context(NULL)
52 {
53 }
54
55 CalendarEvent::CalendarEvent(const CalendarEvent &original)
56 {
57     LoggerD("Copy constructor called.");
58
59     m_id = original.getId();
60     m_parentId = original.getParentId();
61     m_calendarId = original.getCalendarId();
62     m_description = original.getDescription();
63     m_subject = original.getSubject();
64     m_startTime = original.getStartTime();
65     m_endTime = original.getEndTime();
66     m_location = original.getLocation();
67
68     EventRecurrenceRulePtr recurrenceRulePtr( new EventRecurrenceRule() );
69     m_recurrence = recurrenceRulePtr;
70     m_recurrence->setFrequency(original.getRecurrenceRule()->getFrequency());
71     m_recurrence->setInterval(original.getRecurrenceRule()->getInterval());
72     m_recurrence->setEndDate(original.getRecurrenceRule()->getEndDate());
73     m_recurrence->setOccurrenceCount(original.getRecurrenceRule()->getOccurrenceCount());
74     m_recurrence->setDaysOfTheMonth(original.getRecurrenceRule()->getDaysOfTheMonth());
75     m_recurrence->setDaysOfTheWeek(original.getRecurrenceRule()->getDaysOfTheWeek());
76         m_recurrence->setDaysOfTheWeekJSRef(NULL);
77     m_recurrence->setDaysOfTheYear(original.getRecurrenceRule()->getDaysOfTheYear());
78     m_recurrence->setWeeksOfTheYear(original.getRecurrenceRule()->getWeeksOfTheYear());
79     m_recurrence->setSetPositions(original.getRecurrenceRule()->getSetPositions());
80     m_recurrence->setSetPositionsJSRef(NULL);
81     m_recurrence->setExceptions(original.getRecurrenceRule()->getExceptions());
82     m_recurrence->setExceptionsJSRef(NULL);
83     m_recurrence->setTimeZone(original.getRecurrenceRule()->getTimeZone());
84
85     m_status = original.getStatus();
86
87     LoggerD("Copying alarms...");
88     EventAlarmListPtr alarmsPtr( new EventAlarmList() );
89     m_alarms = alarmsPtr;
90     for( unsigned int i=0; i<original.getAlarms()->size(); i++) {
91         EventAlarmPtr alarmPtr( new EventAlarm() );
92         alarmPtr->setAbsoluteDate(original.getAlarms()->at(i)->getAbsoluteDate());
93         alarmPtr->setDuration(original.getAlarms()->at(i)->getDuration());
94         alarmPtr->setMethod(original.getAlarms()->at(i)->getMethod());
95         alarmPtr->setTimeZone(original.getAlarms()->at(i)->getTimeZone());
96         alarmPtr->setDescription(original.getAlarms()->at(i)->getDescription());
97         m_alarms->push_back(alarmPtr);
98     }
99
100     StringArrayPtr categoriesPtr( new StringArray() );
101     m_categories = categoriesPtr;
102     *m_categories = *(original.getCategories());
103         m_categoriesJSRef = NULL;
104
105     m_isAllDay = original.getIsAllDay();
106     m_organizer = original.getOrganizer();
107     m_lastModifiedDate = original.getLastModifiedDate();
108     m_visibility = original.getVisibility();
109     m_availability = original.getAvailability();
110     m_uid = original.getUId();
111     m_recurrenceId = original.getRecurrenceId();
112
113     LoggerD("Copying attendees...");
114     EventAttendeeListPtr attendeesPtr( new EventAttendeeList() );
115     m_attendees = attendeesPtr;
116     for( unsigned int i=0; i<original.getAttendees()->size(); i++) {
117         EventAttendeePtr attendeePtr( new EventAttendee() );
118         attendeePtr->setName(original.getAttendees()->at(i)->getName());
119         attendeePtr->setURI(original.getAttendees()->at(i)->getURI());
120         attendeePtr->setRole(original.getAttendees()->at(i)->getRole());
121         attendeePtr->setStatus(original.getAttendees()->at(i)->getStatus());
122         attendeePtr->setRSVP(original.getAttendees()->at(i)->getRSVP());
123         attendeePtr->setType(original.getAttendees()->at(i)->getType());
124         attendeePtr->setGroup(original.getAttendees()->at(i)->getGroup());
125         attendeePtr->setDelegatorURI(original.getAttendees()->at(i)->getDelegatorURI());
126         attendeePtr->setDelegateURI(original.getAttendees()->at(i)->getDelegateURI());
127         attendeePtr->setAddressBookId(original.getAttendees()->at(i)->getAddressBookId());
128         attendeePtr->setContactId(original.getAttendees()->at(i)->getContactId());
129         m_attendees->push_back(attendeePtr);
130     }
131
132     m_isDetached = original.getIsDetached();
133
134     DeviceAPI::Tizen::SimpleCoordinatesPtr geolocationPtr( new DeviceAPI::Tizen::SimpleCoordinates(original.getGeolocation()->getLatitude(), original.getGeolocation()->getLongitude()));
135     m_geolocation = geolocationPtr;
136
137     m_timeZone = original.getTimeZone();
138     m_priority = original.getPriority();
139     m_createdDate = original.getCreatedDate();
140     m_completedDate = original.getCompletedDate();
141     m_progress = original.getProgress();
142     m_calendarType = original.getCalendarType();
143
144     LoggerD("Copying done.");
145 }
146
147 CalendarEvent::~CalendarEvent()
148 {
149         if(m_categoriesJSRef) {
150                 LoggerD("Unprotect JS categories.");
151                 JSValueUnprotect(m_context, m_categoriesJSRef);
152         }
153 }
154
155 int CalendarEvent::getId() const
156 {
157     return m_id;
158 }
159
160 void CalendarEvent::setId(int value)
161 {
162     m_id = value;
163
164     // Set the uid also.
165     std::stringstream ss;
166     ss<<value;
167     m_uid = ss.str();
168     LoggerD("m_id: "<<m_id<<", m_uid: "<<m_uid);
169 }
170
171 void CalendarEvent::resetId()
172 {
173     m_id = UNDEFINED_ITEM_ID;
174     m_uid = UNDEFINED_ID;
175 }
176
177 bool CalendarEvent::getIdIsSet() const
178 {
179     return !(m_id==UNDEFINED_ITEM_ID);
180 }
181
182 int CalendarEvent::getParentId() const
183 {
184     return m_parentId;
185 }
186
187 void CalendarEvent::setParentId(int value)
188 {
189     m_parentId = value;
190 }
191
192 int CalendarEvent::getCalendarId() const
193 {
194     return m_calendarId;
195 }
196
197 void CalendarEvent::setCalendarId(int value)
198 {
199     m_calendarId = value;
200 }
201
202 std::string CalendarEvent::getDescription() const
203 {
204     return m_description;
205 }
206
207 void CalendarEvent::setDescription(const std::string &value)
208 {
209     m_description = value;
210 }
211
212 std::string CalendarEvent::getSubject() const
213 {
214     return m_subject;
215 }
216
217 void CalendarEvent::setSubject(const std::string &value)
218 {
219     m_subject = value;
220 }
221
222 long long int CalendarEvent::getStartTime() const
223 {
224     return m_startTime;
225 }
226
227 void CalendarEvent::setStartTime(long long int value)
228 {
229     m_startTime = value;
230 }
231
232 long long int CalendarEvent::getEndTime() const
233 {
234     return m_endTime;
235 }
236
237 void CalendarEvent::setEndTime(long long int value)
238 {
239     m_endTime = value;
240 }
241
242 std::string CalendarEvent::getLocation() const
243 {
244     return m_location;
245 }
246
247 void CalendarEvent::setLocation(const std::string &value)
248 {
249     m_location = value;
250 }
251
252 EventRecurrenceRulePtr CalendarEvent::getRecurrenceRule() const
253 {
254     return m_recurrence;
255 }
256
257 void CalendarEvent::setRecurrenceRule(EventRecurrenceRulePtr value)
258 {
259     m_recurrence = value;
260 }
261
262 CalendarEvent::EventStatus CalendarEvent::getStatus() const
263 {
264     return m_status == UNDEFINED_STATUS ? TENTATIVE_STATUS : m_status;
265 }
266
267 void CalendarEvent::setStatus(EventStatus value)
268 {
269     m_status = value;
270 }
271
272 EventAlarmListPtr CalendarEvent::getAlarms() const
273 {
274     return m_alarms;
275 }
276 void CalendarEvent::setAlarms(const EventAlarmListPtr value)
277 {
278     m_alarms = value;
279 }
280
281 StringArrayPtr CalendarEvent::getCategories() const
282 {
283     return m_categories;
284 }
285 void CalendarEvent::setCategories(const StringArrayPtr value)
286 {
287     m_categories = value;
288 }
289
290 JSObjectRef CalendarEvent::getCategoriesJSRef() const
291 {
292     return m_categoriesJSRef;
293 }
294 void CalendarEvent::setCategoriesJSRef(const JSObjectRef value)
295 {
296     m_categoriesJSRef = value;
297 }
298
299 void CalendarEvent::display() const
300 {
301     LoggerD("m_id " << m_id);
302     LoggerD("m_parentId " << m_parentId);
303     LoggerD("m_calendarId " << m_calendarId);
304     LoggerD("m_calendarType " << m_calendarType);
305     LoggerD("m_description " << m_description);
306     LoggerD("m_subject " << m_subject);
307
308     LoggerD("m_startTime " << m_startTime);
309
310     LoggerD("m_endTime " << m_endTime);
311     LoggerD("m_location " << m_location);
312     LoggerD("m_recurrence " << m_recurrence);
313     LoggerD("m_status " << m_status);
314     LoggerD("m_isAllDay " << m_isAllDay);
315     LoggerD("m_organizer " << m_organizer);
316     LoggerD("m_lastModifiedDate " << m_lastModifiedDate);
317     LoggerD("m_visibility " << m_visibility);
318     LoggerD("m_availability " << m_availability);
319
320     if(m_recurrence->getFrequency()!=EventRecurrenceRule::NO_RECURRENCE) {
321         LoggerD("recurrence frequency " << m_recurrence->getFrequency());
322         LoggerD("recurrence interval " << m_recurrence->getInterval());
323         LoggerD("recurrence recurrenceCount " << m_recurrence->getOccurrenceCount());
324         LoggerD("recurrence endDate " << m_recurrence->getEndDate());
325     }
326 }
327
328 bool CalendarEvent::validate() const
329 {
330     LoggerI("Nothing to validate.");
331     return true;
332 }
333
334 bool CalendarEvent::getIsAllDay() const
335 {
336     return m_isAllDay;
337 }
338
339 void CalendarEvent::setIsAllDay(bool value)
340 {
341     m_isAllDay = value;
342 }
343
344 std::string CalendarEvent::getOrganizer() const
345 {
346     return m_organizer;
347 }
348
349 void CalendarEvent::setOrganizer(const std::string &value)
350 {
351     m_organizer = value;
352 }
353
354 long long int CalendarEvent::getLastModifiedDate() const
355 {
356     return m_lastModifiedDate;
357 }
358
359 void CalendarEvent::setLastModifiedDate(long long int value)
360 {
361     m_lastModifiedDate = value;
362 }
363
364 CalendarEvent::EventVisibility CalendarEvent::getVisibility() const
365 {
366     return m_visibility == UNDEFINED_VISIBILITY ? PUBLIC_VISIBILITY : m_visibility;
367 }
368
369 void CalendarEvent::setVisibility(EventVisibility value)
370 {
371     m_visibility = value;
372 }
373
374 CalendarEvent::EventAvailability CalendarEvent::getAvailability() const
375 {
376     return m_availability == UNDEFINED_AVAILABILITY ? BUSY_FB : m_availability;
377 }
378
379 void CalendarEvent::setAvailability(EventAvailability value)
380 {
381     m_availability = value;
382 }
383
384 std::string CalendarEvent::getUId() const
385 {
386     return m_uid;
387 }
388
389 void CalendarEvent::setUId(const std::string &value)
390 {
391     m_uid = value;
392 }
393
394 long long int CalendarEvent::getRecurrenceId() const
395 {
396     return m_recurrenceId;
397 }
398
399 void CalendarEvent::setRecurrenceId(long long int value)
400 {
401     m_recurrenceId = value;
402 }
403
404 EventAttendeeListPtr CalendarEvent::getAttendees() const
405 {
406     return m_attendees;
407 }
408
409 void CalendarEvent::setAttendees(const EventAttendeeListPtr value)
410 {
411     m_attendees = value;
412 }
413
414 bool CalendarEvent::getIsDetached() const
415 {
416     return m_isDetached;
417 }
418
419 void CalendarEvent::setIsDetached(bool value)
420 {
421     m_isDetached = value;
422 }
423
424 DeviceAPI::Tizen::SimpleCoordinatesPtr CalendarEvent::getGeolocation() const
425 {
426     return m_geolocation;
427 }
428
429 void CalendarEvent::setGeolocation(DeviceAPI::Tizen::SimpleCoordinatesPtr value)
430 {
431     m_geolocation = value;
432 }
433
434 std::string CalendarEvent::getTimeZone() const
435 {
436     return m_timeZone;
437 }
438
439 void CalendarEvent::setTimeZone(std::string value)
440 {
441     m_timeZone = value;
442 }
443
444 CalendarEvent::TaskPriority CalendarEvent::getPriority() const
445 {
446     return m_priority;
447 }
448
449 void CalendarEvent::setPriority(TaskPriority value)
450 {
451     m_priority = value;
452 }
453
454 long long int CalendarEvent::getCreatedDate() const
455 {
456     return m_createdDate;
457 }
458
459 void CalendarEvent::setCreatedDate(long long int value)
460 {
461     m_createdDate = value;
462 }
463
464 long long int CalendarEvent::getCompletedDate() const
465 {
466     return m_completedDate;
467 }
468
469 void CalendarEvent::setCompletedDate(long long int value)
470 {
471     m_completedDate = value;
472 }
473
474 int CalendarEvent::getProgress() const
475 {
476     return m_progress;
477 }
478
479 void CalendarEvent::setProgress(int value)
480 {
481     m_progress = value;
482 }
483
484 CalendarEvent::CalendarType CalendarEvent::getCalendarType() const
485 {
486     return m_calendarType;
487 }
488
489 void CalendarEvent::setCalendarType(CalendarType type)
490 {
491     m_calendarType = type;
492 }
493
494 JSContextRef CalendarEvent::getContext() const
495 {
496         return m_context;
497 }
498
499 void CalendarEvent::setContext(const JSContextRef contextRef)
500 {
501         m_context = contextRef;
502 }
503
504 }
505 }