#include <pcrecpp.h>
#include <dpl/log/log.h>
#include <Commons/Exception.h>
+#include <Commons/Regex.h>
#include "ContactWrapper.h"
#include "AddressBook.h"
#include "Contact.h"
charValue = contacts_svc_value_get_str(value, CTS_BASE_VAL_IMG_PATH_STR);
if (charValue)
- m_abstractContact->setPhotoURI(charValue);
+ m_abstractContact->setPhotoURI(convertPathToUri(charValue));
charValue = contacts_svc_value_get_str(value, CTS_BASE_VAL_RINGTONE_PATH_STR);
if (charValue)
- m_abstractContact->setRingtoneURI(charValue);
+ m_abstractContact->setRingtoneURI(convertPathToUri(charValue));
charValue = contacts_svc_value_get_str(value, CTS_BASE_VAL_NOTE_STR);
if (charValue)
if (charValue)
contactName->setPrefix(charValue);
- charValue = contacts_svc_value_get_str(value, CTS_NAME_VAL_SUFFIX_STR);
- if (charValue)
- contactName->setPhoneticName(charValue);
+ //charValue = contacts_svc_value_get_str(value, CTS_NAME_VAL_SUFFIX_STR);
+ //if (charValue)
+ // contactName->setPhoneticName(charValue);
}
else if (errorCode != CTS_ERR_NO_DATA || value == NULL)
return false;
}
+// errorCode = contacts_svc_struct_get_value(m_platformContact, CTS_CF_BASE_INFO_VALUE, &value);
+// if (CTS_SUCCESS == errorCode && value != NULL)
+// {
+// const char *charValue = NULL;
+//
+// charValue = contacts_svc_value_get_str(value, CTS_BASE_VAL_IMG_PATH_STR);
+// if (charValue)
+// m_abstractContact->setPhotoURI(convertPathToUri(charValue));
+//
+// charValue = contacts_svc_value_get_str(value, CTS_BASE_VAL_RINGTONE_PATH_STR);
+// if (charValue)
+// m_abstractContact->setRingtoneURI(convertPathToUri(charValue));
+//
+// bool boolValue = contacts_svc_value_get_bool(value, CTS_BASE_VAL_FAVORITE_BOOL);
+// if (boolValue)
+// m_abstractContact->setIsFavorite(boolValue);
+//
+// charValue = contacts_svc_value_get_str(value, CTS_BASE_VAL_NOTE_STR);
+// if (charValue)
+// m_abstractContact->addNote(charValue);
+// }
+// else if (errorCode != CTS_ERR_NO_DATA || value == NULL)
+// {
+// return false;
+// }
+
return true;
}
addresses->push_back(address);
int type = contacts_svc_value_get_int(static_cast<CTSvalue*>(addressList->data), CTS_POSTAL_VAL_TYPE_INT);
- switch (type)
- {
- case CTS_ADDR_TYPE_NONE:
+ if(type & CTS_ADDR_TYPE_POSTAL) // TODO to be checked
address->addType(CONTACT_ADDRESS_TYPE_PREF);
- break;
- case CTS_ADDR_TYPE_HOME:
+ if(type & CTS_ADDR_TYPE_HOME)
address->addType(CONTACT_ADDRESS_TYPE_HOME);
- break;
- case CTS_ADDR_TYPE_WORK:
+ if(type & CTS_ADDR_TYPE_WORK)
address->addType(CONTACT_ADDRESS_TYPE_WORK);
- break;
- default:
- LogError("invalid address type");
- address->addType(CONTACT_ADDRESS_TYPE_PREF);
- break;
- }
const char *charValue = NULL;
emailAddresses->push_back(email);
int type = contacts_svc_value_get_int(static_cast<CTSvalue*>(emailList->data), CTS_EMAIL_VAL_TYPE_INT);
- switch (type)
- {
- case CTS_EMAIL_TYPE_NONE:
+
+ if(type | CTS_EMAIL_TYPE_NONE)
email->addType(CONTACT_EMAIL_TYPE_PREF);
- break;
- case CTS_EMAIL_TYPE_HOME:
+ if(type | CTS_EMAIL_TYPE_HOME)
email->addType(CONTACT_EMAIL_TYPE_HOME);
- break;
- case CTS_EMAIL_TYPE_WORK:
+ if(type | CTS_EMAIL_TYPE_WORK)
email->addType(CONTACT_EMAIL_TYPE_WORK);
- break;
- default:
- LogError("invalid phone type");
- email->addType(CONTACT_EMAIL_TYPE_PREF);
- break;
- }
const char *charValue = NULL;
phoneNumbers->push_back(phoneNumber);
int type = contacts_svc_value_get_int(static_cast<CTSvalue*>(phoneList->data), CTS_NUM_VAL_TYPE_INT);
- switch (type)
- {
- case CTS_NUM_TYPE_WORK:
+ if(type & CTS_NUM_TYPE_WORK)
phoneNumber->addType(CONTACT_PHONE_NUMBER_TYPE_WORK);
- break;
- case CTS_NUM_TYPE_NONE:
+ if(type & CTS_NUM_TYPE_NONE)
phoneNumber->addType(CONTACT_PHONE_NUMBER_TYPE_PREF);
- break;
- case CTS_NUM_TYPE_HOME:
+ if(type & CTS_NUM_TYPE_HOME)
phoneNumber->addType(CONTACT_PHONE_NUMBER_TYPE_HOME);
- break;
- case CTS_NUM_TYPE_FAX:
+ if(type & CTS_NUM_TYPE_FAX)
phoneNumber->addType(CONTACT_PHONE_NUMBER_TYPE_FAX);
- break;
- case CTS_NUM_TYPE_CELL:
+ if(type & CTS_NUM_TYPE_CELL)
phoneNumber->addType(CONTACT_PHONE_NUMBER_TYPE_CELL);
- break;
- case CTS_NUM_TYPE_PAGER:
+ if(type & CTS_NUM_TYPE_PAGER)
phoneNumber->addType(CONTACT_PHONE_NUMBER_TYPE_PAGER);
- break;
- case CTS_NUM_TYPE_CAR:
+ if(type & CTS_NUM_TYPE_CAR)
phoneNumber->addType(CONTACT_PHONE_NUMBER_TYPE_CAR);
- break;
- case CTS_NUM_TYPE_VOICE:
+ if(type & CTS_NUM_TYPE_VOICE)
phoneNumber->addType(CONTACT_PHONE_NUMBER_TYPE_VOICE);
- break;
- case CTS_NUM_TYPE_MSG:
+ if(type & CTS_NUM_TYPE_MSG)
phoneNumber->addType(CONTACT_PHONE_NUMBER_TYPE_MSG);
- break;
- case CTS_NUM_TYPE_BBS:
+ if(type & CTS_NUM_TYPE_BBS)
phoneNumber->addType(CONTACT_PHONE_NUMBER_TYPE_BBS);
- break;
- case CTS_NUM_TYPE_MODEM:
- phoneNumber->addType(CONTACT_PHONE_NUMBER_TYPE_MODEM);
- break;
- case CTS_NUM_TYPE_ISDN:
+ if(type & CTS_NUM_TYPE_ISDN)
phoneNumber->addType(CONTACT_PHONE_NUMBER_TYPE_ISDN);
- break;
- case CTS_NUM_TYPE_VIDEO:
+ if(type & CTS_NUM_TYPE_VIDEO)
phoneNumber->addType(CONTACT_PHONE_NUMBER_TYPE_VIDEO);
- break;
- case CTS_NUM_TYPE_PCS:
+ if(type & CTS_NUM_TYPE_PCS)
phoneNumber->addType(CONTACT_PHONE_NUMBER_TYPE_PCS);
- break;
- default:
- LogError("invalid phone type");
- phoneNumber->addType(CONTACT_PHONE_NUMBER_TYPE_PREF);
- break;
- }
+ if(type & CTS_NUM_TYPE_WORK)
+ phoneNumber->addType(CONTACT_PHONE_NUMBER_TYPE_WORK);
+ if(type & CTS_NUM_TYPE_WORK)
+ phoneNumber->addType(CONTACT_PHONE_NUMBER_TYPE_WORK);
const char *charValue = NULL;
switch (types->at(j))
{
case CONTACT_ADDRESS_TYPE_PREF:
- type = CTS_ADDR_TYPE_NONE;
+ type |= CTS_ADDR_TYPE_POSTAL; // TODO To be checked
break;
case CONTACT_ADDRESS_TYPE_WORK:
- type = CTS_ADDR_TYPE_WORK;
+ type |= CTS_ADDR_TYPE_WORK;
break;
case CONTACT_ADDRESS_TYPE_HOME:
- type = CTS_ADDR_TYPE_HOME;
+ type |= CTS_ADDR_TYPE_HOME;
break;
default:
LogError("invalid address type");
- type = CTS_EMAIL_TYPE_NONE;
+ type |= CTS_EMAIL_TYPE_NONE;
break;
}
}
|| CTS_SUCCESS != contacts_svc_value_set_str(value, CTS_NAME_VAL_ADDITION_STR, contactName->getMiddleName().c_str())
|| CTS_SUCCESS != contacts_svc_value_set_str(value, CTS_NAME_VAL_DISPLAY_STR, contactName->getDisplayName().c_str())
|| CTS_SUCCESS != contacts_svc_value_set_str(value, CTS_NAME_VAL_PREFIX_STR, contactName->getPrefix().c_str())
- || CTS_SUCCESS != contacts_svc_value_set_str(value, CTS_NAME_VAL_SUFFIX_STR, contactName->getPhoneticName().c_str())
+ // || CTS_SUCCESS != contacts_svc_value_set_str(value, CTS_NAME_VAL_SUFFIX_STR, contactName->getPhoneticName().c_str())
|| CTS_SUCCESS != contacts_svc_struct_store_value(m_platformContact, CTS_CF_NAME_VALUE, value))
{
contacts_svc_value_free(value);
|| CTS_SUCCESS != contacts_svc_value_set_str(value, CTS_NAME_VAL_LAST_STR, contactName->getLastName().c_str())
|| CTS_SUCCESS != contacts_svc_value_set_str(value, CTS_NAME_VAL_ADDITION_STR, contactName->getMiddleName().c_str())
|| CTS_SUCCESS != contacts_svc_value_set_str(value, CTS_NAME_VAL_DISPLAY_STR, contactName->getDisplayName().c_str())
- || CTS_SUCCESS != contacts_svc_value_set_str(value, CTS_NAME_VAL_SUFFIX_STR, contactName->getPhoneticName().c_str())
+ // || CTS_SUCCESS != contacts_svc_value_set_str(value, CTS_NAME_VAL_SUFFIX_STR, contactName->getPhoneticName().c_str())
|| CTS_SUCCESS != contacts_svc_value_set_str(value, CTS_NAME_VAL_PREFIX_STR, contactName->getPrefix().c_str()))
{
contacts_svc_value_free(value);
{
if (m_abstractContact->getPhotoURIIsSet())
{
- if (CTS_SUCCESS != contacts_svc_value_set_str(baseinfo, CTS_BASE_VAL_IMG_PATH_STR, m_abstractContact->getPhotoURI().c_str()))
+ if (CTS_SUCCESS != contacts_svc_value_set_str(baseinfo, CTS_BASE_VAL_IMG_PATH_STR, convertUriToPath(m_abstractContact->getPhotoURI()).c_str()))
{
contacts_svc_value_free(baseinfo);
return false;
}
}
- if (CTS_SUCCESS != contacts_svc_value_set_str(baseinfo, CTS_BASE_VAL_RINGTONE_PATH_STR, m_abstractContact->getRingtoneURI().c_str()))
+ if (m_abstractContact->getRingtoneURIIsSet())
{
- contacts_svc_value_free(baseinfo);
- return false;
+ if (CTS_SUCCESS != contacts_svc_value_set_str(baseinfo, CTS_BASE_VAL_RINGTONE_PATH_STR, convertUriToPath(m_abstractContact->getRingtoneURI()).c_str()))
+ {
+ contacts_svc_value_free(baseinfo);
+ return false;
+ }
}
if (CTS_SUCCESS != contacts_svc_value_set_bool(baseinfo, CTS_BASE_VAL_FAVORITE_BOOL, m_abstractContact->getIsFavorite()))
strOldImagePath = static_cast<string>(oldimgpath);
}
- string strNewImagePath = m_abstractContact->getPhotoURI();
+ string strNewImagePath = convertUriToPath(m_abstractContact->getPhotoURI());
if (strOldImagePath != strNewImagePath)
{
if (CTS_SUCCESS != contacts_svc_value_set_str(baseinfo, CTS_BASE_VAL_IMG_PATH_STR, strNewImagePath.c_str()))
{
- contacts_svc_value_free(value);
+ contacts_svc_value_free(baseinfo);
return false;
}
}
- if (CTS_SUCCESS != contacts_svc_value_set_str(baseinfo, CTS_BASE_VAL_RINGTONE_PATH_STR, m_abstractContact->getRingtoneURI().c_str()))
+ const char * oldringtonepath = NULL;
+ oldringtonepath = contacts_svc_value_get_str(baseinfo, CTS_BASE_VAL_IMG_PATH_STR);
+
+ string strOldRingtonePath = "";
+ if (NULL != oldringtonepath)
+ {
+ strOldRingtonePath = static_cast<string>(oldringtonepath);
+ }
+
+ string strNewRingtonePath = convertUriToPath(m_abstractContact->getRingtoneURI());
+ if (strOldRingtonePath != strNewRingtonePath)
{
- return false;
+ if (CTS_SUCCESS != contacts_svc_value_set_str(baseinfo, CTS_BASE_VAL_RINGTONE_PATH_STR, strNewRingtonePath.c_str()))
+ {
+ contacts_svc_value_free(baseinfo);
+ return false;
+ }
}
if(m_abstractContact->getNotesNum() > 0)
}
contacts_svc_struct_store_value(m_platformContact, CTS_CF_BASE_INFO_VALUE, baseinfo);
- contacts_svc_value_free(value);
+ contacts_svc_value_free(baseinfo);
}
/*
//save company information
{
}
+string ContactWrapper::convertUriToPath(string str) const
+{
+ string result;
+
+ if(validate("^file\\:///[a-zA-Z]{2,3}(/\\S*)?$", str, VALIDATE_MATCH_CASELESS))
+ result = str.substr(string("file://").size());
+ else if(validate("^/[a-zA-Z]{2,3}(/\\S*)?$", str, VALIDATE_MATCH_CASELESS))
+ result = str;
+
+ return result;
+}
+
+string ContactWrapper::convertPathToUri(string str) const
+{
+ string result;
+
+ if(validate("^/[a-zA-Z]{2,3}(/\\S*)?$", str, VALIDATE_MATCH_CASELESS))
+ result = "file://" + str;
+ else if(validate("^file\\:///[a-zA-Z]{2,3}(/\\S*)?$", str, VALIDATE_MATCH_CASELESS))
+ result = str;
+
+ return result;
+}
+
} // Contact
} // Platform
} // TizenApis