Name: wrt-plugins-tizen
Summary: JavaScript plugins for WebRuntime
-Version: 0.4.34
+Version: 0.4.35
Release: 0
Group: Development/Libraries
License: Apache License, Version 2.0
CalendarEventPtr CalendarConverter::toItem(const JSValueRef value, bool updateMode)
{
- CalendarEventPtr result;
+ CalendarEventPtr result(NULL);
JSObjectRef arg = toJSObjectRef(value);
if(updateMode) {
LoggerD("Update mode.");
- CalendarEventPtr resultPtr(new CalendarEvent());
- result = resultPtr;
-
- // Set the unparsed attributes.
- CalendarEventPtr oldItem = JSCalendarEvent::getPrivateObject(arg);
- result->setId(oldItem->getId());
- result->setParentId(oldItem->getParentId());
- result->setCalendarId(oldItem->getCalendarId());
- result->setRecurrenceId(oldItem->getRecurrenceId());
- result->setCalendarType(oldItem->getCalendarType());
+ result = JSCalendarEvent::getPrivateObject(arg);
} else {
LoggerD("Constructor mode.");
CalendarEventPtr resultPtr(new CalendarEvent());
if (!JSValueIsUndefined(m_context, descriptionData)) {
result->setDescription(toString(descriptionData));
}
-
if (!JSValueIsUndefined(m_context, summaryData)) {
result->setSubject(toString(summaryData));
}
result->getDuration()->length = length;
result->getDuration()->unit = unit;
}
-
if (!JSValueIsUndefined(m_context, locationData)) {
result->setLocation(toString(locationData));
}
EventAttendeeListPtr attendees = toVectorOfAttendeesFromReference(attendeesData);
result->setAttendees(attendees);
}
-
if (!JSValueIsUndefined(m_context, geolocationData) && !JSValueIsNull(m_context, geolocationData)) {
Try {
DeviceAPI::Tizen::SimpleCoordinatesPtr geoLocation = DeviceAPI::Tizen::JSSimpleCoordinates::getSimpleCoordinates(m_context, geolocationData);
result->setAvailability(toEventAvailability(toString(availabilityData)));
}
if (!JSValueIsUndefined(m_context, recurrenceRuleData) && !JSValueIsNull(m_context, recurrenceRuleData)) {
- result->setRecurrenceRule(JSCalendarRecurrenceRule::getPrivateObject(JSValueToObject(m_context, recurrenceRuleData, NULL)));
+ result->setRecurrenceRule(toEventRecurrenceRule(recurrenceRuleData));
}
if (!JSValueIsUndefined(m_context, priorityData)) {
result->setPriority(toTaskPriority(toString(priorityData)));
return result;
}
-CalendarEventListPtr CalendarConverter::toVectorOfItemsFromDictionary(JSValueRef items)
+CalendarEventListPtr CalendarConverter::toVectorOfItemsFromDictionary(JSValueRef items, bool updateMode)
{
if(!JSIsArrayValue(m_context, items)) {
LoggerW("JSValue is not an array.");
JSObjectRef objArg = toJSObjectRef(items);
LoggerD("array length "<<JSGetArrayLength(m_context, objArg));
for (std::size_t i = 0; i < JSGetArrayLength(m_context, objArg); i++) {
- result->push_back(toItem(JSGetArrayElement(m_context, objArg, i), true));
+ result->push_back(toItem(JSGetArrayElement(m_context, objArg, i), updateMode));
}
return result;
explicit CalendarConverter(JSContextRef context, CalendarEvent::CalendarType calendarType=CalendarEvent::EVENT_TYPE);
virtual ~CalendarConverter();
- CalendarEventPtr toItem(const JSValueRef value, bool updateMode=false);
+ CalendarEventPtr toItem(const JSValueRef value, bool updateMode);
CalendarEventListPtr toVectorOfItems(JSValueRef items);
- CalendarEventListPtr toVectorOfItemsFromDictionary(JSValueRef items);
+ CalendarEventListPtr toVectorOfItemsFromDictionary(JSValueRef items, bool updateMode);
StringArrayPtr toCategories(JSValueRef categories);
EventAttendeePtr toAttendee(JSValueRef attendee);
EventAttendeeListPtr toVectorOfAttendeesFromDictionary(JSValueRef attendees);
cal.type = CALENDAR_TIME_LOCALTIME;
cal.time.date = CalendarUtility::LLIToCalTime(m_abstractEvent->getTimeZone().c_str(), time).time.date;
} else {
- cal.type = CALENDAR_TIME_UTIME;
- cal.time.utime = time;
+ cal.type = CALENDAR_TIME_UTIME;
+ cal.time.utime = time;
}
if(CalendarEvent::TASK_TYPE==getType()) {
ThrowMsg(ConversionException, "Wrong calendar type.");
}
- JSObjectRef arg = JSValueToObject(context, arguments[0], exception);
- CalendarEventPtr event = JSCalendarEvent::getPrivateObject(arg);
- if (!event) {
+ CalendarConverter converter(context);
+
+ CalendarEventPtr item = converter.toItem(arguments[0], true);
+ if (!item) {
ThrowMsg(ConversionException, "Parameter conversion failed.");
}
IEventAddEventPtr dplEvent(new IEventAddEvent());
- dplEvent->setEvent(event);
+ dplEvent->setEvent(item);
dplEvent->setForSynchronousCall();
calendar->addEvent(dplEvent);
if (!JSIsArrayValue(context, arguments[0])) {
ThrowMsg(ConversionException, "Wrong first parameter type.");
}
- events = converter.toVectorOfItems(arguments[0]);
+ events = converter.toVectorOfItemsFromDictionary(arguments[0], true);
if (!events) {
ThrowMsg(ConversionException, "First parameter conversion failed.");
}
ThrowMsg(ConversionException, "Wrong parameter type.");
}
CalendarEventListPtr items;
- items = converter.toVectorOfItemsFromDictionary(arguments[0]);
+ items = converter.toVectorOfItemsFromDictionary(arguments[0], true);
if (!items) {
ThrowMsg(ConversionException, "Third parameter conversion failed.");
}
CalendarEventPtr result(new CalendarEvent());
event = result;
} else if (JSValueIsObject(context, arguments[0])) {
- event = converter.toItem(arguments[0]);
+ event = converter.toItem(arguments[0], false);
if (!event) {
ThrowMsg(ConversionException, "Parameter conversion failed.");
}
{
CalendarEventPtr event = getPrivateObject(object);
TimeUtilConverter converter(context);
- long length = converter.getDurationLength(value);
+ long long length = converter.getDurationLength(value);
int unit = converter.getDurationUnit(value);
if (length < 0) {
DeviceAPI::Common::JSWebAPIErrorFactory::postException(context, exception, DeviceAPI::Common::JSWebAPIErrorFactory::INVALID_VALUES_ERROR);
CalendarEventPtr result(new CalendarEvent());
task = result;
} else if (JSValueIsObject(context, arguments[0])) {
- task = converter.toItem(arguments[0]);
+ task = converter.toItem(arguments[0], false);
if (!task) {
ThrowMsg(ConversionException, "Parameter conversion failed.");
}
#include <dpl/singleton.h>
#include <AsyncCallbackManager.h>
+#include <dpl/mutex.h>
+#include "SqlDataControlConsumer.h"
namespace DeviceAPI {
namespace DataControl {
virtual ~DataControlAsyncCallbackManager()
{
+ cleanupSQLUserData();
}
+
bool isSQLDataControlGC() { return m_sqlDataControlGC;}
bool isMappedDataControlGC() { return m_mappedDataControlGC;}
void setSQLDataControlGC(bool gc) { m_sqlDataControlGC = gc;}
void setMappedDataControlGC(bool gc) { m_mappedDataControlGC = gc;}
+ bool checkReqIdUnique(std::string key)
+ {
+ if (m_callbackSQLUserDataMap.find(key) == m_callbackSQLUserDataMap.end())
+ {
+ return true;
+ }
+ return false;
+ }
+
+ void addSQLUserData(std::string key, void* data)
+ {
+ if (m_callbackSQLUserDataMap.find(key) != m_callbackSQLUserDataMap.end())
+ {
+ ThrowMsg(WrtDeviceApis::Commons::PlatformException, "same id exist");
+ }
+
+// LoggerD(key << " : " << std::hex << data);
+
+ DPL::Mutex::ScopedLock lock(&m_mutex);
+ m_callbackSQLUserDataMap[key] = data;
+ }
+
+ void* removeSQLUserData(std::string key)
+ {
+ if (m_callbackSQLUserDataMap.find(key) == m_callbackSQLUserDataMap.end())
+ {
+ ThrowMsg(WrtDeviceApis::Commons::PlatformException, "there is no key");
+ }
+
+
+ DPL::Mutex::ScopedLock lock(&m_mutex);
+ void* data = m_callbackSQLUserDataMap[key];
+
+ // LoggerD(key << " : " << std::hex << data);
+
+ m_callbackSQLUserDataMap.erase(key);
+ return data;
+ }
+
friend class DPL::Singleton<DataControlAsyncCallbackManager>;
+
private:
+ void cleanupSQLUserData()
+ {
+ for (std::map<std::string, void*>::iterator it = m_callbackSQLUserDataMap.begin();
+ it != m_callbackSQLUserDataMap.end(); ++it)
+ {
+ CommonPendingEvent *event = (CommonPendingEvent*)it->second;
+
+ EventInsertPendingEvent *insertEvent = dynamic_cast<EventInsertPendingEvent*>(event);
+
+ if (insertEvent)
+ {
+ LoggerD("free insert");
+ delete insertEvent;
+ continue;
+ }
+
+
+ EventSelectPendingEvent *selectEvent = dynamic_cast<EventSelectPendingEvent*>(event);
+
+ if (selectEvent)
+ {
+ LoggerD("free select");
+ delete selectEvent;
+ continue;
+ }
+
+ EventUpdatePendingEvent *updateEvent = dynamic_cast<EventUpdatePendingEvent*>(event);
+
+ if (updateEvent)
+ {
+ LoggerD("free update");
+ delete updateEvent;
+ continue;
+ }
+
+ EventDeletePendingEvent *deleteEvent = dynamic_cast<EventDeletePendingEvent*>(event);
+
+ if (deleteEvent)
+ {
+ LoggerD("free delete");
+ delete deleteEvent;
+ }
+ }
+ }
+ DPL::Mutex m_mutex;
bool m_sqlDataControlGC;
bool m_mappedDataControlGC;
+ std::map<std::string, void*> m_callbackSQLUserDataMap;
+
};
typedef DPL::Singleton<DataControlAsyncCallbackManager> DataControlAsyncCallbackManagerSingleton;
#define DATACONTROL_PROTOCOL_DIR_TOP "/tmp/osp"
#define DATACONTROL_PROTOCOL_DIR_MIDDLE "/tmp/osp/data-control"
#define DATACONTROL_PROTOCOL_DIR "/tmp/osp/data-control/request"
-//#define DATACONTROL_PROTOCOL_DIR "/tmp/osp/DataControlRequest"
-
-
static std::vector<std::string> getDataArrayFromBundle(bundle *b, std::string key)
{
EventSelectPendingEvent *pendingEvent = NULL;
SQLDataControlConsumer *consumer = NULL;
EventSelectPtr event;
-
+ const char *bundleKey = NULL;
+
try
{
- if (data == NULL)
+ if (b == NULL)
{
- LoggerD("data null, can not send result to JS Layer");
- return;
+ ThrowMsg(WrtDeviceApis::Commons::PlatformException, "Get result fail from datacontrol provider");
}
-
- pendingEvent = (EventSelectPendingEvent *)data;
+ bundleKey = appsvc_get_data(b, OSP_K_REQUEST_ID);
+
+ if (bundleKey == NULL)
+ {
+ ThrowMsg(WrtDeviceApis::Commons::PlatformException, "Get key fail from datacontrol provider");
+ }
+
+ pendingEvent = (EventSelectPendingEvent *)DataControlAsyncCallbackManagerSingleton::Instance().removeSQLUserData(bundleKey);
+
if (DataControlAsyncCallbackManagerSingleton::Instance().isSQLDataControlGC())
{
LoggerD("private object is garbage collected");
consumer = (SQLDataControlConsumer*)pendingEvent->getThisObject();
event = pendingEvent->getEvent();
-
- if (b == NULL)
- {
- ThrowMsg(WrtDeviceApis::Commons::PlatformException, "Get result fail from datacontrol provider");
- }
+
std::vector<std::string> result = getDataArrayFromBundle(b, OSP_K_ARG);
for (size_t index = 0; index < result.size(); index++)
EventInsertPendingEvent *pendingEvent = NULL;
SQLDataControlConsumer *consumer = NULL;
EventInsertPtr event;
+ const char *bundleKey = NULL;
try
{
- if (data == NULL)
+ if (b == NULL)
{
- LoggerD("data null, can not send result to JS Layer");
- return;
+ ThrowMsg(WrtDeviceApis::Commons::PlatformException, "Get result fail from datacontrol provider");
+ }
+
+ bundleKey = appsvc_get_data(b, OSP_K_REQUEST_ID);
+
+ if (bundleKey == NULL)
+ {
+ ThrowMsg(WrtDeviceApis::Commons::PlatformException, "Get key fail from datacontrol provider");
}
- pendingEvent = (EventInsertPendingEvent *)data;
+ pendingEvent = (EventInsertPendingEvent *)DataControlAsyncCallbackManagerSingleton::Instance().removeSQLUserData(bundleKey);
if (DataControlAsyncCallbackManagerSingleton::Instance().isSQLDataControlGC())
{
consumer = (SQLDataControlConsumer*)pendingEvent->getThisObject();
event = pendingEvent->getEvent();
- if (b == NULL)
- {
- ThrowMsg(WrtDeviceApis::Commons::PlatformException, "Get result fail from datacontrol provider");
- }
std::vector<std::string> result = getDataArrayFromBundle(b, OSP_K_ARG);
for (size_t index = 0; index < result.size(); index++)
{
LoggerD("Enter");
- if (data == NULL)
+ if (DataControlAsyncCallbackManagerSingleton::Instance().isSQLDataControlGC())
{
- LoggerD("Data or Bundle error");
+ LoggerD("private object is garbage collected");
return;
}
EventDeletePendingEvent* pendingEvent = NULL;
SQLDataControlConsumer *consumer = NULL;
EventDeletePtr event;
+ const char* bundleKey = NULL;
try
{
- if (data == NULL)
+ if (b == NULL)
{
- LoggerD("data null, can not send result to JS Layer");
- return;
+ ThrowMsg(WrtDeviceApis::Commons::PlatformException, "Get result fail from datacontrol provider");
+ }
+
+ bundleKey = appsvc_get_data(b, OSP_K_REQUEST_ID);
+
+ if (bundleKey == NULL)
+ {
+ ThrowMsg(WrtDeviceApis::Commons::PlatformException, "Get key fail from datacontrol provider");
}
- pendingEvent = (EventDeletePendingEvent *)data;
+ pendingEvent = (EventDeletePendingEvent *)DataControlAsyncCallbackManagerSingleton::Instance().removeSQLUserData(bundleKey);
if (DataControlAsyncCallbackManagerSingleton::Instance().isSQLDataControlGC())
{
consumer = (SQLDataControlConsumer*)pendingEvent->getThisObject();
event = pendingEvent->getEvent();
- if (b == NULL)
- {
- ThrowMsg(WrtDeviceApis::Commons::PlatformException, "Get result fail from datacontrol provider");
- }
std::vector<std::string> result = getDataArrayFromBundle(b, OSP_K_ARG);
for (size_t index = 0; index < result.size(); index++)
EventUpdatePendingEvent* pendingEvent = NULL;
SQLDataControlConsumer *consumer = NULL;
EventUpdatePtr event;
+ const char *bundleKey = NULL;
try
{
- if (data == NULL)
+ if (b == NULL)
{
- LoggerD("data null, can not send result to JS Layer");
- return;
+ ThrowMsg(WrtDeviceApis::Commons::PlatformException, "Get result fail from datacontrol provider");
}
+ bundleKey = appsvc_get_data(b, OSP_K_REQUEST_ID);
- pendingEvent = (EventUpdatePendingEvent *)data;
+ if (bundleKey == NULL)
+ {
+ ThrowMsg(WrtDeviceApis::Commons::PlatformException, "Get key fail from datacontrol provider");
+ }
+
+ pendingEvent = (EventUpdatePendingEvent *)DataControlAsyncCallbackManagerSingleton::Instance().removeSQLUserData(bundleKey);
if (DataControlAsyncCallbackManagerSingleton::Instance().isSQLDataControlGC())
{
consumer = (SQLDataControlConsumer*)pendingEvent->getThisObject();
event = pendingEvent->getEvent();
- if (b == NULL)
- {
- ThrowMsg(WrtDeviceApis::Commons::PlatformException, "Get result fail from datacontrol provider");
- }
std::vector<std::string> result = getDataArrayFromBundle(b, OSP_K_ARG);
for (size_t index = 0; index < result.size(); index++)
}
DPL::Mutex SQLDataControlConsumer::m_mutex;
+std::vector<unsigned int> SQLDataControlConsumer::m_currentReqIds;
std::string SQLDataControlConsumer::getCurrentApplicationId()
{
ThrowMsg(WrtDeviceApis::Commons::PlatformException, "ipc memory allocation fail");
}
- appsvc_set_operation(passData, APPSVC_OPERATION_DEFAULT);
-
+ appsvc_set_operation(passData, APPSVC_OPERATION_DEFAULT);
appsvc_set_appid(passData, m_appId.c_str());
bundle_add(passData, OSP_K_REQUEST_ID, reqIdStr.c_str());
addArrayToBundle(passData, queryItem);
saveArrayToFile(ipcFilename, rowData);
-
- // FIXEME
- // reqid sholud be known
EventInsertPendingEvent* pendingEvent = new EventInsertPendingEvent((void*)this, event);
- int pid = appsvc_run_service(passData, reqId, sqldataControlInsertCallback, (void*)pendingEvent);
+ int pid = appsvc_run_service(passData, reqId, sqldataControlInsertCallback, (void*)NULL);
if (pid < 0)
{
DPL::Mutex::ScopedLock lock(&m_mutex);
m_currentReqIds.push_back(reqId);
-
+ DataControlAsyncCallbackManagerSingleton::Instance().addSQLUserData(reqIdStr, (void*)pendingEvent);
+
}
catch (const WrtDeviceApis::Commons::Exception& ex)
{
addArrayToBundle(passData, queryItem);
EventDeletePendingEvent* pendingEvent = new EventDeletePendingEvent(this, event);
- int pid = appsvc_run_service(passData, reqId, sqldataControlDeleteCallback, (void*)pendingEvent);
+ int pid = appsvc_run_service(passData, reqId, sqldataControlDeleteCallback, (void*)NULL);
if (pid < 0)
{
DPL::Mutex::ScopedLock lock(&m_mutex);
m_currentReqIds.push_back(reqId);
+ DataControlAsyncCallbackManagerSingleton::Instance().addSQLUserData(reqIdStr, (void*)pendingEvent);
}
+
catch (const WrtDeviceApis::Commons::Exception& ex)
{
LoggerE("Exception: " << ex.GetMessage());
addArrayToBundle(passData, queryItem);
EventSelectPendingEvent* pendingEvent = new EventSelectPendingEvent(this, event);
- int pid = appsvc_run_service(passData, reqId, sqldataControlSelectCallback, (void*)pendingEvent);
+ int pid = appsvc_run_service(passData, reqId, sqldataControlSelectCallback, (void*)NULL);
if (pid < 0)
{
DPL::Mutex::ScopedLock lock(&m_mutex);
m_currentReqIds.push_back(reqId);
+ DataControlAsyncCallbackManagerSingleton::Instance().addSQLUserData(reqIdStr, (void*)pendingEvent);
}
catch (const WrtDeviceApis::Commons::Exception& ex)
{
queryItem.push_back(countStr); // count
queryItem.push_back(ipcFilename); // filepath
-/* for (std::map<std::string, std::string>::iterator it= rowData->m_Data.begin();
- it != rowData->m_Data.end(); ++it)
- {
- queryItem.push_back((*it).first); // key - column
- queryItem.push_back((*it).second); // value
- }*/
saveArrayToFile(ipcFilename, rowData);
-
-
}
if (where.size() == 0) // where
addArrayToBundle(passData, queryItem);
EventUpdatePendingEvent* pendingEvent = new EventUpdatePendingEvent(this, event);
- int pid = appsvc_run_service(passData, reqId, sqldataControlUpdateCallback, (void*)pendingEvent);
+ int pid = appsvc_run_service(passData, reqId, sqldataControlUpdateCallback, (void*)NULL);
if (pid < 0)
{
DPL::Mutex::ScopedLock lock(&m_mutex);
m_currentReqIds.push_back(reqId);
+ DataControlAsyncCallbackManagerSingleton::Instance().addSQLUserData(reqIdStr, (void*)pendingEvent);
+
}
catch (const WrtDeviceApis::Commons::Exception& ex)
{
}
}
-
-
-
}
}
std::string getCurrentApplicationId();
void addArrayToBundle(bundle* passData, std::vector<std::string>& array);
- std::vector<unsigned int> m_currentReqIds;
+ static std::vector<unsigned int> m_currentReqIds;
bool checkReqIdUniqueness(unsigned int reqId);
void removeReqId(unsigned int reqId);
std::string generateFileName(unsigned int reqId);
};
+class CommonPendingEvent
+{
+public:
+ CommonPendingEvent() {}
+ ~CommonPendingEvent() {}
+
+ virtual void* getThisObject() const = 0;
+};
-class EventInsertPendingEvent
+class EventInsertPendingEvent : public CommonPendingEvent
{
public:
+ EventInsertPendingEvent() {}
EventInsertPendingEvent(void *thisObject, const EventInsertPtr &event) :
m_thisObject(thisObject),
m_event(event)
virtual ~EventInsertPendingEvent()
{
}
- void* getThisObject() const { return m_thisObject; }
+ virtual void* getThisObject() const { return m_thisObject; }
EventInsertPtr getEvent() const { return m_event; }
private:
void *m_thisObject;
EventInsertPtr m_event;
};
-class EventDeletePendingEvent
+class EventDeletePendingEvent : public CommonPendingEvent
{
public:
+ EventDeletePendingEvent() {}
EventDeletePendingEvent(void *thisObject, const EventDeletePtr &event) :
m_thisObject(thisObject),
m_event(event)
virtual ~EventDeletePendingEvent()
{
}
- void* getThisObject() const { return m_thisObject; }
+ virtual void* getThisObject() const { return m_thisObject; }
EventDeletePtr getEvent() const { return m_event; }
private:
void *m_thisObject;
EventDeletePtr m_event;
};
-class EventUpdatePendingEvent
+class EventUpdatePendingEvent : public CommonPendingEvent
{
public:
+ EventUpdatePendingEvent() {}
EventUpdatePendingEvent(void *thisObject, const EventUpdatePtr &event) :
m_thisObject(thisObject),
m_event(event)
virtual ~EventUpdatePendingEvent()
{
}
- void* getThisObject() const { return m_thisObject; }
+ virtual void* getThisObject() const { return m_thisObject; }
EventUpdatePtr getEvent() const { return m_event; }
private:
void *m_thisObject;
EventUpdatePtr m_event;
};
-class EventSelectPendingEvent
+class EventSelectPendingEvent : public CommonPendingEvent
{
public:
+ EventSelectPendingEvent() {}
EventSelectPendingEvent(void *thisObject, const EventSelectPtr &event) :
m_thisObject(thisObject),
m_event(event)
virtual ~EventSelectPendingEvent()
{
}
- void* getThisObject() const { return m_thisObject; }
+ virtual void* getThisObject() const { return m_thisObject; }
EventSelectPtr getEvent() const { return m_event; }
private:
void *m_thisObject;
msg_get_int_value(convViewList.msg_struct_info[lastMsgIndex], MSG_CONV_MSG_DIRECTION_INT, &tempInt);
int type = tempInt;
LoggerD("direction : " << type);
+ m_direction = type;
msg_get_list_handle(msgInfo, MSG_MESSAGE_ADDR_LIST_STRUCT, (void **)&addr_list);
nToCnt = addr_list->nCount;
return m_result;
}
+int Conversation::getDirection()
+{
+ return m_direction;
+}
+
+
}
}
std::vector<std::string> getBCC();
int getLastMessageId();
bool getResult();
+ int getDirection();
bool makeConversationFromMsgId(unsigned int msgId, MessageType msgType);
void makeConversationFromThreadIndex(unsigned int threadIndex);
// void makeConversationFromThread(msg_thread_view_t msg_thread);
std::vector<std::string> m_cc;
std::vector<std::string> m_bcc;
int m_lastMessageId;
+ int m_direction;
bool m_result;
};
virtual std::vector<std::string> getBCC() = 0;
virtual int getLastMessageId() = 0;
virtual bool getResult() = 0;
+ virtual int getDirection() = 0;
virtual void setConvId(const int id) = 0;
}
if(m_onConversationReceived.size() > 0){
- m_onConversationReceived.emit(jsEvent);
- }
-/*
- if (OUTBOX != folder && SENTBOX != folder && DRAFTBOX != folder)
- {
- jsEvent->setMessage(msg);
- jsEvent->setConversation(conversation);
-
- if(m_onMessageReceived.size() > 0){
- m_onMessageReceived.emit(jsEvent);
- }
-
- if(m_onConversationReceived.size() > 0){
m_onConversationReceived.emit(jsEvent);
- }
-
- } else {
- LoggerW("New email message in ignored folder: " << folder);
}
-*/
}
- else if ((mail_id > 0) && (NOTI_MAIL_DELETE == status))
+ else if ((name.size() > 0) && (NOTI_MAIL_DELETE == status))
{ // TODO also RECEIVE_THREAD_ITEM?
- LoggerI("Email received. delete type: " << mail_id);
+ LoggerI("name.size(): " << name.size());
+
+ unsigned foundLocation = name.rfind(0x01);
+ LoggerI("foundLocation: " << foundLocation);
+ if(foundLocation != std::string::npos)
+ {
+ LoggerI("name: " << name);
+ name = name.substr(foundLocation+1);
+ LoggerI("name: " << name);
+ }
std::vector<std::string> strIds = String::split(name, ',');
msg_struct_t sendOpt = NULL;
msg = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
sendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);
-
+
err = msg_get_message(handle, pMsgIdList->msgIdList[index], msg, sendOpt);
if (err != MSG_SUCCESS)
}
int msgType = 0;
msg_get_int_value(msg, MSG_MESSAGE_TYPE_INT, &msgType);
- LoggerD("msgType : " << msgType);
+ LoggerD("msgType : " << msgType);
if((msgType > MSG_TYPE_INVALID) && ( msgType <= MSG_TYPE_SMS_REJECT))
{
if(msgType != MSG_TYPE_MMS_NOTI)
event->setMessage(message);
event->setConversation(conversation);
- if(storageChangeType == MSG_STORAGE_CHANGE_INSERT)
- {
- LoggerD("MSG_STORAGE_CHANGE_INSERT");
- event->setMsg_Event_Type(EventMessageReceived::MSG_ADDED);
- }
- else if(storageChangeType == MSG_STORAGE_CHANGE_UPDATE)
- {
- LoggerD("MSG_STORAGE_CHANGE_UPDATE");
- event->setMsg_Event_Type(EventMessageReceived::MSG_UPDATED);
- }
-
if(this_->m_onMessageReceived.size() > 0){
+ if(storageChangeType == MSG_STORAGE_CHANGE_INSERT)
+ {
+ LoggerD("MSG_STORAGE_CHANGE_INSERT");
+ event->setMsg_Event_Type(EventMessageReceived::MSG_ADDED);
+ }
+ else if(storageChangeType == MSG_STORAGE_CHANGE_UPDATE)
+ {
+ LoggerD("MSG_STORAGE_CHANGE_UPDATE");
+ event->setMsg_Event_Type(EventMessageReceived::MSG_UPDATED);
+ }
this_->m_onMessageReceived.emit(event);
}
- if(this_->m_onConversationReceived.size() > 0){
+ if((this_->m_onConversationReceived.size() > 0) && (storageChangeType == MSG_STORAGE_CHANGE_INSERT)){
+ if(conversation->getMessageCount() == 1)
+ {
+ LoggerD("MSG_STORAGE_CHANGE_INSERT");
+ event->setMsg_Event_Type(EventMessageReceived::MSG_ADDED);
+ }
+ if(conversation->getMessageCount() > 1)
+ {
+ LoggerD("MSG_STORAGE_CHANGE_INSERT but Conversation Count > 1");
+ event->setMsg_Event_Type(EventMessageReceived::MSG_UPDATED);
+ }
this_->m_onConversationReceived.emit(event);
}
}
msg_get_int_value(msg, MSG_MESSAGE_ID_INT, &msgId);
IMessagePtr message = MessageFactory::createMessage(
MMS,
-// msg_get_message_id(
msgId,
msg
);
event->setMessage(message);
event->setConversation(conversation);
- if(storageChangeType == MSG_STORAGE_CHANGE_INSERT)
- {
- event->setMsg_Event_Type(EventMessageReceived::MSG_ADDED);
- }
- else if(storageChangeType == MSG_STORAGE_CHANGE_UPDATE)
- {
- event->setMsg_Event_Type(EventMessageReceived::MSG_UPDATED);
- }
-// else if(storageChangeType == MSG_STORAGE_CHANGE_DELETE)
-// {
-// event->setMsg_Event_Type(EventMessageReceived::MSG_DELETED);
-// }
-
if(this_->m_onMessageReceived.size() > 0){
+ if(storageChangeType == MSG_STORAGE_CHANGE_INSERT)
+ {
+ LoggerD("MSG_STORAGE_CHANGE_INSERT");
+ event->setMsg_Event_Type(EventMessageReceived::MSG_ADDED);
+ }
+ else if(storageChangeType == MSG_STORAGE_CHANGE_UPDATE)
+ {
+ LoggerD("MSG_STORAGE_CHANGE_UPDATE");
+ event->setMsg_Event_Type(EventMessageReceived::MSG_UPDATED);
+ }
this_->m_onMessageReceived.emit(event);
}
- if(this_->m_onConversationReceived.size() > 0){
+ if((this_->m_onConversationReceived.size() > 0) && (storageChangeType == MSG_STORAGE_CHANGE_INSERT)){
+ if(conversation->getMessageCount() == 1)
+ {
+ LoggerD("MSG_STORAGE_CHANGE_INSERT");
+ event->setMsg_Event_Type(EventMessageReceived::MSG_ADDED);
+ }
+ if(conversation->getMessageCount() > 1)
+ {
+ LoggerD("MSG_STORAGE_CHANGE_INSERT but Conversation Count > 1");
+ event->setMsg_Event_Type(EventMessageReceived::MSG_UPDATED);
+ }
this_->m_onConversationReceived.emit(event);
}
}
vconf_ignore_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE, CellularNetworkValueCallback);
vconf_ignore_key_changed(VCONFKEY_TELEPHONY_CELLID, CellularNetworkValueCallback);
vconf_ignore_key_changed(VCONFKEY_TELEPHONY_LAC, CellularNetworkValueCallback);
+ vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SVC_ROAM, CellularNetworkValueCallback);
if (m_networkRegist == REGIST_CELLULAR) {
connection_unset_ip_address_changed_cb(m_connectionHandle);
m_networkRegist = REGIST_NOT;
vconf_notify_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE, CellularNetworkValueCallback, (void *)this);
vconf_notify_key_changed(VCONFKEY_TELEPHONY_CELLID, CellularNetworkValueCallback, (void *)this);
vconf_notify_key_changed(VCONFKEY_TELEPHONY_LAC, CellularNetworkValueCallback, (void *)this);
+ vconf_notify_key_changed(VCONFKEY_TELEPHONY_SVC_ROAM, CellularNetworkValueCallback, (void *)this);
if (m_networkRegist == REGIST_NOT) {
connection_set_ip_address_changed_cb(m_connectionHandle, NetworkValueCallback, (void *)this);
m_networkRegist = REGIST_CELLULAR;