Beta merge
authorKisub Song <kisubs.song@samsung.com>
Sat, 18 Feb 2012 14:19:29 +0000 (23:19 +0900)
committerKisub Song <kisubs.song@samsung.com>
Sat, 18 Feb 2012 14:19:29 +0000 (23:19 +0900)
src/platform/Tizen/Calendar/EventWrapper.cpp
src/standards/Tizen/Calendar/CalendarConverter.cpp
src/standards/Tizen/Calendar/JSCalendar.cpp
src/standards/Tizen/Calendar/JSCalendarAlarm.cpp
src/standards/Tizen/Calendar/JSCalendarEvent.cpp
src/standards/Tizen/Calendar/JSCalendarEvent.h
src/standards/Tizen/Calendar/JSCalendarItemProperties.cpp

index 4295af9..ed194a6 100755 (executable)
@@ -786,6 +786,19 @@ void EventWrapper::setAlarmsToPlatformEvent()
                 ThrowMsg(PlatformException, "Can't set alarm type.");
             }
 
+            // Set the display text
+            errorCode = calendar_svc_value_set_str(
+                    value,
+                    CAL_VALUE_TXT_ALARMS_DESCRIPTION,
+                    m_abstractEvent->getAlarmsDescription().at(i).c_str());
+            if (CAL_SUCCESS != errorCode) {
+                if (value) {
+                    calendar_svc_value_free(&value);
+                }
+                LogError("Can't set CAL_VALUE_TXT_ALARMS_DESCRIPTION, error: " << errorCode);
+                ThrowMsg(PlatformException, "Can't set alarm description.");
+            }
+
             list = g_list_append(list, value);
         }
 
@@ -1276,14 +1289,13 @@ void EventWrapper::setCreatedDateToPlatformEvent()
         ThrowMsg(UnknownException, "Null platform pointer.");
     }
 
-//      calendar F/W not supported
-//        time_t time = m_abstractEvent->getCreatedDate();
-//        if (CAL_SUCCESS != calendar_svc_struct_set_time(m_platformTask,
-//                                                        CAL_VALUE_GMT_CREATED_DATE_TIME,
-//                                                        CAL_TZ_FLAG_GMT,
-//                                                        time)) {
-//            ThrowMsg(PlatformException, "Can't set created time.");
-//        }
+        time_t time = m_abstractEvent->getCreatedDate();
+        if (CAL_SUCCESS != calendar_svc_struct_set_time(m_platformEvent,
+                                                        CAL_VALUE_GMT_CREATED_DATE_TIME,
+                                                        CAL_TZ_FLAG_GMT,
+                                                        time)) {
+            ThrowMsg(PlatformException, "Can't set created time.");
+        }
 }
 
 void EventWrapper::setCompletedDateToPlatformEvent()
@@ -1292,14 +1304,13 @@ void EventWrapper::setCompletedDateToPlatformEvent()
         ThrowMsg(UnknownException, "Null platform pointer.");
     }
 
-//      calendar F/W not supported
-//        time_t time = m_abstractEvent->getCompletedDate();
-//        if (CAL_SUCCESS != calendar_svc_struct_set_time(m_platformEvent,
-//                                                        CAL_VALUE_GMT_COMPLETED_DATE_TIME,
-//                                                        CAL_TZ_FLAG_GMT,
-//                                                        time)) {
-//            ThrowMsg(PlatformException, "Can't set task completed time.");
-//        }
+        time_t time = m_abstractEvent->getCompletedDate();
+        if (CAL_SUCCESS != calendar_svc_struct_set_time(m_platformEvent,
+                                                        CAL_VALUE_GMT_COMPLETED_DATE_TIME,
+                                                        CAL_TZ_FLAG_GMT,
+                                                        time)) {
+            ThrowMsg(PlatformException, "Can't set task completed time.");
+        }
 }
 
 void EventWrapper::setProgressToPlatformEvent()
@@ -1308,13 +1319,12 @@ void EventWrapper::setProgressToPlatformEvent()
                ThrowMsg(UnknownException, "Null platform pointer.");
        }
 
-//     int progress = m_abstractEvent->getProgress();
-//  not supported
-//     if (CAL_SUCCESS != calendar_svc_struct_set_int(m_platformEvent,
-//             CAL_VALUE_INT_PROGRESS,
-//             progress)) {
-//             ThrowMsg(PlatformException, "Can't set visibility.");
-//     }
+       int progress = m_abstractEvent->getProgress();
+       if (CAL_SUCCESS != calendar_svc_struct_set_int(m_platformEvent,
+               CAL_VALUE_INT_PROGRESS,
+               progress)) {
+               ThrowMsg(PlatformException, "Can't set visibility.");
+       }
 }
 
 CalendarEventPtr EventWrapper::convertPlatformEventToAbstractEvent()
@@ -1592,6 +1602,13 @@ void EventWrapper::setAlarmsFromPlatformEvent()
             m_abstractEvent->getAlarmsType().push_back(CalendarEvent::NO_ALARM);
             break;
         }
+
+        const char* description = calendar_svc_value_get_str(alarmValue, CAL_VALUE_TXT_ALARMS_DESCRIPTION);
+        if (NULL == description) {
+            LogError("cannot read alarm description");
+            return;
+        }
+        m_abstractEvent->getAlarmsDescription().push_back(description);
     }
 }
 
@@ -2015,11 +2032,9 @@ void EventWrapper::setCreatedDateFromPlatformEvent()
     }
 
     std::time_t createdDate = 0;
-
-//  calendar F/W not supported
-//    time_t createdDate = calendar_svc_struct_get_time(m_platformEvent,
-//                                                  CAL_VALUE_GMT_CREATED_DATE_TIME,
-//                                                  CAL_TZ_FLAG_GMT);
+    createdDate = calendar_svc_struct_get_time(m_platformEvent,
+                                                  CAL_VALUE_GMT_CREATED_DATE_TIME,
+                                                  CAL_TZ_FLAG_GMT);
 
     m_abstractEvent->setCreatedDate(createdDate);
 }
@@ -2031,11 +2046,9 @@ void EventWrapper::setCompletedDateFromPlatformEvent()
     }
 
     std::time_t completedDate = 0;
-
-//  calendar F/W not supported
-//    time_t completedDate = calendar_svc_struct_get_time(m_platformEvent,
-//                                                  CAL_VALUE_GMT_COMPLETED_DATE_TIME,
-//                                                  CAL_TZ_FLAG_GMT);
+    completedDate = calendar_svc_struct_get_time(m_platformEvent,
+                                                  CAL_VALUE_GMT_COMPLETED_DATE_TIME,
+                                                  CAL_TZ_FLAG_GMT);
 
     m_abstractEvent->setCompletedDate(completedDate);
 }
@@ -2047,9 +2060,7 @@ void EventWrapper::setProgressFromPlatformEvent()
     }
 
     int progress = 0;
-
-//    not supported
-//    progress = calendar_svc_struct_get_int(m_platformEvent, CAL_VALUE_INT_PROGRESS);
+    progress = calendar_svc_struct_get_int(m_platformEvent, CAL_VALUE_INT_PROGRESS);
 
     m_abstractEvent->setProgress(progress);
 }
index 8423b86..60901f7 100755 (executable)
@@ -952,6 +952,7 @@ CalendarEventPtr CalendarConverter::toEvent(const JSValueRef event)
         }
         result->setAlarmsType(alarmsType);
         result->setAlarmsTick(alarmsTick);
+        result->setAlarmsDescription(alarmsDescription);
     }
     if (!JSValueIsUndefined(m_context, isAllDayData)) {
         result->setIsAllDay(toBool(isAllDayData));
index a635663..6a6de90 100755 (executable)
@@ -355,8 +355,8 @@ JSValueRef JSCalendar::update(JSContextRef context,
         if (JSValueIsUndefined(context, arguments[0]) || JSValueIsNull(context, arguments[0])) {
             ThrowMsg(ConversionException, "First parameter is undefined or null.");
         } else if (!JSValueIsObjectOfClass(context, arguments[0], JSCalendarItem::getClassRef()) &&
-        JSValueIsObjectOfClass(context, arguments[0], JSCalendarEvent::getClassRef()) &&
-        JSValueIsObjectOfClass(context, arguments[0], JSCalendarTask::getClassRef())) {
+        !JSValueIsObjectOfClass(context, arguments[0], JSCalendarEvent::getClassRef()) &&
+        !JSValueIsObjectOfClass(context, arguments[0], JSCalendarTask::getClassRef())) {
             ThrowMsg(ConversionException, "Wrong parameter type.");
         }
 
@@ -841,10 +841,9 @@ JSValueRef JSCalendar::find(JSContextRef context,
         cbm = JSCallbackManager::createObject(globalContext);
 
         if ((!validator.isCallback(arguments[0])) ||
-            (argumentCount >= 2 && (!validator.isCallback(arguments[1]))) ||
+            (argumentCount >= 2 && (!validator.isCallback(arguments[1]) && !validator.isNullOrUndefined(arguments[1]))) ||
             (argumentCount >= 3 && (!JSValueIsObject(context, arguments[2]) && !validator.isNullOrUndefined(arguments[2]))) ||
-            (argumentCount >= 4 && (!JSValueIsObject(context, arguments[3]) && !validator.isNullOrUndefined(arguments[3]))) ||
-            (argumentCount >= 5 && (!JSValueIsObject(context, arguments[4]) && !validator.isNullOrUndefined(arguments[4])))) {
+            (argumentCount >= 4 && (!JSValueIsObject(context, arguments[3]) && !validator.isNullOrUndefined(arguments[3])))) {
             ThrowMsg(ConversionException, "Wrong parameter type.");
         }
 
@@ -1225,10 +1224,12 @@ JSValueRef JSCalendar::removeChangeListener(JSContextRef context,
         }
 
         long watchId = -1;
-            CalendarConverterFactory::ConverterType converter = CalendarConverterFactory::getConverter(context);
-            if (JSValueIsNumber(context, arguments[0])) {
-                watchId = converter->toLong(arguments[0]);
-            }
+        CalendarConverterFactory::ConverterType converter = CalendarConverterFactory::getConverter(context);
+        if (JSValueIsNumber(context, arguments[0])) {
+            watchId = converter->toLong(arguments[0]);
+        } else {
+            ThrowMsg(ConversionException, "Wrong watchId type.");
+        }
 
         LogDebug("Make sync operation");
 
index 1108d10..bffc974 100755 (executable)
@@ -161,7 +161,7 @@ JSObjectRef JSCalendarAlarm::constructor(JSContextRef context,
                     ThrowMsg(ConversionException, "Third parameter conversion failed.");
                 }
             }
-        } else { // if (JSValueIsObjectOfClass(context, arguments[0], JSTimeDuration::getClassRef())){ // before case
+        } else if (JSValueIsObjectOfClass(context, arguments[0], JSTimeDuration::getClassRef())){ // before case
             alarm->setDuration(timeConverter.getDurationPropertis(arguments[0]));
             if (JSValueIsString(context, arguments[1])) {
                 std::string method = converter.toString(arguments[1]);
@@ -178,9 +178,9 @@ JSObjectRef JSCalendarAlarm::constructor(JSContextRef context,
                     ThrowMsg(ConversionException, "Thrid parameter conversion failed.");
                 }
             }
-        }/* else { // Workaround until plugin link issue is resolved.
+        } else {
             ThrowMsg(ConversionException, "First parameter conversion failed.");
-        }*/
+        }
 
         return createJSCalendarAlarm(globalContext, alarm);
     }
index 0cfb60c..e436c6f 100755 (executable)
@@ -23,8 +23,6 @@
 #include <CommonsJavaScript/Validator.h>
 #include <CommonsJavaScript/JSCallbackManager.h>
 #include <API/Calendar/EventId.h>
-#include <API/Calendar/ICalendar.h>
-#include <API/Calendar/CalendarFactory.h>
 #include "JSCalendarEvent.h"
 #include "JSCalendarItemProperties.h"
 #include "CalendarConverter.h"
@@ -101,6 +99,8 @@ JSStaticFunction JSCalendarEvent::m_function[] = {
 
 JSClassRef JSCalendarEvent::m_jsClassRef = JSClassCreate(JSCalendarEvent::getClassInfo());
 
+ICalendarPtr JSCalendarEvent::m_calendar = CalendarFactory::getInstance().createCalendarObject();
+
 void JSCalendarEvent::initialize(JSContextRef context,
         JSObjectRef object)
 {
@@ -111,9 +111,16 @@ void JSCalendarEvent::initialize(JSContextRef context,
         CalendarEventPtr privateData(new CalendarEvent());
         priv = new CalendarEventPrivObject(context, privateData);
         JSObjectSetPrivate(object, static_cast<void*>(priv));
-        LogDebug("new event is created");
+        LogDebug("New event is created.");
+    } else {
+        LogDebug("Private object already exists.");
+    }
+
+    if (!m_calendar) {
+        LogDebug("Calendar object does not exist!");
     } else {
-        LogDebug("private object already exists");
+        m_calendar->setType(CalendarEvent::EVENT_TYPE);
+        LogDebug("Calendar object type is set.");
     }
 }
 
@@ -156,14 +163,11 @@ JSObjectRef JSCalendarEvent::constructor(JSContextRef context,
             eventStr = converter.toString(arguments[0]);
             format = converter.toVObjectFormat(converter.toString(arguments[1]));
 
-            ICalendarPtr calendar = CalendarFactory::getInstance().createCalendarObject();
-            calendar->setType(CalendarEvent::EVENT_TYPE);
-
             IEventCreateEventFromStringPtr dplEvent(new IEventCreateEventFromString());
             dplEvent->setEventString(eventStr);
             dplEvent->setFormat(format);
             dplEvent->setForSynchronousCall();
-            calendar->createEventFromString(dplEvent);
+            m_calendar->createEventFromString(dplEvent);
 
             // Process the returned object.
             if (dplEvent->getResult()) {
@@ -303,23 +307,24 @@ JSValueRef JSCalendarEvent::expandRecurrence(JSContextRef context,
         std::time_t endDate = INT_MAX; // about 60 years in 4 bytes system.
         Converter converter(context);
         TimeUtilConverter timeConverter(context);
-        if (argumentCount>0 ) {
+        if (JSValueIsObjectOfClass(context, arguments[0], JSTZDate::getClassRef())) {
             startDate = timeConverter.toTZDateTimeT(arguments[0]);
+        } else {
+            ThrowMsg(ConversionException, "Wrong first parameter type.");
         }
-        if (argumentCount>1 ) {
+        if (JSValueIsObjectOfClass(context, arguments[1], JSTZDate::getClassRef())) {
             endDate = timeConverter.toDateTimeT(arguments[1]);
+        } else {
+            ThrowMsg(ConversionException, "Wrong second parameter type.");
         }
 
-        ICalendarPtr calendar = CalendarFactory::getInstance().createCalendarObject();
-        calendar->setType(event->getCalendarType());
-
         IEventExpandEventRecurrencePtr dplEvent(new IEventExpandEventRecurrence());
         dplEvent->setPrivateData(DPL::StaticPointerCast<IEventPrivateData>(cbm));
         dplEvent->setForAsynchronousCall(&CalendarResponseDispatcher::getInstance());
         dplEvent->setEvent(event);
         dplEvent->setStartDate(startDate);
         dplEvent->setEndDate(endDate);
-        calendar->expandEventRecurrence(dplEvent);
+        m_calendar->expandEventRecurrence(dplEvent);
 
         return JSValueMakeNull(context);
     }
index 7072519..b8b1d18 100755 (executable)
@@ -20,6 +20,8 @@
 
 #include <JavaScriptCore/JavaScript.h>
 #include <API/Calendar/CalendarEvent.h>
+#include <API/Calendar/ICalendar.h>
+#include <API/Calendar/CalendarFactory.h>
 #include <CommonsJavaScript/PrivateObject.h>
 
 namespace TizenApis {
@@ -76,6 +78,11 @@ class JSCalendarEvent
 
     static JSClassRef m_jsClassRef;
 
+       /**
+        * The calendar object to be used for asynchronous platform function invocation.
+        */
+       static TizenApis::Api::Calendar::ICalendarPtr m_calendar;
+
     /**
      * The callback invoked when an object is first created.
      */
index bc3553a..cc7959a 100755 (executable)
@@ -750,6 +750,7 @@ bool JSCalendarItemProperties::setPropertyAlarms(JSContextRef context,
         }
         event->setAlarmsType(alarmsType);
         event->setAlarmsTick(alarmsTick);
+        event->setAlarmsDescription(alarmsDescription);
         return true;
     }
     Catch(Exception)
@@ -1265,7 +1266,7 @@ JSValueRef JSCalendarItemProperties::getPropertyCompletedDate(JSContextRef conte
         }
         if (task->getEndTime() != 0) {
             // Use the global context saved in the event struct.
-            return JSTZDate::createJSObject(privateObject->getContext(), task->getEndTime(), task->getTimeZone());
+            return JSTZDate::createJSObject(privateObject->getContext(), task->getCompletedDate(), task->getTimeZone());
         } else {
             return JSValueMakeUndefined(context);
         }
@@ -1300,7 +1301,7 @@ bool JSCalendarItemProperties::setPropertyCompletedDate(JSContextRef context,
         TimeUtilConverter converter(context);
         std::time_t completedDate = converter.toTZDateTimeT(value);
 
-        task->setEndTime(completedDate);
+        task->setCompletedDate(completedDate);
 
         if( task->getTimeZone().empty() ) {
             std::string timeZone = converter.getPropertiesInTZDate(value).timezone;