Name: wrt-plugins-tizen
Summary: JavaScript plugins for WebRuntime
-Version: 0.4.31
+Version: 0.4.32
Release: 0
Group: Development/Libraries
License: Apache License, Version 2.0
BuildRequires: pkgconfig(notification)
BuildRequires: pkgconfig(message-port)
BuildRequires: pkgconfig(sync-agent)
+BuildRequires: pkgconfig(security-server)
BuildRequires: expat-devel
BuildRequires: cmake
BuildRequires: gettext-devel
m_recurrenceType = AbsoluteRecurrence::NoRecurrence;
m_id = -1;
m_interval = -1;
+ is_registered = false;
}
AlarmAbsolute::AlarmAbsolute(service_h handle)
service_clone(&m_service_handle, handle);
m_id = -1;
m_interval = -1;
+ is_registered = false;
}
AlarmAbsolute::~AlarmAbsolute()
void AlarmAbsolute::setId(const int id)
{
m_id = id;
+ is_registered = true;
}
bool AlarmAbsolute::isRecurrence()
AbsoluteRecurrence::Type getRecurrenceType();
service_h getService();
+ public:
+ bool is_registered;
+
private:
int m_id;
struct tm m_date;
service_add_extra_data(m_service_handle, ALARM_TYPE_KEY, ALARM_TYPE_RELATIVE_VALUE);
m_Period = -1;
m_id = -1;
+ is_registered = false;
}
AlarmRelative::AlarmRelative(service_h handle)
service_clone(&m_service_handle, handle);
m_Period = -1;
m_id = -1;
+ is_registered = false;
}
AlarmRelative::~AlarmRelative()
void AlarmRelative::setId(const int id)
{
m_id = id;
+ is_registered = true;
}
bool AlarmRelative::isRecurrence()
int getPeriod();
service_h getService();
+ public:
+ bool is_registered;
+
private:
int m_id;
int m_delay;
throw TypeMismatchException("Private object is null");
}
- int id = privateData->getId();
+ if(!privateData->is_registered) {
+ return JSValueMakeNull(ctx);
+ }
+
+ int id = privateData->getId();
int err = alarm_get_scheduled_date(id, &date);
if(err != ALARM_ERROR_NONE) {
return JSValueMakeNull(ctx);
}
Converter converter(ctx);
- int id = privateData->getId();
- if(id >= 0) {
- std::string strId = converter.toString(id);
+ if (privateData->is_registered) {
+ std::string strId = converter.toString(privateData->getId());
return converter.toJSValueRef(strId);
} else {
return JSValueMakeNull(ctx);
try {
AlarmRelativePtr privateData = getPrivData(thisObject);
+
+ if(!privateData->is_registered) {
+ return JSValueMakeNull(ctx);
+ }
+
id = privateData->getId();
int err = alarm_get_scheduled_date(id, &date);
JSValueRef* exception)
{
Converter converter(ctx);
- int id;
+
try {
AlarmRelativePtr privateData = getPrivData(object);
if (!privateData) {
throw TypeMismatchException("Private object is null");
}
- id = privateData->getId();
- if(id >= 0) {
- std::string strId = converter.toString(id);
+ if(privateData->is_registered) {
+ std::string strId = converter.toString(privateData->getId());
return converter.toJSValueRef(strId);
} else {
return JSValueMakeNull(ctx);
#include <Commons/Exception.h>
#include <Commons/EventReceiver.h>
#include <Commons/Regex.h>
+#include <plugins-ipc-message/ipc_message_support.h>
#include "ApplicationInformation.h"
#include "ApplicationContext.h"
}
}
+ const char* windowId = IPCMessageSupport::sendMessageToUiProcess("tizen://getWindowHandle", NULL);
+ if (windowId != NULL)
+ {
+ service_set_window(service, atoi(windowId));
+ }
+
service_set_operation(service, operation.c_str() );
std::string uri = appControl->getUri();
capi-appfw-package-manager
pkgmgr
pkgmgr-info
+ wrt-plugins-ipc-message
)
ADD_DEFINITIONS("-fvisibility=hidden")
namespace DataControl {
-ISQLDataControlConsumerPtr DataControlFactory::getSQLDataControlConsumer()
+ISQLDataControlConsumerPtr DataControlFactory::getSQLDataControlConsumer(std::string& provId, std::string& dataId, std::string& type)
{
- return ISQLDataControlConsumerPtr(new SQLDataControlConsumer());
+ return ISQLDataControlConsumerPtr(new SQLDataControlConsumer(provId, dataId, type));
}
-IMappedDataControlConsumerPtr DataControlFactory::getMappedDataControlConsumer()
+IMappedDataControlConsumerPtr DataControlFactory::getMappedDataControlConsumer(std::string& provId, std::string& dataId, std::string& type)
{
- return IMappedDataControlConsumerPtr(new MappedDataControlConsumer());
+ return IMappedDataControlConsumerPtr(new MappedDataControlConsumer(provId, dataId, type));
}
ISelectDataObjectPtr DataControlFactory::getSelectDataObject()
class DataControlFactory : DPL::Noncopyable
{
public:
- ISQLDataControlConsumerPtr getSQLDataControlConsumer();
- IMappedDataControlConsumerPtr getMappedDataControlConsumer() ;
+ ISQLDataControlConsumerPtr getSQLDataControlConsumer(std::string& provId, std::string& dataId, std::string& type);
+ IMappedDataControlConsumerPtr getMappedDataControlConsumer(std::string& provId, std::string& dataId, std::string& type) ;
ISelectDataObjectPtr getSelectDataObject();
static DataControlFactory& getInstance();
virtual void removeValue(const EventRemoveValuePtr& event) = 0;
virtual void getValue(const EventGetValuePtr& event) = 0;
virtual void updateValue(const EventUpdateValuePtr& event) = 0;
- virtual void setType(std::string& type) = 0;
- virtual void setProviderId(const std::string& id ) = 0;
- virtual void setDataId(const std::string& id ) = 0;
virtual std::string getType() = 0;
virtual std::string getDataId() = 0;
virtual void deleteData(const EventDeletePtr& event) = 0;
virtual void selectData(const EventSelectPtr& emitter) = 0;
virtual void updateData(const EventUpdatePtr& event) = 0;
- virtual void setType(std::string& type) = 0;
- virtual void setProviderId(const std::string& id ) = 0;
- virtual void setDataId(const std::string& id ) = 0;
virtual std::string getType() = 0;
virtual std::string getDataId() = 0;
JSObjectRef JSMappedDataControlConsumer::createJSObject(JSContextRef context, std::string provId, std::string dataId, std::string type)
{
- IMappedDataControlConsumerPtr MappedDataControlConsumer(DataControlFactory::getInstance().getMappedDataControlConsumer());
- MappedDataControlConsumer->setDataId(dataId);
- MappedDataControlConsumer->setProviderId(provId);
- MappedDataControlConsumer->setType(type);
+ IMappedDataControlConsumerPtr MappedDataControlConsumer(DataControlFactory::getInstance().getMappedDataControlConsumer(provId, dataId, type));
JSMappedDataControlConsumerPriv* priv = new JSMappedDataControlConsumerPriv( context, MappedDataControlConsumer);
return JSObjectMake(context, getClassRef(), priv);
JSObjectRef JSSQLDataControlConsumer::createJSObject(JSContextRef context, std::string provId, std::string dataId, std::string type)
{
- ISQLDataControlConsumerPtr SqlDataControlConsumer(DataControlFactory::getInstance().getSQLDataControlConsumer());
- SqlDataControlConsumer->setDataId(dataId);
- SqlDataControlConsumer->setProviderId(provId);
- SqlDataControlConsumer->setType(type);
+ ISQLDataControlConsumerPtr SqlDataControlConsumer(DataControlFactory::getInstance().getSQLDataControlConsumer(provId, dataId, type));
JSSQLDataControlConsumerPriv* priv = new JSSQLDataControlConsumerPriv( context, SqlDataControlConsumer);
-
return JSObjectMake(context, getClassRef(), priv);
}
#define OSP_K_DATACONTROL_PROVIDER "__OSP_DATACONTROL_PROVIDER__"
#define OSP_K_DATACONTROL_REQUEST_TYPE "__OSP_DATACONTROL_REQUEST_TYPE__"
#define OSP_K_DATACONTROL_PROTOCOL_VERSION "__OSP_DATACONTROL_PROTOCOL_VERSION__"
+#define OSP_K_DATACONTROL_PROTOCOL_VERSION_VALUE "ver_2.1.0.3"
#define RESULT_TRUE_FROM_OSP "1"
}
}
-MappedDataControlConsumer::MappedDataControlConsumer()
+MappedDataControlConsumer::MappedDataControlConsumer(std::string& provId, std::string& dataId, std::string& type)
{
LoggerD("Enter");
- m_appId = "";
- m_type = "";;
- m_dataId = "";
- m_providerId = "";
+ m_appId = getApplicationId(provId);
+ m_type = type;;
+ m_dataId = dataId;
+ m_providerId = provId;
}
DPL::Mutex MappedDataControlConsumer::m_mutex;
-void MappedDataControlConsumer::setType(std::string& type)
-{
- if (type != MAP_DATA_CONTROL && type != SQL_DATA_CONTROL)
- ThrowMsg(WrtDeviceApis::Commons::ConversionException, "type mismatch");
-
- m_type = type;
-}
-
-void MappedDataControlConsumer::setProviderId(const std::string& id )
-{
- m_providerId = id;
-}
-
-void MappedDataControlConsumer::setDataId(const std::string& id )
-{
- m_dataId = id;
-}
-
-
std::string MappedDataControlConsumer::getDataId()
{
return m_dataId;
if (m_appId.length() == 0)
{
- LoggerD("need " << passId);
-
if( pkgmgr_datacontrol_get_info(passId, OSP_PKGINFO_MAP_TYPE, &appId, &access) < 0)
{
ThrowMsg(WrtDeviceApis::Commons::PlatformException, "get appId error");
}
- LoggerD("need2");
if (appId)
{
- LoggerD(appId);
appIdStr = appId;
free(appId);
}
ssreqtype << _DATACONTROL_REQUEST_TYPE_MAP_INSERT;
reqtypestr = ssreqtype.str();
- // FIXME
- // qi993y8s4e.DataControlProviderService
- std::string appId = getApplicationId(m_providerId);
- //.DataControlProviderService";
-
passData = bundle_create();
if (passData == NULL)
appsvc_set_operation(passData, APPSVC_OPERATION_DEFAULT);
- appsvc_set_appid(passData, appId.c_str());
+ appsvc_set_appid(passData, m_appId.c_str());
bundle_add(passData, OSP_K_REQUEST_ID, reqIdStr.c_str());
bundle_add(passData, OSP_K_CALLER_TYPE, OSP_V_CALLER_TYPE_OSP);
bundle_add(passData, OSP_K_LAUNCH_TYPE, OSP_V_LAUNCH_TYPE_DATACONTROL);
bundle_add(passData, OSP_K_DATACONTROL_REQUEST_TYPE, reqtypestr.c_str());
bundle_add(passData, OSP_K_DATACONTROL_PROVIDER, m_providerId.c_str());
+ bundle_add(passData, OSP_K_DATACONTROL_PROTOCOL_VERSION, OSP_K_DATACONTROL_PROTOCOL_VERSION_VALUE); // version
queryItem.push_back(dataId); // dataid
queryItem.push_back(key); // key
ThrowMsg(WrtDeviceApis::Commons::AlreadyInUseException, "Duplicated requested id");
}
-
- std::string appId = getApplicationId(m_providerId);
passData = bundle_create();
if (passData == NULL)
}
appsvc_set_operation(passData, APPSVC_OPERATION_DEFAULT);
- appsvc_set_appid(passData, appId.c_str());
+ appsvc_set_appid(passData, m_appId.c_str());
bundle_add(passData, OSP_K_REQUEST_ID, reqIdStr.c_str());
bundle_add(passData, OSP_K_CALLER_TYPE, OSP_V_CALLER_TYPE_OSP);
bundle_add(passData, OSP_K_LAUNCH_TYPE, OSP_V_LAUNCH_TYPE_DATACONTROL);
bundle_add(passData, OSP_K_DATACONTROL_REQUEST_TYPE, reqtypestr.c_str());
bundle_add(passData, OSP_K_DATACONTROL_PROVIDER, m_providerId.c_str());
+ bundle_add(passData, OSP_K_DATACONTROL_PROTOCOL_VERSION, OSP_K_DATACONTROL_PROTOCOL_VERSION_VALUE); // version
+
queryItem.push_back(dataId); // dataid
queryItem.push_back(key);
ssreqtype << _DATACONTROL_REQUEST_TYPE_MAP_QUERY;
reqtypestr = ssreqtype.str();
- std::string appId = getApplicationId(m_providerId);
-
passData = bundle_create();
if (passData == NULL)
}
appsvc_set_operation(passData, APPSVC_OPERATION_DEFAULT);
- appsvc_set_appid(passData, appId.c_str());
+ appsvc_set_appid(passData, m_appId.c_str());
bundle_add(passData, OSP_K_REQUEST_ID, reqIdStr.c_str());
bundle_add(passData, OSP_K_CALLER_TYPE, OSP_V_CALLER_TYPE_OSP);
bundle_add(passData, OSP_K_LAUNCH_TYPE, OSP_V_LAUNCH_TYPE_DATACONTROL);
bundle_add(passData, OSP_K_DATACONTROL_REQUEST_TYPE, reqtypestr.c_str());
bundle_add(passData, OSP_K_DATACONTROL_PROVIDER, m_providerId.c_str());
- bundle_add(passData, OSP_K_DATACONTROL_PROTOCOL_VERSION, "ver_2.1.0.1");
+ bundle_add(passData, OSP_K_DATACONTROL_PROTOCOL_VERSION, OSP_K_DATACONTROL_PROTOCOL_VERSION_VALUE); // version
+
+
queryItem.push_back(dataId); // dataid
queryItem.push_back(key);
ThrowMsg(WrtDeviceApis::Commons::AlreadyInUseException, "Duplicated requested id");
}
- std::string appId = getApplicationId(m_providerId);
passData = bundle_create();
if (passData == NULL)
}
appsvc_set_operation(passData, APPSVC_OPERATION_DEFAULT);
- appsvc_set_appid(passData, appId.c_str());
+ appsvc_set_appid(passData, m_appId.c_str());
ss << reqId;
reqIdStr = ss.str();
bundle_add(passData, OSP_K_LAUNCH_TYPE, OSP_V_LAUNCH_TYPE_DATACONTROL);
bundle_add(passData, OSP_K_DATACONTROL_REQUEST_TYPE, reqtypestr.c_str());
bundle_add(passData, OSP_K_DATACONTROL_PROVIDER, m_providerId.c_str());
+ bundle_add(passData, OSP_K_DATACONTROL_PROTOCOL_VERSION, OSP_K_DATACONTROL_PROTOCOL_VERSION_VALUE); // version
+
queryItem.push_back(dataId); // dataid
queryItem.push_back(key);
virtual void updateValue(const EventUpdateValuePtr& event);
virtual ~MappedDataControlConsumer();
- void setType(std::string& type);
- void setProviderId(const std::string& id );
- void setDataId(const std::string& id );
std::string getType();
std::string getDataId();
protected:
- MappedDataControlConsumer();
+ MappedDataControlConsumer(std::string& provId, std::string& dataId, std::string& type);
virtual void OnRequestReceived(const EventAddValuePtr& event);
virtual void OnRequestReceived(const EventRemoveValuePtr& event);
#include <app_manager.h>
// To get ppid
#include <unistd.h>
-
+#include <security-server.h>
namespace DeviceAPI {
namespace DataControl {
#define RESULT_TRUE_FROM_OSP "1"
#define RESULT_FALSE_FROM_OSP "0"
#define OSP_K_DATACONTROL_PROTOCOL_VERSION "__OSP_DATACONTROL_PROTOCOL_VERSION__"
-#define OSP_K_DATACONTROL_PROTOCOL_VERSION_VALUE "ver_2.1.0.2"
+#define OSP_K_DATACONTROL_PROTOCOL_VERSION_VALUE "ver_2.1.0.3"
-#define DATACONTROL_PROTOCOL_DIR_PARENT "/tmp/osp"
-#define DATACONTROL_PROTOCOL_DIR "/tmp/osp/DataControlRequest"
+#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"
}
}
-SQLDataControlConsumer::SQLDataControlConsumer()
+SQLDataControlConsumer::SQLDataControlConsumer(std::string& provId, std::string& dataId, std::string& type)
{
LoggerD("Enter");
- m_appId = "";
- m_type = "";;
- m_dataId = "";
- m_providerId = "";
+ m_type = type;
+ m_dataId = dataId;
+ m_providerId = provId;
+
+ m_appId = getApplicationId(provId);
+ m_ProviderPkgId = getProviderPkgId(m_appId);
+ security_server_app_give_access(m_ProviderPkgId.c_str(), -1);
+
m_currentAppId = getCurrentApplicationId();
createResultDir();
}
return appId;
}
-void SQLDataControlConsumer::setType(std::string& type)
-{
- if (type != MAP_DATA_CONTROL && type != SQL_DATA_CONTROL)
- ThrowMsg(WrtDeviceApis::Commons::ConversionException, "type mismatch");
-
- m_type = type;
-}
-
-void SQLDataControlConsumer::setProviderId(const std::string& id )
-{
- m_providerId = id;
-}
-
-void SQLDataControlConsumer::setDataId(const std::string& id )
-{
- m_dataId = id;
-}
-
void SQLDataControlConsumer::removeReqId(unsigned int reqId)
{
bool remove = false;
return m_type;
}
+std::string SQLDataControlConsumer::getProviderPkgId(const std::string& appId)
+{
+ char* pkgId = NULL;
+ app_info_h handle = NULL;
+
+ if (m_ProviderPkgId.length() != 0)
+ {
+ return m_ProviderPkgId;
+ }
+
+ int ret = app_manager_get_app_info(appId.c_str(), &handle);
+
+ if (ret != APP_ERROR_NONE)
+ {
+ LoggerD("Fail to get appinfo");
+ ThrowMsg(WrtDeviceApis::Commons::PlatformException, "get appId error");
+ }
+
+ ret = app_info_get_package(handle, &pkgId);
+
+ if ((ret != APP_ERROR_NONE) || (pkgId == NULL))
+ {
+ LoggerD("Fail to get pkg_name");
+ ThrowMsg(WrtDeviceApis::Commons::PlatformException, "get pkdid error");
+ }
+ m_ProviderPkgId = pkgId;
+ app_info_destroy(handle);
+ free(pkgId);
+ return m_ProviderPkgId;
+}
std::string SQLDataControlConsumer::getApplicationId(const std::string& provId)
{
if (m_appId.length() == 0)
{
- LoggerD("need " << passId);
-
if( pkgmgr_datacontrol_get_info(passId, OSP_PKGINFO_SQL_TYPE, &appId, &access) < 0)
{
ThrowMsg(WrtDeviceApis::Commons::PlatformException, "get appId error");
}
- LoggerD("need2");
-
if (appId)
{
- LoggerD(appId);
appIdStr = appId;
free(appId);
}
struct stat info;
memset(&info, 0, sizeof(struct stat));
- int status = lstat(DATACONTROL_PROTOCOL_DIR_PARENT, &info);
+ int status = lstat(DATACONTROL_PROTOCOL_DIR_TOP, &info);
if (status != 0 && errno == ENOENT)
{
- if (mkdir(DATACONTROL_PROTOCOL_DIR_PARENT, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
+ if (mkdir(DATACONTROL_PROTOCOL_DIR_TOP, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
{
LoggerD("make error");
ThrowMsg(WrtDeviceApis::Commons::PlatformException, "result dir could not be created.");
}
}
-
+
+ status = lstat(DATACONTROL_PROTOCOL_DIR_MIDDLE, &info);
+
+ if (status != 0 && errno == ENOENT)
+ {
+ if (mkdir(DATACONTROL_PROTOCOL_DIR_MIDDLE, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
+ {
+ LoggerD("make error");
+ ThrowMsg(WrtDeviceApis::Commons::PlatformException, "result dir could not be created.");
+ }
+ }
+
status = lstat(DATACONTROL_PROTOCOL_DIR, &info);
// already exist
ssreqtype << _DATACONTROL_REQUEST_TYPE_SQL_INSERT;
reqtypestr = ssreqtype.str();
- // FIXME
- // qi993y8s4e.DataControlProviderService
- std::string appId = getApplicationId(m_providerId);
- //.DataControlProviderService";
-
passData = bundle_create();
if (passData == NULL)
appsvc_set_operation(passData, APPSVC_OPERATION_DEFAULT);
- appsvc_set_appid(passData, appId.c_str());
+ appsvc_set_appid(passData, m_appId.c_str());
bundle_add(passData, OSP_K_REQUEST_ID, reqIdStr.c_str());
bundle_add(passData, OSP_K_CALLER_TYPE, OSP_V_CALLER_TYPE_OSP);
bundle_add(passData, OSP_K_DATACONTROL_REQUEST_TYPE, reqtypestr.c_str());
bundle_add(passData, OSP_K_DATACONTROL_PROVIDER, m_providerId.c_str());
bundle_add(passData, OSP_K_DATACONTROL_PROTOCOL_VERSION, OSP_K_DATACONTROL_PROTOCOL_VERSION_VALUE); // version
+ bundle_add(passData, AUL_K_CALLER_APPID, m_currentAppId.c_str());
queryItem.push_back(dataId); // dataid
queryItem.push_back(countStr); // count
queryItem.push_back(ipcFilename); // filepath
- //
-/* std::map<std::string, std::string>::iterator it;
-
- for (it = rowData->m_Data.begin(); it != rowData->m_Data.end(); ++it)
- {
- queryItem.push_back(it->first);
- queryItem.push_back(it->second);
- }*/
-
addArrayToBundle(passData, queryItem);
saveArrayToFile(ipcFilename, rowData);
ssreqtype << _DATACONTROL_REQUEST_TYPE_SQL_DELETE;
reqtypestr = ssreqtype.str();
- std::string appId = getApplicationId(m_providerId);
-
passData = bundle_create();
}
appsvc_set_operation(passData, APPSVC_OPERATION_DEFAULT);
- appsvc_set_appid(passData, appId.c_str());
+ appsvc_set_appid(passData, m_appId.c_str());
bundle_add(passData, OSP_K_REQUEST_ID, reqIdStr.c_str());
bundle_add(passData, OSP_K_CALLER_TYPE, OSP_V_CALLER_TYPE_OSP);
bundle_add(passData, OSP_K_LAUNCH_TYPE, OSP_V_LAUNCH_TYPE_DATACONTROL);
bundle_add(passData, OSP_K_DATACONTROL_REQUEST_TYPE, reqtypestr.c_str());
bundle_add(passData, OSP_K_DATACONTROL_PROVIDER, m_providerId.c_str());
+ bundle_add(passData, OSP_K_DATACONTROL_PROTOCOL_VERSION, OSP_K_DATACONTROL_PROTOCOL_VERSION_VALUE); // version
+ bundle_add(passData, AUL_K_CALLER_APPID, m_currentAppId.c_str());
+
+
queryItem.push_back(dataId); // dataid
ssreqtype << _DATACONTROL_REQUEST_TYPE_SQL_QUERY;
reqtypestr = ssreqtype.str();
- std::string appId = getApplicationId(m_providerId);
-
passData = bundle_create();
if (passData == NULL)
}
appsvc_set_operation(passData, APPSVC_OPERATION_DEFAULT);
- appsvc_set_appid(passData, appId.c_str());
+ appsvc_set_appid(passData, m_appId.c_str());
bundle_add(passData, OSP_K_REQUEST_ID, reqIdStr.c_str());
bundle_add(passData, OSP_K_CALLER_TYPE, OSP_V_CALLER_TYPE_OSP);
bundle_add(passData, OSP_K_LAUNCH_TYPE, OSP_V_LAUNCH_TYPE_DATACONTROL);
bundle_add(passData, OSP_K_DATACONTROL_REQUEST_TYPE, reqtypestr.c_str());
bundle_add(passData, OSP_K_DATACONTROL_PROVIDER, m_providerId.c_str());
+ bundle_add(passData, OSP_K_DATACONTROL_PROTOCOL_VERSION, OSP_K_DATACONTROL_PROTOCOL_VERSION_VALUE); // version
+ bundle_add(passData, AUL_K_CALLER_APPID, m_currentAppId.c_str());
+
queryItem.push_back(dataId); // dataid
ThrowMsg(WrtDeviceApis::Commons::AlreadyInUseException, "Duplicated requested id");
}
- std::string appId = getApplicationId(m_providerId);
-
passData = bundle_create();
if (passData == NULL)
}
appsvc_set_operation(passData, APPSVC_OPERATION_DEFAULT);
- appsvc_set_appid(passData, appId.c_str());
+ appsvc_set_appid(passData, m_appId.c_str());
ss << reqId;
reqIdStr = ss.str();
bundle_add(passData, OSP_K_DATACONTROL_REQUEST_TYPE, reqtypestr.c_str());
bundle_add(passData, OSP_K_DATACONTROL_PROVIDER, m_providerId.c_str());
bundle_add(passData, OSP_K_DATACONTROL_PROTOCOL_VERSION, OSP_K_DATACONTROL_PROTOCOL_VERSION_VALUE);
-
+ bundle_add(passData, AUL_K_CALLER_APPID, m_currentAppId.c_str());
queryItem.push_back(dataId); // dataid
std::string m_appId;
std::string getApplicationId(const std::string& provId);
+ std::string getProviderPkgId(const std::string& appId);
+
std::string getCurrentApplicationId();
void addArrayToBundle(bundle* passData, std::vector<std::string>& array);
std::vector<unsigned int> m_currentReqIds;
static DPL::Mutex m_mutex;
protected:
- SQLDataControlConsumer();
+ SQLDataControlConsumer(std::string& provId, std::string& dataId, std::string& type);
virtual void OnRequestReceived(const EventInsertPtr& event);
virtual void OnRequestReceived(const EventDeletePtr& event);
virtual void OnRequestReceived(const EventUpdatePtr& event);
private:
std::string m_currentAppId;
+ std::string m_ProviderPkgId;
};
if (event->getExceptionCode() == WrtDeviceApis::Commons::ExceptionCodes::None) {
event->getResult()->setPermissions(data->getPerms());
JSFile::PrivateObjectDefPtr privData(new JSFile::PrivateObjectDef(event->getResult(), JSFile::PrivateObjectDef::PermissionList()));
+ INodePtr parent = event->getResult()->getParent();
+
+ if (parent)
+ {
+ privData->pushParentPermissions(data->getPerms());
+ }
JSObjectRef object = JSUtils::makeObject(data->getCallbackManager()->getContext(), JSFile::getClassRef(), privData);
data->getCallbackManager()->callOnSuccess(object);
m_accountId = account.getIntId();
//MailSender::getInstance();
- LoggerD("account ID : " << m_accountId);
+ LoggerD("account ID : " << m_accountId);
ScopedMail mail(EmailService::createMailData(account));
setEmailAccount(account); //save account
fseek(file.Get(), 0, SEEK_SET);
DPL::ScopedPtr<char> data(new char[size + 1]);
memset(data.Get(), 0, size + 1);
- TEMP_FAILURE_RETRY(fread(data.Get(), 1, size-2, file.Get()) &&
- ferror(file.Get()) == 0 ? -1 : 0);
+ TEMP_FAILURE_RETRY(fread(data.Get(), 1, size, file.Get()) &&
+ ferror(file.Get()) == 0 ? -1 : 0);
setBody(data.Get());
}
if (EMAIL_ERROR_NONE != error) {
ThrowMsg(WrtDeviceApis::Commons::PlatformException,
"Couldn't add message to mailbox. [" << error << "]");
- }
+ }
if ( mailbox->mailbox_id )
m_mail->mailbox_id = mailbox->mailbox_id;
LoggerD("mail MailBox id :" << m_mail->mailbox_id);
"Couldn't find message " << m_mail->mail_id << ". [" << error << "]");
}
-
if (m_mail->file_path_plain)
free(m_mail->file_path_plain);
m_mail->file_path_plain = strdup(result->file_path_plain);
else
{
DPL::Mutex::ScopedLock mx(&m_updateMutex);
-
EmailAccountInfo account = getEmailAccount();
m_accountId = account.getIntId(); //set account ID
LoggerD("account ID : " << m_accountId);
if (EMAIL_ERROR_NONE != error) {
ThrowMsg(WrtDeviceApis::Commons::PlatformException,
"Couldn't add message to mailbox. [" << error << "]");
- }
+ }
if ( mailbox->mailbox_id )
+ {
m_mail->mailbox_id = mailbox->mailbox_id;
- LoggerD("mail MailBox id :" << m_mail->mailbox_id);
+ LoggerD("mail MailBox id :" << m_mail->mailbox_id);
+ }
error = email_add_mail(m_mail.Get(), NULL, 0, NULL, 0);
if (EMAIL_ERROR_NONE != error) {
}
}
-
-
-
}
Catch(WrtDeviceApis::Commons::PlatformException) {
if (attachment)
LoggerD("attachment count: " << attachLen);
for (int a = 0; a < attachLen; ++a)
{
+ std::string tempString;
+ int tempInt;
+
attach = (msg_struct_t)msg_list_nth_data(attach_list, a);
if (NULL == attach)
{
msg_get_str_value(attach, MSG_MMS_ATTACH_FILEPATH_STR, szFilePath, sizeof(szFilePath));
msg_get_str_value(attach, MSG_MMS_ATTACH_FILENAME_STR, szFileName, sizeof(szFileName));
+
+ msg_get_int_value(attach, MSG_MMS_ATTACH_MIME_TYPE_INT, &tempInt);
+ tempString = indexIntToMimeTypeString((MimeType)tempInt);
IAttachmentPtr att = appendAttachment(szFilePath, false);
if ((szFileName[0] =! '\0') &&
LoggerD("renaming to " << szFileName);
att->rename(szFileName);
}
+ att->setMimeType(tempString);
+ att->setAttachmentID((int)a);
+ att->setDownloaded(true);
}
msg_release_struct(&mms_struct);
}
+void Mms::readBody(msg_struct_t& messageData)
+{
+
+ int pageLen, mediaLen, attachLen, tempInt, ret;
+
+ msg_struct_t mms_struct = NULL;
+
+ msg_list_handle_t page_list = NULL;
+ msg_list_handle_t media_list = NULL;
+ msg_list_handle_t attach_list = NULL;
+
+ msg_struct_t page = NULL;
+ msg_struct_t media = NULL;
+
+ mms_struct = msg_create_struct(MSG_STRUCT_MMS);
+ ret = msg_get_mms_struct(messageData, mms_struct);
+
+ if (ret != MSG_SUCCESS)
+ {
+ LoggerE("cannot get mms struct");
+ ThrowMsg(WrtDeviceApis::Commons::PlatformException, "cannot get mms struct");
+ }
+
+ char szFilePath[MSG_FILEPATH_LEN_MAX] = {0,};
+ char szFileName[MSG_FILENAME_LEN_MAX] = {0,};
+
+ msg_get_list_handle(mms_struct, MSG_MMS_PAGE_LIST_HND, (void **)&page_list);
+ pageLen = msg_list_length(page_list);
+
+ if (pageLen > 0) {
+ setMmsType(MULTIPART_RELATED);
+ } else {
+ setMmsType(MULTIPART_MIXED);
+ }
+
+ LoggerD("page count: " << pageLen);
+
+ for (int p = 0; p < pageLen; ++p)
+ {
+ LoggerD("page " << p);
+ page = (msg_struct_t)msg_list_nth_data(page_list, p);
+
+ if (NULL == page) {
+ LoggerE("returned page is null, continue");
+ continue;
+ }
+
+ msg_get_list_handle(page, MSG_MMS_PAGE_MEDIA_LIST_HND, (void **)&media_list);
+ mediaLen = msg_list_length(media_list);
+
+ for (int m = 0; m < mediaLen; ++m)
+ {
+ LoggerD("media file " << m);
+ media = (msg_struct_t)msg_list_nth_data(media_list, m);
+ if (NULL == media)
+ {
+ LoggerE("returned media is null, continue");
+ continue;
+ }
+
+ msg_get_int_value(media, MSG_MMS_MEDIA_TYPE_INT, &tempInt);
+
+ memset(szFilePath, 0, sizeof(szFilePath));
+ msg_get_str_value(media, MSG_MMS_MEDIA_FILEPATH_STR, szFilePath, sizeof(szFilePath));
+
+ if ((0 == p) && (MMS_SMIL_MEDIA_TEXT == tempInt))
+ {
+ //text value on first page goes to body attribute
+ LoggerD("setting body from " << szFilePath);
+
+ FILE* f = NULL;
+ f = fopen(szFilePath, "r");
+ if (!f)
+ {
+ LoggerE("cannot read file with body" << szFilePath);
+ ThrowMsg(WrtDeviceApis::Commons::PlatformException, "Cannot read file with body");
+ }
+ fseek(f, 0, SEEK_END);
+ long int size = ftell(f);
+ fseek(f, 0, SEEK_SET);
+ char* data = new (nothrow) char[size + 1];
+ size_t error;
+ if (data) {
+ memset(data, 0, size + 1);
+ error = fread(data, 1, size, f);
+ setBody(data);
+ delete[] data;
+ } else {
+ LoggerE("body is not set");
+ }
+ LoggerD("message body: '" << getBody() << "'");
+ fclose(f);
+ }
+ else
+ {
+ LoggerD("adding attachment " << szFilePath);
+
+ IAttachmentPtr attachment = appendAttachment(szFilePath, false);
+ //attachment->setMessage(this); //set IMessagePtr
+
+ memset(szFileName, 0, sizeof(szFileName));
+ msg_get_str_value(media, MSG_MMS_MEDIA_FILENAME_STR, szFileName, sizeof(szFileName));
+ if ((szFileName[0] =! '\0' )&& (strnlen(szFileName, MSG_FILENAME_LEN_MAX) > 0))
+ {
+ LoggerD("renaming to " << szFileName);
+ attachment->rename(szFileName);
+ }
+ else if (MMS_SMIL_MEDIA_TEXT == tempInt)
+ {
+ std::stringstream newName;
+ newName << "body_page_" << p + 1 << ".txt";
+ LoggerD("renaming to " << newName.str());
+ attachment->rename(newName.str());
+ }
+ }
+ }
+ }
+
+}
+
+
bool Mms::hasAttachment()
{
std::size_t attachmentSize = getAttachmentsCount();
msg_struct_t attachment[20];
- for (size_t i = 0; i < getAttachmentsRef().size(); ++i) {
- IAttachmentPtr att = getAttachment(i);
+ for (size_t idx = 0; idx < getAttachmentsRef().size(); ++idx) {
+ IAttachmentPtr att = getAttachment(idx);
if (!att) {
continue;
}
}
//this function should return valid pointer
+ att->setMessage(SharedFromThis()); // setMessage to setMessageId
+ att->setAttachmentID((int)idx);
+ att->setDownloaded(true);
+
+ int ret = mimeTypeStringToIndexInt(att->getMimeType());
+
+ msg_mms_add_item(mms_struct, MSG_STRUCT_MMS_ATTACH, &attachment[idx]);
+ msg_set_str_value(attachment[idx], MSG_MMS_ATTACH_FILEPATH_STR, const_cast<char*>(att->getFullPath().c_str()), MSG_FILEPATH_LEN_MAX);
- msg_mms_add_item(mms_struct, MSG_STRUCT_MMS_ATTACH, &attachment[i]);
- msg_set_str_value(attachment[i], MSG_MMS_ATTACH_FILEPATH_STR, const_cast<char*>(att->getFullPath().c_str()), MSG_FILEPATH_LEN_MAX);
+ if(ret != MIME_UNKNOWN)
+ {
+ msg_set_int_value(attachment[idx], MSG_MMS_ATTACH_MIME_TYPE_INT, ret);
+ }
LoggerD("Attachment added");
msg_set_int_value(m_messageData, MSG_MESSAGE_ID_INT, msgId);
setId(convertId(msgId));
- readAllData();
+ loadDraftMessage();
msg_release_struct(&sendOpt);
}
+void Mms::loadDraftMessage()
+{
+ LoggerD("entered");
+
+ if (getIdRef().empty() || (EMPTY_ID == getIdRef()))
+ {
+ ThrowMsg(WrtDeviceApis::Commons::PlatformException, "Empty id.");
+ }
+
+ msg_release_struct(&m_messageData);
+ m_messageData = NULL;
+ msg_struct_t sendOpt = NULL;
+
+ Try {
+
+ m_messageData = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
+ sendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);
+
+ // trying to get message from platform
+ if (MSG_SUCCESS != msg_get_message(MsgGetCommonHandle(), convertId(getIdRef()), m_messageData, sendOpt))
+ {
+ LoggerE("get message error");
+ Throw(WrtDeviceApis::Commons::PlatformException);
+ }
+ LoggerD("message found with msgId=" << getIdRef());
+
+ // read all mms dat to abstraction layer
+ readConversationId(m_messageData);
+ readPriority(m_messageData);
+ readSubject(m_messageData);
+ readFolder(m_messageData);
+ readDateTime(m_messageData);
+ readReadStatus(m_messageData);
+ readMessageStatus(m_messageData);
+ readBody(m_messageData);
+
+ msg_release_struct(&sendOpt);
+ }
+ Catch(WrtDeviceApis::Commons::PlatformException) {
+ LoggerE("exception");
+ // nothing to do
+ msg_release_struct(&sendOpt);
+ }
+
+}
+
void Mms::readAllData()
{
LoggerD("entered");
}
ThrowMsg(WrtDeviceApis::Commons::PlatformException, "Invalid folder");
}
+
+MimeType Mms::mimeTypeStringToIndexInt(std::string inputString)
+{
+ const char* szMimeStr = inputString.c_str();
+ MimeType retInt = MIME_UNKNOWN;
+
+ LoggerD("szMimeStr " << szMimeStr);
+
+ for(int idx =0; mimeTable[idx].szMIME != NULL ; idx++)
+ {
+ if (!strcmp(mimeTable[idx].szMIME, szMimeStr)) {
+ retInt = mimeTable[idx].mime;
+ break;
+ }
+ }
+ return retInt;
+
+}
+
+std::string Mms::indexIntToMimeTypeString(MimeType inputIndex)
+{
+ std::string retString;
+
+ for (int idx=0; mimeTable[idx].szMIME != NULL; idx++) {
+ if (inputIndex == mimeTable[idx].mime) {
+ retString = (char *)mimeTable[idx].szMIME;
+ }
+ }
+ return retString;
+}
+
}
}
#define MMS_H
#include "IMms.h"
+#include "MmsMime.h"
#include "MmsSlides.h"
#include "MmsSlide.h"
#include "ISendingObserver.h"
void addMessageToDraft();
+ void loadDraftMessage();
+
void createSendMessage();
void readPriority(msg_struct_t& messageData);
void readBodyAndAttachments(msg_struct_t& messageData);
+ void readBody(msg_struct_t& messageData);
+
void readFolder(msg_struct_t& messageData);
void readDateTime(msg_struct_t& messageData);
void readExistingMessage();
+ MimeType mimeTypeStringToIndexInt(std::string inputString);
+
+ std::string indexIntToMimeTypeString(MimeType inputIndex);
+
private:
std::string m_bodyFilePath;
--- /dev/null
+//\r
+// Tizen Web Device API\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Apache License, Version 2.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+// http://www.apache.org/licenses/LICENSE-2.0\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an "AS IS" BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#ifndef MessageMmsMime_H_\r
+#define MessageMmsMime_H_\r
+\r
+extern "C" {\r
+#include <msg_types.h>\r
+}\r
+\r
+typedef struct _MimeTable {\r
+ const char *szMIME;\r
+ MimeType mime; /* index of mime type */\r
+} MimeTable;\r
+\r
+static const MimeTable mimeTable[] = {\r
+ // 0\r
+ {"*/*", MIME_ASTERISK},\r
+ \r
+ // 1\r
+ {"application/xml", MIME_APPLICATION_XML},\r
+ {"application/wml+xml", MIME_APPLICATION_WML_XML},\r
+ {"application/xhtml+xml", MIME_APPLICATION_XHTML_XML},\r
+ {"application/java-vm", MIME_APPLICATION_JAVA_VM},\r
+ {"application/smil", MIME_APPLICATION_SMIL},\r
+ {"application/java-archive", MIME_APPLICATION_JAVA_ARCHIVE},\r
+ {"application/java", MIME_APPLICATION_JAVA},\r
+ {"application/octet-stream", MIME_APPLICATION_OCTET_STREAM},\r
+ {"application/studiom", MIME_APPLICATION_STUDIOM},\r
+ {"application/funMedia", MIME_APPLICATION_FUNMEDIA},\r
+ {"application/msword", MIME_APPLICATION_MSWORD},\r
+ {"application/pdf", MIME_APPLICATION_PDF},\r
+ {"application/sdp", MIME_APPLICATION_SDP},\r
+ {"application/ram", MIME_APPLICATION_RAM},\r
+ {"application/*", MIME_APPLICATION_ASTERIC},\r
+ \r
+ //16\r
+ {"application/vnd.wap.xhtml+xml", MIME_APPLICATION_VND_WAP_XHTMLXML},\r
+ {"application/vnd.wap.wmlc", MIME_APPLICATION_VND_WAP_WMLC},\r
+ {"application/vnd.wap.wmlscriptc", MIME_APPLICATION_VND_WAP_WMLSCRIPTC},\r
+ {"application/vnd.wap.wta-eventc", MIME_APPLICATION_VND_WAP_WTA_EVENTC},\r
+ {"application/vnd.wap.uaprof", MIME_APPLICATION_VND_WAP_UAPROF},\r
+ {"application/vnd.wap.sic", MIME_APPLICATION_VND_WAP_SIC},\r
+ {"application/vnd.wap.slc", MIME_APPLICATION_VND_WAP_SLC},\r
+ {"application/vnd.wap.coc", MIME_APPLICATION_VND_WAP_COC},\r
+ {"application/vnd.wap.sia", MIME_APPLICATION_VND_WAP_SIA},\r
+ {"application/vnd.wap,connectivity-wbxml", MIME_APPLICATION_VND_WAP_CONNECTIVITY_WBXML},\r
+ {"application/vnd.wap.multipart.form-data", MIME_APPLICATION_VND_WAP_MULTIPART_FORM_DATA},\r
+ {"application/vnd.wap.multipart.byteranges", MIME_APPLICATION_VND_WAP_MULTIPART_BYTERANGES},\r
+ {"application/vnd.wap.multipart.mixed", MIME_APPLICATION_VND_WAP_MULTIPART_MIXED},\r
+ {"application/vnd.wap.multipart.related", MIME_APPLICATION_VND_WAP_MULTIPART_RELATED},\r
+ {"application/vnd.wap.multipart.alternative", MIME_APPLICATION_VND_WAP_MULTIPART_ALTERNATIVE},\r
+ {"application/vnd.wap.multipart.*", MIME_APPLICATION_VND_WAP_MULTIPART_ASTERIC},\r
+ {"application/vnd.wap.wbxml", MIME_APPLICATION_VND_WAP_WBXML},\r
+ {"application/vnd.oma.dd+xml", MIME_APPLICATION_VND_OMA_DD_XML},\r
+ {"application/vnd.oma.drm.message", MIME_APPLICATION_VND_OMA_DRM_MESSAGE},\r
+ {"application/vnd.oma.drm.content", MIME_APPLICATION_VND_OMA_DRM_CONTENT},\r
+ {"application/vnd.oma.drm.rights+xml", MIME_APPLICATION_VND_OMA_DRM_RIGHTS_XML},\r
+ {"application/vnd.oma.drm.rights+wbxml", MIME_APPLICATION_VND_OMA_DRM_RIGHTS_WBXML},\r
+ {"application/vnd.oma.drm.ro+xml", MIME_APPLICATION_VND_OMA_DRM_RO_XML},\r
+ {"application/vnd.oma.drm.dcf", MIME_APPLICATION_VND_OMA_DRM_DCF},\r
+ {"application/vnd.oma.drm.roap-pdu+xml", MIME_APPLICATION_VND_OMA_ROAPPDU_XML},\r
+ {"application/vnd.oma.drm.roap-trigger+xml", MIME_APPLICATION_VND_OMA_ROAPTRIGGER_XML},\r
+ {"application/vnd.smaf", MIME_APPLICATION_VND_SMAF},\r
+ {"application/vnd.rn-realmedia", MIME_APPLICATION_VND_RN_REALMEDIA},\r
+ {"application/vnd.sun.j2me.java-archive", MIME_APPLICATION_VND_SUN_J2ME_JAVA_ARCHIVE},\r
+ {"application/vnd.samsung.theme", MIME_APPLICATION_VND_SAMSUNG_THEME},\r
+ {"application/vnd.ms-excel", MIME_APPLICATION_VND_EXCEL},\r
+ {"application/vnd.ms-powerpoint", MIME_APPLICATION_VND_POWERPOINT},\r
+ {"applcation/vnd.ms-word", MIME_APPLICATION_VND_MSWORD},\r
+ \r
+ //49\r
+ {"application/x-hdmlc", MIME_APPLICATION_X_HDMLC},\r
+ {"application/x-x968-user-cert", MIME_APPLICATION_X_X968_USERCERT},\r
+ {"application/x-www-form-urlencoded", MIME_APPLICATION_X_WWW_FORM_URLENCODED},\r
+ {"application/x-smaf", MIME_APPLICATION_X_SMAF},\r
+ {"application/x-shockwave-flash", MIME_APPLICATION_X_FLASH},\r
+ {"application/x-msexcel", MIME_APPLICATION_X_EXCEL},\r
+ {"application/x-mspowerpoint", MIME_APPLICATION_X_POWERPOINT},\r
+ \r
+ \r
+ //56\r
+ {"audio/basic", MIME_AUDIO_BASIC},\r
+ {"audio/mpeg", MIME_AUDIO_MPEG},\r
+ {"audio/mp3", MIME_AUDIO_MP3},\r
+ {"audio/mpg3", MIME_AUDIO_MPG3},\r
+ {"audio/mpeg3", MIME_AUDIO_MPEG3},\r
+ {"audio/mpg", MIME_AUDIO_MPG},\r
+ {"audio/aac", MIME_AUDIO_AAC},\r
+ {"audio/g72", MIME_AUDIO_G72},\r
+ {"audio/amr", MIME_AUDIO_AMR},\r
+ {"audio/amr-wb", MIME_AUDIO_AMR_WB},\r
+ {"audio/mmf", MIME_AUDIO_MMF},\r
+ {"audio/smaf", MIME_AUDIO_SMAF},\r
+ {"audio/iMelody", MIME_AUDIO_IMELODY},\r
+ {"audio/imelody", MIME_AUDIO_IMELODY2},\r
+ {"audio/melody", MIME_AUDIO_MELODY},\r
+ {"audio/mid", MIME_AUDIO_MID},\r
+ {"audio/midi", MIME_AUDIO_MIDI},\r
+ {"audio/sp-midi", MIME_AUDIO_SP_MIDI},\r
+ {"audio/wave", MIME_AUDIO_WAVE},\r
+ {"audio/wav", MIME_AUDIO_WAV},\r
+ {"audio/3gpp", MIME_AUDIO_3GPP},\r
+ {"audio/mp4", MIME_AUDIO_MP4},\r
+ {"audio/MP4A-LATM", MIME_AUDIO_MP4A_LATM},\r
+ {"audio/m4a", MIME_AUDIO_M4A},\r
+ {"audio/mpeg4", MIME_AUDIO_MPEG4},\r
+ {"audio/wma", MIME_AUDIO_WMA},\r
+ {"audio/xmf", MIME_AUDIO_XMF},\r
+ {"audio/imy", MIME_AUDIO_IMY},\r
+ {"audio/mobile-xmf", MIME_AUDIO_MOBILE_XMF},\r
+ \r
+ // 85\r
+ {"audio/vnd.rn-realaudio", MIME_AUDIO_VND_RN_REALAUDIO},\r
+ \r
+ //86\r
+ {"audio/x-mpeg", MIME_AUDIO_X_MPEG},\r
+ {"audio/x-mp3", MIME_AUDIO_X_MP3},\r
+ {"audio/x-mpeg3", MIME_AUDIO_X_MPEG3},\r
+ {"audio/x-mpg", MIME_AUDIO_X_MPG},\r
+ {"audio/x-amr", MIME_AUDIO_X_AMR},\r
+ {"audio/x-mmf", MIME_AUDIO_X_MMF},\r
+ {"audio/x-smaf", MIME_AUDIO_X_SMAF},\r
+ {"audio/x-iMelody", MIME_AUDIO_X_IMELODY},\r
+ {"audio/x-midi", MIME_AUDIO_X_MIDI},\r
+ {"audio/x-mpegaudio", MIME_AUDIO_X_MPEGAUDIO},\r
+ {"audio/x-pn-realaudio", MIME_AUDIO_X_PN_REALAUDIO},\r
+ {"audio/x-pn-multirate-realaudio", MIME_AUDIO_X_PN_MULTIRATE_REALAUDIO},\r
+ {"audio/x-pn-multirate-realaudio-live", MIME_AUDIO_X_PN_MULTIRATE_REALAUDIO_LIVE},\r
+ {"audio/x-wave", MIME_AUDIO_X_WAVE},\r
+ {"audio/x-wav", MIME_AUDIO_X_WAV},\r
+ {"audio/x-ms-wma", MIME_AUDIO_X_MS_WMA},\r
+ {"audio/x-mid", MIME_AUDIO_X_MID},\r
+ {"audio/x-ms-asf", MIME_AUDIO_X_MS_ASF},\r
+ {"audio/x-xmf", MIME_AUDIO_X_XMF},\r
+ \r
+ //105\r
+ {"image/gif", MIME_IMAGE_GIF},\r
+ {"image/jpeg", MIME_IMAGE_JPEG},\r
+ {"image/jpg", MIME_IMAGE_JPG},\r
+ {"image/tiff", MIME_IMAGE_TIFF},\r
+ {"image/tif", MIME_IMAGE_TIF},\r
+ {"image/png", MIME_IMAGE_PNG},\r
+ {"image/wbmp", MIME_IMAGE_WBMP},\r
+ {"image/pjpeg", MIME_IMAGE_PJPEG},\r
+ {"image/bmp", MIME_IMAGE_BMP},\r
+ {"image/svg+xml", MIME_IMAGE_SVG},\r
+ {"image/svg-xml", MIME_IMAGE_SVG1},\r
+ \r
+ //116\r
+ {"image/vnd.wap.wbmp", MIME_IMAGE_VND_WAP_WBMP},\r
+ {"image/vnd.tmo.my5-gif", MIME_IMAGE_VND_TMO_GIF},\r
+ {"image/vnd.tmo.my5-jpg", MIME_IMAGE_VND_TMO_JPG},\r
+ \r
+ // 119\r
+ {"image/x-bmp", MIME_IMAGE_X_BMP},\r
+ \r
+ // 120\r
+ {"message/rfc822", MIME_MESSAGE_RFC822},\r
+ \r
+ //121\r
+ {"multipart/mixed", MIME_MULTIPART_MIXED},\r
+ {"multipart/related", MIME_MULTIPART_RELATED},\r
+ {"multipart/alternative", MIME_MULTIPART_ALTERNATIVE},\r
+ {"multipart/form-data", MIME_MULTIPART_FORM_DATA},\r
+ {"multipart/byterange", MIME_MULTIPART_BYTERANGE},\r
+ {"multipart/report", MIME_MULTIPART_REPORT},\r
+ {"multipart/voice-message", MIME_MULTIPART_VOICE_MESSAGE},\r
+ \r
+ //128\r
+ {"text/txt", MIME_TEXT_TXT},\r
+ {"text/html", MIME_TEXT_HTML},\r
+ {"text/plain", MIME_TEXT_PLAIN},\r
+ {"text/css", MIME_TEXT_CSS},\r
+ {"text/xml", MIME_TEXT_XML},\r
+ {"text/iMelody", MIME_TEXT_IMELODY},\r
+ \r
+ //134\r
+ {"text/vnd.wap.wmlscript", MIME_TEXT_VND_WAP_WMLSCRIPT},\r
+ {"text/vnd.wap.wml", MIME_TEXT_VND_WAP_WML},\r
+ {"text/vnd.wap.wta-event", MIME_TEXT_VND_WAP_WTA_EVENT},\r
+ {"text/vnd.wap.connectivity-xml", MIME_TEXT_VND_WAP_CONNECTIVITY_XML},\r
+ {"text/vnd.wap.si", MIME_TEXT_VND_WAP_SI},\r
+ {"text/vnd.wap.sl", MIME_TEXT_VND_WAP_SL},\r
+ {"text/vnd.wap.co", MIME_TEXT_VND_WAP_CO},\r
+ {"text/vnd.sun.j2me.app-descriptor", MIME_TEXT_VND_SUN_J2ME_APP_DESCRIPTOR},\r
+ \r
+ \r
+ //142\r
+ {"text/x-hdml", MIME_TEXT_X_HDML},\r
+ {"text/x-vCalendar", MIME_TEXT_X_VCALENDAR},\r
+ {"text/x-vCard", MIME_TEXT_X_VCARD},\r
+ {"text/x-iMelody", MIME_TEXT_X_IMELODY},\r
+ {"text/x-imelody", MIME_TEXT_X_IMELODY2},\r
+ {"text/x-vnote", MIME_TEXT_X_VNOTE},\r
+ \r
+ //148\r
+ {"video/mpeg4", MIME_VIDEO_MPEG4},\r
+ {"video/mp4", MIME_VIDEO_MP4},\r
+ {"video/h263", MIME_VIDEO_H263},\r
+ {"video/3gpp", MIME_VIDEO_3GPP},\r
+ {"video/3gp", MIME_VIDEO_3GP},\r
+ {"video/avi", MIME_VIDEO_AVI},\r
+ {"video/sdp", MIME_VIDEO_SDP},\r
+ {"video/mp4v-es", MIME_VIDEO_MP4_ES},\r
+ {"video/mpeg", MIME_VIDEO_MPEG},\r
+ \r
+ // 157\r
+ {"video/vnd.rn-realvideo", MIME_VIDEO_VND_RN_REALVIDEO},\r
+ {"video/vnd.rn-realmedia", MIME_VIDEO_VND_RN_REALMEDIA},\r
+ \r
+ //159\r
+ {"video/x-mp4", MIME_VIDEO_X_MP4},\r
+ {"video/x-pv-mp4", MIME_VIDEO_X_PV_MP4},\r
+ {"video/x-pn-realvideo", MIME_VIDEO_X_PN_REALVIDEO},\r
+ {"video/x-pn-multirate-realvideo", MIME_VIDEO_X_PN_MULTIRATE_REALVIDEO},\r
+ {"video/x-ms-wmv", MIME_VIDEO_X_MS_WMV},\r
+ {"video/x-ms-asf", MIME_VIDEO_X_MS_ASF},\r
+ {"video/x-pv-pvx", MIME_VIDEO_X_PV_PVX},\r
+\r
+ // MAX\r
+ {"", MIME_UNKNOWN}\r
+ \r
+ };\r
+\r
+#endif /* MessageMmsMime_H_ */\r
+\r
UnicodeString str;
TimeUtilTools util;
- DateFormat *fmt = new SimpleDateFormat(util.getDateTimeFormat(TimeUtilTools::DATE_FORMAT, bLocale), (bLocale ? Locale::getDefault() : Locale::getEnglish()), ec);
+ Locale *defaultLocale = util.getDefaultLocale();
+ DateFormat *fmt = new SimpleDateFormat(util.getDateTimeFormat(TimeUtilTools::DATE_FORMAT, bLocale), ((bLocale && defaultLocale) ? *defaultLocale : Locale::getEnglish()), ec);
if (U_SUCCESS(ec)) {
fmt->setCalendar(*myCalendar);
fmt->format(myCalendar->getTime(ec), str);
UnicodeString str;
TimeUtilTools util;
- DateFormat *fmt = new SimpleDateFormat(util.getDateTimeFormat(TimeUtilTools::TIME_FORMAT, bLocale), (bLocale ? Locale::getDefault() : Locale::getEnglish()), ec);
+ Locale *defaultLocale = util.getDefaultLocale();
+ DateFormat *fmt = new SimpleDateFormat(util.getDateTimeFormat(TimeUtilTools::TIME_FORMAT, bLocale), ((bLocale && defaultLocale) ? *defaultLocale : Locale::getEnglish()), ec);
if (U_SUCCESS(ec)) {
fmt->setCalendar(*myCalendar);
fmt->format(myCalendar->getTime(ec), str);
UnicodeString str;
TimeUtilTools util;
- DateFormat *fmt = new SimpleDateFormat(util.getDateTimeFormat(TimeUtilTools::DATETIME_FORMAT, bLocale), (bLocale ? Locale::getDefault() : Locale::getEnglish()), ec);
+ Locale *defaultLocale = util.getDefaultLocale();
+ DateFormat *fmt = new SimpleDateFormat(util.getDateTimeFormat(TimeUtilTools::DATETIME_FORMAT, bLocale), ((bLocale && defaultLocale) ? *defaultLocale : Locale::getEnglish()), ec);
if (U_SUCCESS(ec)) {
fmt->setCalendar(*myCalendar);
fmt->format(myCalendar->getTime(ec), str);
return true;
}
+Locale *TimeUtilTools::getDefaultLocale() {
+ char *tempstr = vconf_get_str(VCONFKEY_REGIONFORMAT);
+ if (tempstr == NULL)
+ return NULL;
+
+ Locale *defaultLocale = NULL;
+
+ char *str_region = NULL;
+ char* p = strchr(tempstr, '.');
+ int len = strlen(tempstr) - strlen(".UTF-8");
+ if (p && len > 0) {
+ str_region = strndup(tempstr, len); //.UTF8 => 5
+ LoggerD(str_region);
+ defaultLocale = new Locale(str_region);
+ }
+
+ if (tempstr)
+ free(tempstr);
+ if (str_region)
+ free(str_region);
+
+ if (defaultLocale->isBogus()) {
+ delete defaultLocale;
+ defaultLocale = NULL;
+ }
+ return defaultLocale;
+}
+
UnicodeString TimeUtilTools::getDateTimeFormat(DateTimeFormatType type, bool bLocale) {
UErrorCode ec = U_ZERO_ERROR;
- DateTimePatternGenerator *dateTimepatten = DateTimePatternGenerator::createInstance((bLocale ? Locale::getDefault() : Locale::getEnglish()), ec);
+ Locale *defaultLocale = getDefaultLocale();
+ DateTimePatternGenerator *dateTimepatten = DateTimePatternGenerator::createInstance(((bLocale && defaultLocale) ? *defaultLocale : Locale::getEnglish()), ec);
+ if (defaultLocale)
+ delete defaultLocale;
if (U_SUCCESS(ec)) {
UnicodeString patten;
LoggerD("Type : " << type);
bool compareTimeZoneName(Calendar *cal, const std::string &name);
void printDate(Calendar *cal);
UnicodeString getDateTimeFormat(DateTimeFormatType type, bool bLocale);
+ Locale *getDefaultLocale();
};
}