X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fplatform%2FTizen%2FContact%2FContactWrapper.cpp;h=702378179b1812c055f6ead582e2df6ffe361f19;hb=37fad6a43e6da3aa466886818d0c8a8c952f28f2;hp=9487a62c98bb466a4be0470527306f6e71f11670;hpb=65d2bd12c33044282c41ce78c6e1bdbb441d1cff;p=profile%2Fivi%2Fwrt-plugins-tizen.git diff --git a/src/platform/Tizen/Contact/ContactWrapper.cpp b/src/platform/Tizen/Contact/ContactWrapper.cpp index 9487a62..7023781 100755 --- a/src/platform/Tizen/Contact/ContactWrapper.cpp +++ b/src/platform/Tizen/Contact/ContactWrapper.cpp @@ -47,21 +47,10 @@ using namespace std; ContactWrapper::ContactWrapper(IAddressBook::AddressBookType type) : m_abstractContact(NULL), - m_platformContact(NULL) + m_platformContact(NULL), + m_platformContactOwnership(false) { //platform layer seems to not support different storage types yet - /* - if ( type == IAddressBook::PhoneBook ) - { - } - else if ( type == IAddressBook::SIMBook ) - { - } - else - { - LogError("invalid storage type"); - } - */ } ContactWrapper::~ContactWrapper() @@ -71,10 +60,11 @@ ContactWrapper::~ContactWrapper() void ContactWrapper::freePlatformObject() { - if (m_platformContact) + if (m_platformContact && m_platformContactOwnership) { contacts_svc_struct_free(m_platformContact); m_platformContact = NULL; + m_platformContactOwnership = false; } } @@ -99,11 +89,38 @@ CTSstruct* ContactWrapper::getPlatformContact() const return m_platformContact; } -void ContactWrapper::setPlatformContact(CTSstruct* contact) +void ContactWrapper::setPlatformContact(CTSstruct* contact, bool isConvertingVCard) { freePlatformObject(); + freeAbstractObject(); + m_platformContact = contact; - convertToAbstractObject(); + m_platformContactOwnership = false; + convertToAbstractObject(isConvertingVCard); +} + +bool ContactWrapper::convertAbstractToPlatform(const ContactPtr &abstract, CTSstruct* platform, bool isConvertingVCard) +{ + freePlatformObject(); + freeAbstractObject(); + + m_abstractContact = abstract; + m_platformContact = platform; + m_platformContactOwnership = false; + + return convertToPlatformObject(isConvertingVCard); +} + +bool ContactWrapper::convertPlatformToAbstract(CTSstruct* platform, ContactPtr &abstract, bool isConvertingVCard) +{ + freeAbstractObject(); + freePlatformObject(); + + m_platformContact = platform; + m_platformContactOwnership = false; + m_abstractContact = abstract; + + return convertToAbstractObject(isConvertingVCard); } bool ContactWrapper::convertToPlatformObject(bool isConvertingVCard) @@ -128,6 +145,7 @@ bool ContactWrapper::convertToPlatformObject(bool isConvertingVCard) { LogDebug("creating new contact"); m_platformContact = contacts_svc_struct_new(CTS_STRUCT_CONTACT); + m_platformContactOwnership = true; } if (!m_platformContact) @@ -183,12 +201,10 @@ bool ContactWrapper::convertToPlatformObject(bool isConvertingVCard) return true; } -bool ContactWrapper::convertToAbstractObject() +bool ContactWrapper::convertToAbstractObject(bool isConvertingVCard) { LogDebug("entered"); - freeAbstractObject(); - if (!m_platformContact) return false; @@ -197,8 +213,11 @@ bool ContactWrapper::convertToAbstractObject() if (CTS_SUCCESS != contacts_svc_struct_get_value(m_platformContact, CTS_CF_BASE_INFO_VALUE, &value)) return false; - m_abstractContact = ContactPtr(new Contact()); - m_abstractContact->setId(contacts_svc_value_get_int(value, CTS_BASE_VAL_ID_INT)); + if(m_abstractContact == NULL) + m_abstractContact = ContactPtr(new Contact()); + + if(!isConvertingVCard) + m_abstractContact->setId(contacts_svc_value_get_int(value, CTS_BASE_VAL_ID_INT)); const char *charValue;