+ LogDebug("get object :" << object);
+
+ StatusNotification *priv = static_cast<StatusNotification*>(JSObjectGetPrivate(object));
+ LogDebug("statusNotification :" << priv);
+ if (!priv) {
+ throw TypeMismatchException("StatusNotification's private object is NULL.");
+ }
+
+ //type
+ JSValueRef type = JSUtil::getProperty(context, object, NOTIFICATION_TYPE);
+ if ((JSUtil::JSValueToString(context, type)).compare(NOTIFICATION_TYPE_VALUE) )
+ {
+ throw TypeMismatchException("StatusNotification's type is mismatched");
+ }
+
+ //Title
+ JSValueRef title = JSUtil::getProperty(context, object, NOTIFICATION_TITLE);
+ priv->setTitle( JSUtil::JSValueToString(context, title));
+
+ //Content
+ JSValueRef contents = JSUtil::getProperty(context, object, NOTIFICATION_CONTENT);
+ priv->setContent( JSUtil::JSValueToString(context, contents));
+
+ // iconPath
+ JSValueRef iconPath = JSUtil::getProperty(context, object, STATUS_NOTIFICATION_ICON_PATH);
+ if (!JSUtil::JSValueToString(context, iconPath).empty())
+ {
+ DeviceAPI::Filesystem::IPathPtr icon = DeviceAPI::Filesystem::Utils::fromVirtualPath(context, JSUtil::JSValueToString(context, iconPath));
+ priv->setIconPath(icon->getFullPath());
+ }
+ else
+ {
+ priv->setIconPath("");
+ }
+
+ // subIconPath
+ JSValueRef subIconPath = JSUtil::getProperty(context, object, STATUS_NOTIFICATION_SUB_ICON_PATH);
+ if (!JSUtil::JSValueToString(context, subIconPath).empty())
+ {
+ DeviceAPI::Filesystem::IPathPtr subIcon = DeviceAPI::Filesystem::Utils::fromVirtualPath(context, JSUtil::JSValueToString(context, subIconPath));
+ priv->setSubIconPath(subIcon->getFullPath());
+ }
+ else
+ {
+ priv->setSubIconPath("");
+ }
+
+ // number
+ JSValueRef number = JSUtil::getProperty(context, object, STATUS_NOTIFICATION_NUMBER);
+ priv->setNumber(JSUtil::JSValueToLong(context, number));
+
+ // detailInfo
+ JSValueRef detailInfo = JSUtil::getProperty(context, object, STATUS_NOTIFICATION_DETAIL_INFO);
+ std::vector<NotificationDetailInfo*> detailInfos;
+ if (JSIsArrayValue(context, detailInfo))
+ {
+ JSObjectRef arrayobj = JSUtil::JSValueToObject(context, detailInfo);
+ for(std::size_t i = 0; i < JSGetArrayLength(context, arrayobj); ++i)
+ {
+ JSValueRef element = JSGetArrayElement(context, arrayobj, i);
+ JSObjectRef object = JSUtil::JSValueToObject(context, element);
+ if (object)
+ {
+ NotificationDetailInfo* detailinfo = static_cast<NotificationDetailInfo*>(JSObjectGetPrivate(object));
+ detailInfos.push_back(detailinfo);
+ }
+ }
+ }
+ priv->setDetailInfos(detailInfos);
+
+ // backgroundImagePath
+ JSValueRef backgroundImagePath = JSUtil::getProperty(context, object, STATUS_NOTIFICATION_BACKGROUND_IMAGE_PATH);
+ if (!JSUtil::JSValueToString(context, backgroundImagePath).empty())
+ {
+ DeviceAPI::Filesystem::IPathPtr backgroundImage = DeviceAPI::Filesystem::Utils::fromVirtualPath(context, JSUtil::JSValueToString(context, backgroundImagePath));
+ priv->setBackground(backgroundImage->getFullPath());
+ }
+ else
+ {
+ priv->setBackground("");
+ }
+
+ // thumbnails
+ JSValueRef thumbnails = JSUtil::getProperty(context, object, STATUS_NOTIFICATION_THUMBNAILS);
+
+ std::vector<std::string> thumbnailPaths;
+ if( JSIsArrayValue(context, thumbnails)){
+ JSObjectRef arrayobj = JSUtil::JSValueToObject(context, thumbnails);
+ for (std::size_t i = 0; i < JSGetArrayLength(context, arrayobj); ++i) {
+ JSValueRef element = JSGetArrayElement(context, arrayobj, i);
+ DeviceAPI::Filesystem::IPathPtr thumbnailPath =
+ DeviceAPI::Filesystem::Utils::fromVirtualPath(context, JSUtil::JSValueToString(context, element));
+ LogInfo("thumbnail Path = " << thumbnailPath->getFullPath());
+ thumbnailPaths.push_back(thumbnailPath->getFullPath());
+ }
+ }
+ priv->setThumbnails(thumbnailPaths);
+
+ // soundPath
+ JSValueRef soundPath = JSUtil::getProperty(context, object, STATUS_NOTIFICATION_SOUND_PATH);
+ if (!JSUtil::JSValueToString(context, soundPath).empty())
+ {
+ DeviceAPI::Filesystem::IPathPtr sound = DeviceAPI::Filesystem::Utils::fromVirtualPath(context, JSUtil::JSValueToString(context, soundPath));
+ priv->setSoundPath(sound->getFullPath());
+ }
+ else
+ {
+ priv->setSoundPath("");
+ }
+
+ // vibration
+ JSValueRef vibration = JSUtil::getProperty(context, object, STATUS_NOTIFICATION_VIBRATION);
+ priv->setDefaultVibration(JSUtil::JSValueToBoolean(context, vibration));
+
+ // appControl
+ JSValueRef appControl = JSUtil::getProperty(context, object, STATUS_NOTIFICATION_APP_CONTROL);
+ priv->setApplicationControl(DeviceAPI::Application::JSApplicationControl::getApplicationControl(context, JSUtil::JSValueToObject(context,appControl)));
+
+ // appId
+ JSValueRef appId = JSUtil::getProperty(context, object, STATUS_NOTIFICATION_APP_ID);
+ priv->setApplicationId(JSUtil::JSValueToString(context, appId));
+
+#if 0
+ // progressType
+ JSValueRef progressType = JSUtil::getProperty(context, object, STATUS_NOTIFICATION_PROGRESS_TYPE);
+ std::string strProgressType = JSUtil::JSValueToString(context, progressType);
+ LogInfo("Progress Type : " << strProgressType);
+
+ NotificationProgressType progType = NOTI_PROGRESS_TYPE_NONE;
+ if( strProgressType.compare(TIZEN_NOTIFICATION_PROGRESS_TYPE_PERCENTAGE) == 0)
+ progType = NOTI_PROGRESS_TYPE_PERCENTAGE;
+ else if( strProgressType.compare(TIZEN_NOTIFICATION_PROGRESS_TYPE_BYTE) == 0)
+ progType = NOTI_PROGRESS_TYPE_SIZE;
+ else
+ throw InvalidValuesException("Invalid Progress Type.");
+ priv->setProgressType(progType);
+
+ // progressValue
+ JSValueRef progressValue = JSUtil::getProperty(context, object, STATUS_NOTIFICATION_PROGRESS_VALUE);
+ LogInfo(" Progress Value in Private Object = " << JSUtil::JSValueToULong(context, progressValue));
+ if ( progType == NOTI_PROGRESS_TYPE_PERCENTAGE)
+ {
+ if ( 100 < JSUtil::JSValueToULong(context, progressValue) )
+ throw InvalidValuesException("The percentage progress value must be between 0 and 100");
+ priv->setProgressValue((double)JSUtil::JSValueToULong(context, progressValue)/(double)100);
+ }
+ else
+ {
+ priv->setProgressValue((double)JSUtil::JSValueToULong(context, progressValue));
+ }
+ #endif
+ return priv;