summaryrefslogtreecommitdiff
path: root/lib-contact/ct-detail/src/CtMyProfileInputData.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib-contact/ct-detail/src/CtMyProfileInputData.cpp')
-rwxr-xr-xlib-contact/ct-detail/src/CtMyProfileInputData.cpp2248
1 files changed, 2248 insertions, 0 deletions
diff --git a/lib-contact/ct-detail/src/CtMyProfileInputData.cpp b/lib-contact/ct-detail/src/CtMyProfileInputData.cpp
new file mode 100755
index 0000000..c0e9663
--- /dev/null
+++ b/lib-contact/ct-detail/src/CtMyProfileInputData.cpp
@@ -0,0 +1,2248 @@
+/*
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "ContactsDebug.h"
+#include "CtMyProfileInputData.h"
+#include "CtCommon.h"
+
+CtMyProfileInputData::CtMyProfileInputData(contacts_record_h contactRecord)
+{
+ WHIT();
+ __contactRecord = contactRecord;
+ __contactId = 0;
+ __init();
+
+}
+
+
+CtMyProfileInputData::CtMyProfileInputData(ContactsData &contactsData)
+{
+ WHIT();
+ __contactRecord = NULL;
+ __contactId = 0;
+}
+
+CtMyProfileInputData::CtMyProfileInputData()
+{
+ WHIT();
+ __init();
+}
+
+CtMyProfileInputData::~CtMyProfileInputData()
+{
+ WHIT();
+ contacts_record_destroy(__contactRecord, true);
+}
+
+//contacts_record_h CtMyProfileInputData::getContactRecord()
+//{
+// WHIT();
+// return __contactRecord;
+//}
+
+void CtMyProfileInputData::__init()
+{
+ WHIT();
+ int err = CONTACTS_ERROR_NONE;
+ contacts_list_h myprofileList = NULL;
+ int count = 0;
+ contacts_record_h record = NULL;
+
+ err = contacts_db_get_all_records(_contacts_my_profile._uri, 0, 0, &myprofileList);
+ WPWARN(CONTACTS_ERROR_NONE != err, "contacts_db_get_all_records() Failed(%d)", err);
+
+ if (myprofileList != NULL) {
+// int myprofile_id = 0;
+ contacts_list_get_count(myprofileList, &count);
+ if (count > 0) {
+ err = contacts_list_get_current_record_p(myprofileList, &record);
+ WPWARN(CONTACTS_ERROR_NONE != err, "contacts_list_get_current_record_p() Failed(%d)", err);
+ err = contacts_record_get_int(record, _contacts_my_profile.id, &__contactId);
+ WPWARN(CONTACTS_ERROR_NONE != err, "contacts_record_get_int() Failed(%d)", err);
+ }
+
+ err = contacts_record_clone(record, &__contactRecord);
+ WPWARN(CONTACTS_ERROR_NONE != err, "contacts_record_clone() Failed(%d)", err);
+ contacts_list_destroy(myprofileList, true);
+ }
+
+ if (__contactRecord == NULL) {
+ err = contacts_record_create(_contacts_my_profile._uri, &__contactRecord);
+ WPWARN(CONTACTS_ERROR_NONE != err, "contacts_record_create() Failed(%d)", err);
+ }
+}
+
+int CtMyProfileInputData::separateFullName(contacts_record_h nameRecord, const char *full_name)
+{
+ WHIT();
+ WPRET_VM(NULL == nameRecord, -1, "nameRecord is NULL");
+ WPRET_VM(NULL == full_name, -1, "full_name is NULL");
+ int err = CONTACTS_ERROR_NONE;
+ char *temp_name = NULL;
+ char *temp_first = NULL;
+ char *temp_middle = NULL;
+ char *temp_last = NULL;
+ char tmp[CT_TEXT_MAX_LEN] = {0};
+
+ snprintf(tmp, sizeof(tmp), "%s", full_name);
+
+ temp_first = strtok_r(tmp, " ", &temp_name);
+ if (temp_first) {
+ temp_middle = strtok_r(NULL, " ", &temp_name);
+ if (temp_middle) {
+ temp_last = temp_name;
+ }
+ }
+
+ WDEBUG("full_name %s, first %s, middle %s, last %s", full_name, temp_first, temp_middle, temp_last);
+
+ if(temp_first && *temp_first) {
+ if(temp_last && *temp_last) {
+ err = contacts_record_set_str(nameRecord, _contacts_name.first, temp_first);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+
+ err = contacts_record_set_str(nameRecord, _contacts_name.addition, temp_middle);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+
+ err = contacts_record_set_str(nameRecord, _contacts_name.last, temp_last);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+ }
+ else {
+ if(temp_middle && *temp_middle) {
+ err = contacts_record_set_str(nameRecord, _contacts_name.first, temp_first);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+
+ err = contacts_record_set_str(nameRecord, _contacts_name.addition, NULL);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+
+ err = contacts_record_set_str(nameRecord, _contacts_name.last, temp_middle);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+ }
+ else {
+ err = contacts_record_set_str(nameRecord, _contacts_name.first, temp_first);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+
+ err = contacts_record_set_str(nameRecord, _contacts_name.addition, NULL);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+
+ err = contacts_record_set_str(nameRecord, _contacts_name.last, NULL);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+ }
+ }
+ }else {
+ err = contacts_record_set_str(nameRecord, _contacts_name.first, NULL);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+
+ err = contacts_record_set_str(nameRecord, _contacts_name.addition, NULL);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+
+ err = contacts_record_set_str(nameRecord, _contacts_name.last, NULL);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+ }
+
+ return err;
+}
+
+int CtMyProfileInputData::separatePhoneticFullName(contacts_record_h nameRecord, const char *full_name)
+{
+ WHIT();
+ WPRET_VM(NULL == nameRecord, -1, "nameRecord is NULL");
+ int err = CONTACTS_ERROR_NONE;
+ char *temp_name = NULL;
+ char *temp_first = NULL;
+ char *temp_middle = NULL;
+ char *temp_last = NULL;
+ char tmp[CT_TEXT_MAX_LEN] = {0};
+
+ if (NULL == full_name) {
+ err = contacts_record_set_str(nameRecord, _contacts_name.phonetic_first, NULL);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+
+ err = contacts_record_set_str(nameRecord, _contacts_name.phonetic_middle, NULL);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+
+ err = contacts_record_set_str(nameRecord, _contacts_name.phonetic_last, NULL);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+ return err;
+ }
+
+ snprintf(tmp, sizeof(tmp), "%s", full_name);
+
+ temp_first = strtok_r(tmp, " ", &temp_name);
+ if (temp_first) {
+ temp_middle = strtok_r(NULL, " ", &temp_name);
+ if (temp_middle) {
+ temp_last = temp_name;
+ }
+ }
+
+ WDEBUG("full_name %s, first %s, middle %s, last %s", full_name, temp_first, temp_middle, temp_last);
+
+ if(temp_first && *temp_first) {
+ if(temp_last && *temp_last) {
+ err = contacts_record_set_str(nameRecord, _contacts_name.phonetic_first, temp_first);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+
+ err = contacts_record_set_str(nameRecord, _contacts_name.phonetic_middle, temp_middle);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+
+ err = contacts_record_set_str(nameRecord, _contacts_name.phonetic_last, temp_last);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+ }
+ else {
+ if(temp_middle && *temp_middle) {
+ err = contacts_record_set_str(nameRecord, _contacts_name.phonetic_first, temp_first);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+
+ err = contacts_record_set_str(nameRecord, _contacts_name.phonetic_middle, NULL);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+
+ err = contacts_record_set_str(nameRecord, _contacts_name.phonetic_last, temp_middle);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+ }
+ else {
+ err = contacts_record_set_str(nameRecord, _contacts_name.phonetic_first, temp_first);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+
+ err = contacts_record_set_str(nameRecord, _contacts_name.phonetic_middle, NULL);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+
+ err = contacts_record_set_str(nameRecord, _contacts_name.phonetic_last, NULL);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+ }
+ }
+ }else {
+ err = contacts_record_set_str(nameRecord, _contacts_name.phonetic_first, NULL);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+
+ err = contacts_record_set_str(nameRecord, _contacts_name.phonetic_middle, NULL);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+
+ err = contacts_record_set_str(nameRecord, _contacts_name.phonetic_last, NULL);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+ }
+
+ return err;
+}
+
+int CtMyProfileInputData::setPrefixName(const char *text)
+{
+ WDEBUG("text %s", text);
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h nameRecord = NULL;
+
+ err = contacts_record_get_child_record_at_p(__contactRecord, _contacts_my_profile.name, 0, &nameRecord);
+
+ if (nameRecord == NULL) {
+ err = contacts_record_create(_contacts_name._uri, &nameRecord);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_create() Failed(%d)", err);
+
+ err = contacts_record_add_child_record(__contactRecord, _contacts_my_profile.name, nameRecord);
+ if(CONTACTS_ERROR_NONE != err) {
+ WERROR("contacts_record_add_child_record() Failed(%d)", err);
+ contacts_record_destroy(nameRecord, true);
+ return err;
+ }
+ }
+
+ err = contacts_record_set_str(nameRecord, _contacts_name.prefix, text);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+
+ return err;
+}
+
+int CtMyProfileInputData::setSuffixName(const char *text)
+{
+ WDEBUG("text %s", text);
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h nameRecord = NULL;
+
+ err = contacts_record_get_child_record_at_p(__contactRecord, _contacts_my_profile.name, 0, &nameRecord);
+
+ if (nameRecord == NULL) {
+ err = contacts_record_create(_contacts_name._uri, &nameRecord);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_create() Failed(%d)", err);
+
+ err = contacts_record_add_child_record(__contactRecord, _contacts_my_profile.name, nameRecord);
+ if(CONTACTS_ERROR_NONE != err) {
+ WERROR("contacts_record_add_child_record() Failed(%d)", err);
+ contacts_record_destroy(nameRecord, true);
+ return err;
+ }
+ }
+
+ err = contacts_record_set_str(nameRecord, _contacts_name.suffix, text);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+
+ return err;
+}
+
+int CtMyProfileInputData::setPhoneticFullName(const char *text)
+{
+ WDEBUG("text %s", text);
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h nameRecord = NULL;
+
+ err = contacts_record_get_child_record_at_p(__contactRecord, _contacts_my_profile.name, 0, &nameRecord);
+ //WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_get_child_record_at_p() Failed(%d)", err);
+
+ if(nameRecord == NULL) {
+ err = contacts_record_create(_contacts_name._uri, &nameRecord);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_create() Failed(%d)", err);
+
+ err = contacts_record_add_child_record(__contactRecord, _contacts_my_profile.name, nameRecord);
+ if(CONTACTS_ERROR_NONE != err) {
+ WERROR("contacts_record_add_child_record() Failed(%d)", err);
+ contacts_record_destroy(nameRecord, true);
+ return err;
+ }
+ }
+
+ err = separatePhoneticFullName(nameRecord, text);
+ return err;
+}
+
+int CtMyProfileInputData::setPhoneticFirstName(const char *text)
+{
+ WDEBUG("text %s", text);
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h nameRecord = NULL;
+
+ err = contacts_record_get_child_record_at_p(__contactRecord, _contacts_my_profile.name, 0, &nameRecord);
+
+ if (nameRecord == NULL) {
+ err = contacts_record_create(_contacts_name._uri, &nameRecord);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_create() Failed(%d)", err);
+
+ err = contacts_record_add_child_record(__contactRecord, _contacts_my_profile.name, nameRecord);
+ if(CONTACTS_ERROR_NONE != err) {
+ WERROR("contacts_record_add_child_record() Failed(%d)", err);
+ contacts_record_destroy(nameRecord, true);
+ return err;
+ }
+ }
+
+ err = contacts_record_set_str(nameRecord, _contacts_name.phonetic_first, text);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+
+ return err;
+}
+
+int CtMyProfileInputData::setPhoneticMiddleName(const char *text)
+{
+ WDEBUG("text %s", text);
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h nameRecord = NULL;
+
+ err = contacts_record_get_child_record_at_p(__contactRecord, _contacts_my_profile.name, 0, &nameRecord);
+
+ if (nameRecord == NULL) {
+ err = contacts_record_create(_contacts_name._uri, &nameRecord);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_create() Failed(%d)", err);
+
+ err = contacts_record_add_child_record(__contactRecord, _contacts_my_profile.name, nameRecord);
+ if(CONTACTS_ERROR_NONE != err) {
+ WERROR("contacts_record_add_child_record() Failed(%d)", err);
+ contacts_record_destroy(nameRecord, true);
+ return err;
+ }
+ }
+
+ err = contacts_record_set_str(nameRecord, _contacts_name.phonetic_middle, text);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+
+ return err;
+}
+
+int CtMyProfileInputData::setPhoneticLastName(const char *text)
+{
+ WDEBUG("text %s", text);
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h nameRecord = NULL;
+
+ err = contacts_record_get_child_record_at_p(__contactRecord, _contacts_my_profile.name, 0, &nameRecord);
+
+ if (nameRecord == NULL) {
+ err = contacts_record_create(_contacts_name._uri, &nameRecord);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_create() Failed(%d)", err);
+
+ err = contacts_record_add_child_record(__contactRecord, _contacts_my_profile.name, nameRecord);
+ if(CONTACTS_ERROR_NONE != err) {
+ WERROR("contacts_record_add_child_record() Failed(%d)", err);
+ contacts_record_destroy(nameRecord, true);
+ return err;
+ }
+ }
+
+ err = contacts_record_set_str(nameRecord, _contacts_name.phonetic_last, text);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+
+ return err;
+}
+
+int CtMyProfileInputData::setNickname(const char *text)
+{
+ WDEBUG("text %s", text);
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h nameRecord = NULL;
+
+ err = contacts_record_get_child_record_at_p(__contactRecord, _contacts_my_profile.nickname, 0, &nameRecord);
+
+ if (nameRecord == NULL) {
+ err = contacts_record_create(_contacts_nickname._uri, &nameRecord);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_create() Failed(%d)", err);
+
+ err = contacts_record_add_child_record(__contactRecord, _contacts_my_profile.nickname, nameRecord);
+ if(CONTACTS_ERROR_NONE != err) {
+ WERROR("contacts_record_add_child_record() Failed(%d)", err);
+ contacts_record_destroy(nameRecord, true);
+ return err;
+ }
+ }
+
+ err = contacts_record_set_str(nameRecord, _contacts_nickname.name, text);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+
+ return err;
+}
+
+int CtMyProfileInputData::setCompany(const char *text)
+{
+ WDEBUG("text %s", text);
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h nameRecord = NULL;
+
+ err = contacts_record_get_child_record_at_p(__contactRecord, _contacts_my_profile.company, 0, &nameRecord);
+
+ if (nameRecord == NULL) {
+ err = contacts_record_create(_contacts_company._uri, &nameRecord);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_create() Failed(%d)", err);
+
+ err = contacts_record_add_child_record(__contactRecord, _contacts_my_profile.company, nameRecord);
+ if(CONTACTS_ERROR_NONE != err) {
+ WERROR("contacts_record_add_child_record() Failed(%d)", err);
+ contacts_record_destroy(nameRecord, true);
+ return err;
+ }
+ }
+
+ err = contacts_record_set_str(nameRecord, _contacts_company.name, text);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+
+ return err;
+}
+
+int CtMyProfileInputData::setJobTitle(const char *text)
+{
+ WDEBUG("text %s", text);
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h nameRecord = NULL;
+
+ err = contacts_record_get_child_record_at_p(__contactRecord, _contacts_my_profile.company, 0, &nameRecord);
+
+ if (nameRecord == NULL) {
+ err = contacts_record_create(_contacts_company._uri, &nameRecord);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_create() Failed(%d)", err);
+
+ err = contacts_record_add_child_record(__contactRecord, _contacts_my_profile.company, nameRecord);
+ if(CONTACTS_ERROR_NONE != err) {
+ WERROR("contacts_record_add_child_record() Failed(%d)", err);
+ contacts_record_destroy(nameRecord, true);
+ return err;
+ }
+ }
+
+ err = contacts_record_set_str(nameRecord, _contacts_company.job_title, text);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+
+ return err;
+}
+
+int CtMyProfileInputData::setFullName(const char *text)
+{
+ WDEBUG("text %s", text);
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h nameRecord = NULL;
+
+ err = contacts_record_get_child_record_at_p(__contactRecord, _contacts_my_profile.name, 0, &nameRecord);
+ //WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_get_child_record_at_p() Failed(%d)", err);
+
+ if(nameRecord == NULL) {
+ err = contacts_record_create(_contacts_name._uri, &nameRecord);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_create() Failed(%d)", err);
+
+ err = contacts_record_add_child_record(__contactRecord, _contacts_my_profile.name, nameRecord);
+ if(CONTACTS_ERROR_NONE != err) {
+ WERROR("contacts_record_add_child_record() Failed(%d)", err);
+ contacts_record_destroy(nameRecord, true);
+ return err;
+ }
+ }
+
+ err = separateFullName(nameRecord, text);
+ return err;
+}
+
+int CtMyProfileInputData::setFirstName(const char *text)
+{
+ WDEBUG("text %s", text);
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h nameRecord = NULL;
+
+ err = contacts_record_get_child_record_at_p(__contactRecord, _contacts_my_profile.name, 0, &nameRecord);
+
+ if (nameRecord == NULL) {
+ err = contacts_record_create(_contacts_name._uri, &nameRecord);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_create() Failed(%d)", err);
+
+ err = contacts_record_add_child_record(__contactRecord, _contacts_my_profile.name, nameRecord);
+ if(CONTACTS_ERROR_NONE != err) {
+ WERROR("contacts_record_add_child_record() Failed(%d)", err);
+ contacts_record_destroy(nameRecord, true);
+ return err;
+ }
+ }
+
+ err = contacts_record_set_str(nameRecord, _contacts_name.first, text);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+
+ return err;
+}
+
+int CtMyProfileInputData::setMiddleName(const char *text)
+{
+ WDEBUG("text %s", text);
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h nameRecord = NULL;
+
+ err = contacts_record_get_child_record_at_p(__contactRecord, _contacts_my_profile.name, 0, &nameRecord);
+
+ if (nameRecord == NULL) {
+ err = contacts_record_create(_contacts_name._uri, &nameRecord);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_create() Failed(%d)", err);
+
+ err = contacts_record_add_child_record(__contactRecord, _contacts_my_profile.name, nameRecord);
+ if(CONTACTS_ERROR_NONE != err) {
+ WERROR("contacts_record_add_child_record() Failed(%d)", err);
+ contacts_record_destroy(nameRecord, true);
+ return err;
+ }
+ }
+
+ err = contacts_record_set_str(nameRecord, _contacts_name.addition, text);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+
+ return err;
+}
+
+int CtMyProfileInputData::setLastName(const char *text)
+{
+ WDEBUG("text %s", text);
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h nameRecord = NULL;
+
+ err = contacts_record_get_child_record_at_p(__contactRecord, _contacts_my_profile.name, 0, &nameRecord);
+
+ if (nameRecord == NULL) {
+ err = contacts_record_create(_contacts_name._uri, &nameRecord);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_create() Failed(%d)", err);
+
+ err = contacts_record_add_child_record(__contactRecord, _contacts_my_profile.name, nameRecord);
+ if(CONTACTS_ERROR_NONE != err) {
+ WERROR("contacts_record_add_child_record() Failed(%d)", err);
+ contacts_record_destroy(nameRecord, true);
+ return err;
+ }
+ }
+
+ err = contacts_record_set_str(nameRecord, _contacts_name.last, text);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+
+ return err;
+}
+
+const char* CtMyProfileInputData::getPrefixName()
+{
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h nameRecord = NULL;
+ char *prefix = NULL;
+
+ err = contacts_record_get_child_record_at_p(__contactRecord, _contacts_my_profile.name, 0, &nameRecord);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_get_child_record_at_p() Failed(%d)", err);
+
+ err = contacts_record_get_str_p(nameRecord, _contacts_name.prefix, &prefix);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_set_str() Failed(%d)", err);
+
+ return prefix;
+}
+
+const char* CtMyProfileInputData::getSuffixName()
+{
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h nameRecord = NULL;
+ char *suffix = NULL;
+
+ err = contacts_record_get_child_record_at_p(__contactRecord, _contacts_my_profile.name, 0, &nameRecord);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_get_child_record_at_p() Failed(%d)", err);
+
+ err = contacts_record_get_str_p(nameRecord, _contacts_name.suffix, &suffix);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_set_str() Failed(%d)", err);
+
+ return suffix;
+}
+
+const char* CtMyProfileInputData::getPhoneticFirstName()
+{
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h nameRecord = NULL;
+ char *phoneticName = NULL;
+
+ err = contacts_record_get_child_record_at_p(__contactRecord, _contacts_my_profile.name, 0, &nameRecord);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_get_child_record_at_p() Failed(%d)", err);
+
+ err = contacts_record_get_str_p(nameRecord, _contacts_name.phonetic_first, &phoneticName);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_set_str() Failed(%d)", err);
+
+ return phoneticName;
+}
+
+const char* CtMyProfileInputData::getPhoneticMiddleName()
+{
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h nameRecord = NULL;
+ char *phoneticName = NULL;
+
+ err = contacts_record_get_child_record_at_p(__contactRecord, _contacts_my_profile.name, 0, &nameRecord);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_get_child_record_at_p() Failed(%d)", err);
+
+ err = contacts_record_get_str_p(nameRecord, _contacts_name.phonetic_middle, &phoneticName);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_set_str() Failed(%d)", err);
+
+ return phoneticName;
+}
+
+const char* CtMyProfileInputData::getPhoneticLastName()
+{
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h nameRecord = NULL;
+ char *phoneticName = NULL;
+
+ err = contacts_record_get_child_record_at_p(__contactRecord, _contacts_my_profile.name, 0, &nameRecord);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_get_child_record_at_p() Failed(%d)", err);
+
+ err = contacts_record_get_str_p(nameRecord, _contacts_name.phonetic_last, &phoneticName);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_set_str() Failed(%d)", err);
+
+ return phoneticName;
+}
+
+const char* CtMyProfileInputData::getNickname()
+{
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h nameRecord = NULL;
+ char *nickname = NULL;
+
+ err = contacts_record_get_child_record_at_p(__contactRecord, _contacts_my_profile.nickname, 0, &nameRecord);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_get_child_record_at_p() Failed(%d)", err);
+
+ err = contacts_record_get_str_p(nameRecord, _contacts_nickname.name, &nickname);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_set_str() Failed(%d)", err);
+
+ return nickname;
+}
+
+const char* CtMyProfileInputData::getCompany()
+{
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h nameRecord = NULL;
+ char *company = NULL;
+
+ err = contacts_record_get_child_record_at_p(__contactRecord, _contacts_my_profile.company, 0, &nameRecord);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_get_child_record_at_p() Failed(%d)", err);
+
+ err = contacts_record_get_str_p(nameRecord, _contacts_company.name, &company);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_set_str() Failed(%d)", err);
+
+ return company;
+}
+
+const char* CtMyProfileInputData::getJobTitle()
+{
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h nameRecord = NULL;
+ char *jobTitle = NULL;
+
+ err = contacts_record_get_child_record_at_p(__contactRecord, _contacts_my_profile.company, 0, &nameRecord);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_get_child_record_at_p() Failed(%d)", err);
+
+ err = contacts_record_get_str_p(nameRecord, _contacts_company.job_title, &jobTitle);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_set_str() Failed(%d)", err);
+
+ return jobTitle;
+}
+
+/**
+ * @return must be freed by you
+ */
+void CtMyProfileInputData::getFullName(std::string &Name)
+{
+ int strLen = 0;
+ const char *firstName = NULL;
+ const char *middleName = NULL;
+ const char *lastName = NULL;
+ const char *prefixName = NULL;
+ const char *suffixName = NULL;
+ char *fullName = NULL;
+
+ firstName = getFirstName();
+ middleName = getMiddleName();
+ lastName = getLastName();
+ prefixName = getPrefixName();
+ suffixName = getSuffixName();
+
+ strLen = SAFE_STRLEN(prefixName) + SAFE_STRLEN(firstName) + SAFE_STRLEN(middleName) + SAFE_STRLEN(lastName) + SAFE_STRLEN(suffixName) + 6;
+ WDEBUG("strLen = %d", strLen);
+
+ fullName = (char*)malloc(sizeof(char)*strLen);
+ WPRET_M(NULL == fullName, "failed to malloc");
+ memset(fullName, 0, sizeof(char)*strLen);
+
+ if (prefixName && *prefixName) {
+ strncat(fullName, prefixName, SAFE_STRLEN(prefixName));
+ }
+ if (firstName && *firstName) {
+ if (fullName && *fullName) {
+ strncat(fullName, " ", 1);
+ }
+ strncat(fullName, firstName, SAFE_STRLEN(firstName));
+ }
+ if (middleName && *middleName) {
+ if (fullName && *fullName) {
+ strncat(fullName, " ", 1);
+ }
+ strncat(fullName, middleName, SAFE_STRLEN(middleName));
+ }
+ if (lastName && *lastName) {
+ if (fullName && *fullName) {
+ strncat(fullName, " ", 1);
+ }
+ strncat(fullName, lastName, SAFE_STRLEN(lastName));
+ }
+ if (suffixName && *suffixName) {
+ if (fullName && *fullName) {
+ strncat(fullName, ", ", 2);
+ }
+ strncat(fullName, suffixName, SAFE_STRLEN(suffixName));
+ }
+
+ Name = fullName;
+ free(fullName);
+}
+
+const char* CtMyProfileInputData::getFirstName()
+{
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h nameRecord = NULL;
+ char *firstName = NULL;
+ const char *result = NULL;
+
+ err = contacts_record_get_child_record_at_p(__contactRecord, _contacts_my_profile.name, 0, &nameRecord);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_get_child_record_at_p() Failed(%d)", err);
+
+ err = contacts_record_get_str_p(nameRecord, _contacts_name.first, &firstName);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_set_str() Failed(%d)", err);
+
+ result = firstName;
+ return result;
+}
+
+const char* CtMyProfileInputData::getMiddleName()
+{
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h nameRecord = NULL;
+ char *middleName = NULL;
+ const char *result = NULL;
+
+ err = contacts_record_get_child_record_at_p(__contactRecord, _contacts_my_profile.name, 0, &nameRecord);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_get_child_record_at_p() Failed(%d)", err);
+
+ err = contacts_record_get_str_p(nameRecord, _contacts_name.addition, &middleName);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_set_str() Failed(%d)", err);
+
+ result = middleName;
+ return result;
+}
+
+const char* CtMyProfileInputData::getLastName()
+{
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h nameRecord = NULL;
+ char *lastName = NULL;
+ const char *result = NULL;
+
+ err = contacts_record_get_child_record_at_p(__contactRecord, _contacts_my_profile.name, 0, &nameRecord);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_get_child_record_at_p() Failed(%d)", err);
+
+ err = contacts_record_get_str_p(nameRecord, _contacts_name.last, &lastName);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_set_str() Failed(%d)", err);
+
+ result = lastName;
+ return result;
+}
+
+int CtMyProfileInputData::removeImage(contacts_record_h record)
+{
+ WHIT();
+ int err = CONTACTS_ERROR_NONE;
+
+ err = contacts_record_remove_child_record(__contactRecord, _contacts_my_profile.image, record);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_remove_child_record() Failed(%d)", err);
+
+ err = contacts_record_destroy(record, true);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_destroy() Failed(%d)", err);
+
+ return err;
+}
+
+const char* CtMyProfileInputData::getImagePath()
+{
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h imageRecord = NULL;
+ char *image = NULL;
+ const char *result = NULL;
+
+ err = contacts_record_get_child_record_at_p(__contactRecord, _contacts_my_profile.image, 0, &imageRecord);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_get_child_record_at_p() Failed(%d)", err);
+
+ err = contacts_record_get_str_p(imageRecord, _contacts_image.path, &image);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_set_str() Failed(%d)", err);
+
+ result = image;
+ return result;
+}
+contacts_record_h CtMyProfileInputData::getImageRecord()
+{
+ WHIT();
+
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ err = contacts_record_get_child_record_at_p(__contactRecord, _contacts_my_profile.image, 0, &record);
+ if (NULL != record) {
+ return record;
+ }
+
+ err = contacts_record_create(_contacts_image._uri, &record);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_create() Failed(%d)", err);
+
+ err = contacts_record_add_child_record(__contactRecord, _contacts_my_profile.image, record);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_add_child_record() Failed(%d)", err);
+
+ return record;
+}
+
+int CtMyProfileInputData::setImage(contacts_record_h record, char *image, int type)
+{
+ WDEBUG("image %s", image);
+ int err = CONTACTS_ERROR_NONE;
+
+ if(image && *image) {
+ err = contacts_record_set_int(record, _contacts_image.type, type);
+ err = contacts_record_set_str(record, _contacts_image.path, image);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+ }
+
+ return err;
+}
+
+Eina_List* CtMyProfileInputData::getNumberList()
+{
+ WHIT();
+
+ int index = 0;
+ bool value = 0;
+ Eina_List *dataRecordList = NULL;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h dataRecord = NULL;
+ const char* typeStr = NULL;
+
+ while (CONTACTS_ERROR_NONE == contacts_record_get_child_record_at_p(__contactRecord, _contacts_my_profile.number, index++, &dataRecord)) {
+ if (CONTACTS_ERROR_NONE != err) {
+ WERROR("contacts_record_get_str_p() Failed(%d)", err);
+ break;
+ }
+
+ err = contacts_record_get_bool(dataRecord, _contacts_number.is_default, &value);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_get_bool() Failed(%d)", err);
+ typeStr = getDataTypeCustom(dataRecord, _contacts_number.label);
+
+ if (value == true && (typeStr && 0 == strcmp(typeStr, CT_KEY_SIM_CARD_NUMBER))) {
+ continue;
+ }
+ dataRecordList = eina_list_append(dataRecordList, dataRecord);
+ }
+
+ return dataRecordList;
+}
+
+contacts_record_h CtMyProfileInputData::getEmergencyNumber()
+{
+ WHIT();
+ return NULL;
+}
+
+contacts_record_h CtMyProfileInputData::getDefaultNumber()
+{
+ int index = 0;
+ bool value = 0;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h dataRecord = NULL;
+ const char* typeStr = NULL;
+
+ while (CONTACTS_ERROR_NONE == contacts_record_get_child_record_at_p(__contactRecord, _contacts_my_profile.number, index++, &dataRecord)) {
+ if (CONTACTS_ERROR_NONE != err) {
+ WERROR("contacts_record_get_str_p() Failed(%d)", err);
+ break;
+ }
+
+ err = contacts_record_get_bool(dataRecord, _contacts_number.is_default, &value);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_get_bool() Failed(%d)", err);
+
+ typeStr = getDataTypeCustom(dataRecord, _contacts_number.label);
+ if (value == true && (typeStr && 0 == strcmp(typeStr, CT_KEY_SIM_CARD_NUMBER))) {
+ return dataRecord;
+ }
+ }
+
+ return NULL;
+}
+
+contacts_record_h CtMyProfileInputData::addNumber(const char *number)
+{
+ WDEBUG("number %s", number);
+
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ err = contacts_record_create(_contacts_number._uri, &record);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_create() Failed(%d)", err);
+
+ setNumberNumber(record, number);
+ setNumberType(record, getNextNumberType(), NULL);
+
+ err = contacts_record_add_child_record(__contactRecord, _contacts_my_profile.number, record);
+ if(CONTACTS_ERROR_NONE != err) {
+ WERROR("contacts_record_add_child_record() Failed(%d)", err);
+ contacts_record_destroy(record, true);
+ return NULL;
+ }
+ return record;
+}
+
+int CtMyProfileInputData::setNumberNumber(contacts_record_h record, const char *number)
+{
+ WDEBUG("number %s", number);
+ int err = CONTACTS_ERROR_NONE;
+
+ if(number) {
+ err = contacts_record_set_str(record, _contacts_number.number, number);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+ }
+
+ return err;
+}
+
+int CtMyProfileInputData::setNumberType(contacts_record_h record, int type, const char *customStr)
+{
+ WDEBUG("type %d", type);
+ WDEBUG("customStr %s", customStr);
+ int err = CONTACTS_ERROR_NONE;
+
+ if (type >= 0) {
+ err = contacts_record_set_int(record, _contacts_number.type, type);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+ }
+ if (customStr) {
+ err = contacts_record_set_str(record, _contacts_number.label, customStr);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+ }
+ return err;
+}
+
+int CtMyProfileInputData::removeNumber(contacts_record_h record)
+{
+ WHIT();
+ int err = CONTACTS_ERROR_NONE;
+
+ err = contacts_record_remove_child_record(__contactRecord, _contacts_my_profile.number, record);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_remove_child_record() Failed(%d)", err);
+
+ return err;
+}
+
+const char* CtMyProfileInputData::getNumberNumber(contacts_record_h record)
+{
+ WHIT();
+ int err = CONTACTS_ERROR_NONE;
+ char *number = NULL;
+ const char *result = NULL;
+
+ err = contacts_record_get_str_p(record, _contacts_number.number, &number);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_get_str_p() Failed(%d)", err);
+
+ result = number;
+ return result;
+}
+
+int CtMyProfileInputData::getNumberType(contacts_record_h record)
+{
+ WHIT();
+ int err = CONTACTS_ERROR_NONE;
+ int type = 0;
+
+ err = contacts_record_get_int(record, _contacts_number.type, &type);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, 0, "contacts_record_get_int() Failed(%d)", err);
+
+ return type;
+}
+
+Eina_List* CtMyProfileInputData::getEmailList()
+{
+ WHIT();
+ return __getChildDataList(__contactRecord, _contacts_my_profile.email);
+}
+
+const char* CtMyProfileInputData::getDataTypeCustom(contacts_record_h record, int property_id)
+{
+ char* typeStr = NULL;
+ const char* result = NULL;
+ int err = CONTACTS_ERROR_NONE;
+ err = contacts_record_get_str_p(record, property_id, &typeStr);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_get_int() Failed(%d)", err);
+
+ result = typeStr;
+ return result;
+}
+
+void CtMyProfileInputData::getNumberTypeStr(contacts_record_h record, int numberType, std::string &typeString)
+{
+ WHIT();
+ const char* typeStr = NULL;
+ char buf[128] = {0,};
+
+ if (numberType & CONTACTS_NUMBER_TYPE_CUSTOM) {
+ typeStr = getDataTypeCustom(record, _contacts_number.label);
+
+ }
+ else if (numberType & CONTACTS_NUMBER_TYPE_CELL) {
+ if (numberType & CONTACTS_NUMBER_TYPE_HOME) {
+ snprintf(buf, sizeof(buf),"%s 2", V_("IDS_PB_OPT_HOME_ABB"));
+ typeStr = buf;
+ }
+ else if (numberType & CONTACTS_NUMBER_TYPE_WORK) {
+ snprintf(buf, sizeof(buf),"%s 2", V_("IDS_PB_OPT_WORK"));
+ typeStr = buf;
+ }
+ else {
+ typeStr = V_("IDS_PB_OPT_MOBILE");
+ }
+ }
+ else if (numberType & CONTACTS_NUMBER_TYPE_VOICE) {
+ if (numberType & CONTACTS_NUMBER_TYPE_HOME) {
+ typeStr = V_("IDS_PB_OPT_HOME_ABB");
+ }
+ else if (numberType & CONTACTS_NUMBER_TYPE_WORK) {
+ typeStr = V_("IDS_PB_OPT_WORK");
+ }
+ else {
+ typeStr = V_("IDS_PB_BODY_TELEPHONE");
+ }
+ }
+ else if (numberType & CONTACTS_NUMBER_TYPE_FAX) {
+ if (numberType & CONTACTS_NUMBER_TYPE_HOME) {
+ typeStr = V_("IDS_PB_OPT_FAX_HHOME_ABB");
+ }
+ else if (numberType & CONTACTS_NUMBER_TYPE_WORK) {
+ typeStr = V_("IDS_PB_OPT_FAX_HWORK_ABB");
+ }
+ else {
+ typeStr = V_("IDS_PB_BODY_FAX");
+ }
+ }
+ else if (numberType & CONTACTS_NUMBER_TYPE_MAIN) {
+ typeStr = V_("IDS_PB_OPT_MAIN");
+ }
+ else if (numberType & CONTACTS_NUMBER_TYPE_PAGER) {
+ typeStr = V_("IDS_PB_OPT_PAGER");
+ }
+ else {
+ if (numberType & CONTACTS_NUMBER_TYPE_HOME) {
+ typeStr = V_("IDS_PB_OPT_HOME_ABB");
+ }
+ else if (numberType & CONTACTS_NUMBER_TYPE_WORK) {
+ typeStr = V_("IDS_PB_OPT_WORK");
+ }
+ else {
+ typeStr = V_("IDS_PB_OPT_OTHER");
+ }
+ }
+
+ char *result = elm_entry_utf8_to_markup(typeStr);
+ if (result) {
+ typeString = result;
+ free(result);
+ }
+}
+
+int CtMyProfileInputData::getNumberRetType(int indexType)
+{
+ int retType;
+
+ switch (indexType) {
+ case CTTEXT_TYPE_MOBILE:
+ retType = CONTACTS_NUMBER_TYPE_CELL;
+ break;
+ case CTTEXT_TYPE_HOME:
+ retType = CONTACTS_NUMBER_TYPE_VOICE | CONTACTS_NUMBER_TYPE_HOME;
+ break;
+ case CTTEXT_TYPE_WORK:
+ retType = CONTACTS_NUMBER_TYPE_VOICE | CONTACTS_NUMBER_TYPE_WORK;
+ break;
+ case CTTEXT_TYPE_FAX_HOME:
+ retType = CONTACTS_NUMBER_TYPE_FAX | CONTACTS_NUMBER_TYPE_HOME;
+ break;
+ case CTTEXT_TYPE_FAX_WORK:
+ retType = CONTACTS_NUMBER_TYPE_FAX | CONTACTS_NUMBER_TYPE_WORK;
+ break;
+ case CTTEXT_TYPE_PAGER:
+ retType = CONTACTS_NUMBER_TYPE_PAGER;
+ break;
+ case CTTEXT_TYPE_CUSTOM:
+ retType = CONTACTS_NUMBER_TYPE_CUSTOM;
+ break;
+ case CTTEXT_TYPE_MAIN:
+ retType = CONTACTS_NUMBER_TYPE_MAIN;
+ break;
+ case CTTEXT_TYPE_OTHER:
+ default:
+ retType = CONTACTS_NUMBER_TYPE_OTHER;
+ break;
+ }
+
+ return retType;
+}
+int CtMyProfileInputData::getNumberIndexType(int numberType)
+{
+ if (numberType & CONTACTS_NUMBER_TYPE_CUSTOM) {
+ return (CTTEXT_TYPE_OTHER);
+ }
+ else if (numberType & CONTACTS_NUMBER_TYPE_CELL) {
+ return (CTTEXT_TYPE_MOBILE);
+ }
+ else if (numberType & CONTACTS_NUMBER_TYPE_VOICE) {
+ if (numberType & CONTACTS_NUMBER_TYPE_HOME) {
+ return (CTTEXT_TYPE_HOME);
+ }
+ else if (numberType & CONTACTS_NUMBER_TYPE_WORK) {
+ return (CTTEXT_TYPE_WORK);
+ }
+ }
+ else if (numberType & CONTACTS_NUMBER_TYPE_FAX) {
+ if (numberType & CONTACTS_NUMBER_TYPE_HOME)
+ return (CTTEXT_TYPE_FAX_HOME);
+ else if (numberType & CONTACTS_NUMBER_TYPE_WORK)
+ return (CTTEXT_TYPE_FAX_WORK);
+ }
+ else if (numberType & CONTACTS_NUMBER_TYPE_PAGER)
+ return (CTTEXT_TYPE_PAGER);
+ else if (numberType & CONTACTS_NUMBER_TYPE_MAIN)
+ return (CTTEXT_TYPE_MAIN);
+ else {
+ if (numberType == CONTACTS_NUMBER_TYPE_HOME)
+ return (CTTEXT_TYPE_HOME);
+ else if (numberType == CONTACTS_NUMBER_TYPE_WORK)
+ return (CTTEXT_TYPE_WORK);
+ else
+ return (CTTEXT_TYPE_OTHER);
+ }
+ WERROR("Not handled case numberType=%d", numberType);
+ return (CTTEXT_TYPE_OTHER);
+}
+
+int CtMyProfileInputData::getNextNumberType()
+{
+ int i;
+ int numberType;
+ int indexType;
+ int index = 0;
+ int err = CONTACTS_ERROR_NONE;
+ int used[CTTEXT_TYPE_OTHER+1] = {0};
+ contacts_record_h record = NULL;
+
+ while (CONTACTS_ERROR_NONE == contacts_record_get_child_record_at_p(__contactRecord, _contacts_my_profile.number, index++, &record)) {
+ err = contacts_record_get_int(record, _contacts_number.type, &numberType);
+ if (CONTACTS_ERROR_NONE != err) {
+ WERROR("contacts_record_get_int() Failed(%d)", err);
+ continue;
+ }
+ indexType = getNumberIndexType(numberType);
+ used[indexType] = 1;
+ }
+
+ for (i=CTTEXT_TYPE_MOBILE;i<CTTEXT_TYPE_OTHER;i++) {
+ if (0 == used[i]) {
+
+ return getNumberRetType(i);
+ }
+ }
+
+ return CONTACTS_NUMBER_TYPE_OTHER;
+
+}
+
+contacts_record_h CtMyProfileInputData::addEmail(const char *email)
+{
+ WDEBUG("email %s", email);
+
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ err = contacts_record_create(_contacts_email._uri, &record);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_create() Failed(%d)", err);
+
+ setEmailEmail(record, email);
+ setEmailType(record, getNextEmailType(), NULL);
+
+ err = contacts_record_add_child_record(__contactRecord, _contacts_my_profile.email, record);
+ if (CONTACTS_ERROR_NONE != err) {
+ WERROR("contacts_record_add_child_record() Failed(%d)", err);
+ contacts_record_destroy(record, true);
+ return NULL;
+ }
+ return record;
+}
+
+int CtMyProfileInputData::setEmailEmail(contacts_record_h record, const char *email)
+{
+ WDEBUG("email %s", email);
+ int err = CONTACTS_ERROR_NONE;
+
+ if (email) {
+ err = contacts_record_set_str(record, _contacts_email.email, email);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+ }
+
+ return err;
+}
+
+int CtMyProfileInputData::setEmailType(contacts_record_h record, int type, char *customStr)
+{
+ WDEBUG("type %d", type);
+ int err = CONTACTS_ERROR_NONE;
+
+ if (type >= 0) {
+ err = contacts_record_set_int(record, _contacts_email.type, type);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+ }
+ if (customStr) {
+ err = contacts_record_set_str(record, _contacts_email.label, customStr);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+ }
+
+ return err;
+}
+
+const char* CtMyProfileInputData::getEmailEmail(contacts_record_h record)
+{
+ WHIT();
+ int err = CONTACTS_ERROR_NONE;
+ char *email = NULL;
+ const char *result = NULL;
+
+ err = contacts_record_get_str_p(record, _contacts_email.email, &email);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_get_str_p() Failed(%d)", err);
+
+ result = email;
+ return result;
+}
+
+int CtMyProfileInputData::getEmailType(contacts_record_h record)
+{
+ WHIT();
+ int err = CONTACTS_ERROR_NONE;
+ int type = 0;
+
+ err = contacts_record_get_int(record, _contacts_email.type, &type);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, 0, "contacts_record_get_int() Failed(%d)", err);
+
+ return type;
+}
+
+void CtMyProfileInputData::getEmailTypeStr(contacts_record_h record, int indexType, std::string &typeString)
+{
+ WHIT();
+ const char* typeStr = NULL;
+
+ if (indexType & CONTACTS_EMAIL_TYPE_CUSTOM) {
+ typeStr = getDataTypeCustom(record, _contacts_email.label);
+ }
+ else if (indexType & CONTACTS_EMAIL_TYPE_HOME) {
+ typeStr = V_("IDS_PB_OPT_HOME_ABB");
+ }
+ else if (indexType & CONTACTS_EMAIL_TYPE_WORK) {
+ typeStr = V_("IDS_PB_OPT_WORK");
+ }
+ else {
+ typeStr = V_("IDS_PB_OPT_OTHER");
+ }
+
+ char *result = elm_entry_utf8_to_markup(typeStr);
+ if (result) {
+ typeString = result;
+ free(result);
+ }
+}
+
+int CtMyProfileInputData::getNextEmailType()
+{
+ int i;
+ int used = 0;
+ int emailType;
+ int index = 0;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+ while (CONTACTS_ERROR_NONE == contacts_record_get_child_record_at_p(__contactRecord, _contacts_my_profile.email, index++, &record)) {
+ err = contacts_record_get_int(record, _contacts_email.type, &emailType);
+ if (CONTACTS_ERROR_NONE != err) {
+ WERROR("contacts_record_get_int() Failed(%d)", err);
+ continue;
+ }
+ used |= emailType;
+ }
+
+ int maxType = CONTACTS_EMAIL_TYPE_WORK;
+ for (i=1;(1<<i)<=maxType;i++) {
+ if (!(used & (1<<i))) {
+ return 1<<i;
+ }
+ }
+
+ return CONTACTS_EMAIL_TYPE_OTHER;
+
+}
+
+int CtMyProfileInputData::removeEmail(contacts_record_h record)
+{
+ WHIT();
+ int err = CONTACTS_ERROR_NONE;
+
+ err = contacts_record_remove_child_record(__contactRecord, _contacts_my_profile.email, record);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_remove_child_record() Failed(%d)", err);
+
+ return err;
+}
+
+contacts_record_h CtMyProfileInputData::getNoteRecord()
+{
+ WHIT();
+ contacts_record_h record = NULL;
+ int err = CONTACTS_ERROR_NONE;
+
+ err = contacts_record_get_child_record_at_p(__contactRecord, _contacts_my_profile.note, 0, &record);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_get_child_record_at_p() Failed(%d)", err);
+ return record;
+}
+
+contacts_record_h CtMyProfileInputData::addNote(const char *note)
+{
+ WDEBUG("note %s", note);
+
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ err = contacts_record_create(_contacts_note._uri, &record);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_create() Failed(%d)", err);
+
+ setNote(record, note);
+
+ err = contacts_record_add_child_record(__contactRecord, _contacts_my_profile.note, record);
+ if (CONTACTS_ERROR_NONE != err) {
+ WERROR("contacts_record_add_child_record() Failed(%d)", err);
+ contacts_record_destroy(record, true);
+ return NULL;
+ }
+ return record;
+}
+
+int CtMyProfileInputData::setNote(contacts_record_h record, const char *note)
+{
+ WDEBUG("note %s", note);
+ int err = CONTACTS_ERROR_NONE;
+
+ if (note) {
+ err = contacts_record_set_str(record, _contacts_note.note, note);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+ }
+
+ return err;
+}
+
+Eina_List* CtMyProfileInputData::getNoteList()
+{
+ WHIT();
+ return __getChildDataList(__contactRecord, _contacts_my_profile.note);
+}
+
+const char* CtMyProfileInputData::getNote(contacts_record_h record)
+{
+ WHIT();
+ int err = CONTACTS_ERROR_NONE;
+ char *note = NULL;
+ const char *result = NULL;
+
+ err = contacts_record_get_str_p(record, _contacts_note.note, &note);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_get_str_p() Failed(%d)", err);
+
+ result = note;
+ return result;
+}
+
+int CtMyProfileInputData::removeNote(contacts_record_h record)
+{
+ WHIT();
+ int err = CONTACTS_ERROR_NONE;
+
+ err = contacts_record_remove_child_record(__contactRecord, _contacts_my_profile.note, record);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_remove_child_record() Failed(%d)", err);
+
+ return err;
+}
+
+Eina_List* CtMyProfileInputData::getAddressList()
+{
+ WHIT();
+ return __getChildDataList(__contactRecord, _contacts_my_profile.address);
+}
+
+contacts_record_h CtMyProfileInputData::addAddress(const char *address)
+{
+ WDEBUG("address %s", address);
+
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ err = contacts_record_create(_contacts_address._uri, &record);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_create() Failed(%d)", err);
+
+ setAddressAddress(record, address);
+ setAddressType(record, getNextAddressType(), NULL);
+
+ err = contacts_record_add_child_record(__contactRecord, _contacts_my_profile.address, record);
+ if (CONTACTS_ERROR_NONE != err) {
+ WERROR("contacts_record_add_child_record() Failed(%d)", err);
+ contacts_record_destroy(record, true);
+ return NULL;
+ }
+ return record;
+}
+
+int CtMyProfileInputData::setAddressAddress(contacts_record_h record, const char *address)
+{
+ WDEBUG("address %s", address);
+ int ret = CONTACTS_ERROR_NONE;
+
+ if (address) {
+ do {
+ if (CONTACTS_ERROR_NONE != (ret = contacts_record_set_str(record, _contacts_address.postbox, NULL))) break;
+ if (CONTACTS_ERROR_NONE != (ret = contacts_record_set_str(record, _contacts_address.postal_code, NULL))) break;
+ if (CONTACTS_ERROR_NONE != (ret = contacts_record_set_str(record, _contacts_address.region, NULL))) break;
+ if (CONTACTS_ERROR_NONE != (ret = contacts_record_set_str(record, _contacts_address.locality, NULL))) break;
+ if (CONTACTS_ERROR_NONE != (ret = contacts_record_set_str(record, _contacts_address.street, address))) break;
+ if (CONTACTS_ERROR_NONE != (ret = contacts_record_set_str(record, _contacts_address.country, NULL))) break;
+ if (CONTACTS_ERROR_NONE != (ret = contacts_record_set_str(record, _contacts_address.extended, NULL))) break;
+ } while (0);
+ WPRET_VM(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_set_str() Failed(%d)", ret);
+ }
+
+ return ret;
+}
+
+int CtMyProfileInputData::setAddressType(contacts_record_h record, int type, const char *customStr)
+{
+ WDEBUG("type %d", type);
+ int err = CONTACTS_ERROR_NONE;
+
+ if (type >= 0) {
+ err = contacts_record_set_int(record, _contacts_address.type, type);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+ }
+
+ if (customStr) {
+ err = contacts_record_set_str(record, _contacts_address.label, customStr);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+ }
+
+ return err;
+}
+
+int CtMyProfileInputData::getAddressAddress(contacts_record_h record, char *buf, int length)
+{
+ WHIT();
+ return __getFullAddress(record, buf, length);
+}
+
+void CtMyProfileInputData::__appendStringWithLinebreak(const char *src, char *dest, int length)
+{
+ char temp[CT_TEXT_MAX_LEN];
+ if (src && '\0' != src[0]) {
+ if ('\0' == dest[0])
+ snprintf(dest, length, "%s", src);
+ else {
+ snprintf(temp, sizeof(temp), "%s\n%s", src, dest);
+ snprintf(dest, length, "%s", temp);
+ }
+ }
+}
+
+int CtMyProfileInputData::__getFullAddress(contacts_record_h addresssRecord, char *buf, int length)
+{
+ WHIT();
+
+ const char *code = NULL;
+ const char *region = NULL;
+ const char *locality = NULL;
+ const char *street = NULL;
+ const char *extended = NULL;
+ const char *country = NULL;
+ const char *pobox = NULL;
+ int err = CONTACTS_ERROR_NONE;
+
+ do {
+ if (CONTACTS_ERROR_NONE != (err = contacts_record_get_str_p(addresssRecord, _contacts_address.postal_code , (char**)&code))) break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_record_get_str_p(addresssRecord, _contacts_address.extended , (char**)&extended))) break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_record_get_str_p(addresssRecord, _contacts_address.postbox , (char**)&pobox))) break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_record_get_str_p(addresssRecord, _contacts_address.street , (char**)&street))) break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_record_get_str_p(addresssRecord, _contacts_address.locality , (char**)&locality))) break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_record_get_str_p(addresssRecord, _contacts_address.region , (char**)&region))) break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_record_get_str_p(addresssRecord, _contacts_address.country ,(char**)&country))) break;
+ } while (0);
+ if(CONTACTS_ERROR_NONE != err)
+ WERROR("contacts_record_get_str_p() Failed(%d)", err);
+
+ __appendStringWithLinebreak(country, buf, length);
+ __appendStringWithLinebreak(code, buf, length);
+ __appendStringWithLinebreak(region, buf, length);
+ __appendStringWithLinebreak(locality, buf, length);
+ __appendStringWithLinebreak(street, buf, length);
+ __appendStringWithLinebreak(extended, buf, length);
+ __appendStringWithLinebreak(pobox, buf, length);
+
+ return 0;
+}
+
+int CtMyProfileInputData::getAddressType(contacts_record_h record)
+{
+ WHIT();
+ int err = CONTACTS_ERROR_NONE;
+ int type = 0;
+
+ err = contacts_record_get_int(record, _contacts_address.type, &type);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, 0, "contacts_record_get_int() Failed(%d)", err);
+
+ return type;
+}
+
+void CtMyProfileInputData::getAddressTypeStr(contacts_record_h record, int indexType, std::string &typeString)
+{
+ WHIT();
+ const char* typeStr = NULL;
+
+ if (indexType & CONTACTS_ADDRESS_TYPE_CUSTOM) {
+ typeStr = getDataTypeCustom(record, _contacts_address.label);
+ }
+ else if (indexType & CONTACTS_ADDRESS_TYPE_HOME) {
+ typeStr = V_("IDS_PB_OPT_HOME_ABB");
+ }
+ else if (indexType & CONTACTS_ADDRESS_TYPE_WORK) {
+ typeStr = V_("IDS_PB_OPT_WORK");
+ }
+ else {
+ typeStr = V_("IDS_PB_OPT_OTHER");
+ }
+
+ char *result = elm_entry_utf8_to_markup(typeStr);
+ if (result) {
+ typeString = result;
+ free(result);
+ }
+}
+
+int CtMyProfileInputData::getNextAddressType()
+{
+ int i;
+ int used = 0;
+ int addressType;
+ int index = 0;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+ while (CONTACTS_ERROR_NONE == contacts_record_get_child_record_at_p(__contactRecord, _contacts_my_profile.address, index++, &record)) {
+ err = contacts_record_get_int(record, _contacts_address.type, &addressType);
+ if (CONTACTS_ERROR_NONE != err) {
+ WERROR("contacts_record_get_int() Failed(%d)", err);
+ continue;
+ }
+ used |= addressType;
+ }
+
+ int maxType = CONTACTS_ADDRESS_TYPE_WORK;
+ for (i=1;(1<<i)<=maxType;i++) {
+ if (!(used & (1<<i))) {
+ return 1<<i;
+ }
+ }
+
+ return CONTACTS_ADDRESS_TYPE_OTHER;
+
+}
+
+int CtMyProfileInputData::removeAddress(contacts_record_h record)
+{
+ WHIT();
+ int err = CONTACTS_ERROR_NONE;
+
+ err = contacts_record_remove_child_record(__contactRecord, _contacts_my_profile.address, record);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_remove_child_record() Failed(%d)", err);
+
+ return err;
+}
+
+Eina_List* CtMyProfileInputData::getMessengerList()
+{
+ WHIT();
+ return __getChildDataList(__contactRecord, _contacts_my_profile.messenger);
+}
+
+contacts_record_h CtMyProfileInputData::addMessenger(const char *messenger)
+{
+ WDEBUG("messenger %s", messenger);
+
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ err = contacts_record_create(_contacts_messenger._uri, &record);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_create() Failed(%d)", err);
+
+ setMessengerMessenger(record, messenger);
+ setMessengerType(record, getNextMessengerType(), NULL);
+
+ err = contacts_record_add_child_record(__contactRecord, _contacts_my_profile.messenger, record);
+ if (CONTACTS_ERROR_NONE != err) {
+ WERROR("contacts_record_add_child_record() Failed(%d)", err);
+ contacts_record_destroy(record, true);
+ return NULL;
+ }
+ return record;
+}
+
+int CtMyProfileInputData::setMessengerMessenger(contacts_record_h record, const char *messenger)
+{
+ WDEBUG("messenger %s", messenger);
+ int err = CONTACTS_ERROR_NONE;
+
+ if (messenger) {
+ err = contacts_record_set_str(record, _contacts_messenger.im_id, messenger);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+ }
+
+ return err;
+}
+
+int CtMyProfileInputData::setMessengerType(contacts_record_h record, int type, const char *customStr)
+{
+ WDEBUG("type %d", type);
+ int err = CONTACTS_ERROR_NONE;
+
+ if (type >= 0) {
+ err = contacts_record_set_int(record, _contacts_messenger.type, type);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+ }
+ if (customStr) {
+ err = contacts_record_set_str(record, _contacts_messenger.label, customStr);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+ }
+
+ return err;
+}
+
+int CtMyProfileInputData::getMessengerIndexType(int emailType)
+{
+ switch (emailType) {
+ case CONTACTS_MESSENGER_TYPE_CUSTOM:
+ return CTTEXT_MESSENGER_TYPE_CUSTOM;
+ case CONTACTS_MESSENGER_TYPE_AIM:
+ return CTTEXT_MESSENGER_TYPE_AIM;
+ case CONTACTS_MESSENGER_TYPE_YAHOO:
+ return CTTEXT_MESSENGER_TYPE_YAHOO;
+ case CONTACTS_MESSENGER_TYPE_SKYPE:
+ return CTTEXT_MESSENGER_TYPE_SKYPE;
+ case CONTACTS_MESSENGER_TYPE_QQ:
+ return CTTEXT_MESSENGER_TYPE_QQ;
+ case CONTACTS_MESSENGER_TYPE_ICQ:
+ return CTTEXT_MESSENGER_TYPE_ICQ;
+ case CONTACTS_MESSENGER_TYPE_JABBER:
+ default:
+ return CTTEXT_MESSENGER_TYPE_JABBER;
+ }
+}
+
+int CtMyProfileInputData::getMessengerRetType(int indexType)
+{
+ int retType;
+
+ switch (indexType) {
+ case CTTEXT_MESSENGER_TYPE_CUSTOM:
+ retType = CONTACTS_MESSENGER_TYPE_CUSTOM;
+ break;
+ case CTTEXT_MESSENGER_TYPE_AIM:
+ retType = CONTACTS_MESSENGER_TYPE_AIM;
+ break;
+ case CTTEXT_MESSENGER_TYPE_YAHOO:
+ retType = CONTACTS_MESSENGER_TYPE_YAHOO;
+ break;
+ case CTTEXT_MESSENGER_TYPE_SKYPE:
+ retType = CONTACTS_MESSENGER_TYPE_SKYPE;
+ break;
+ case CTTEXT_MESSENGER_TYPE_QQ:
+ retType = CONTACTS_MESSENGER_TYPE_QQ;
+ break;
+ case CTTEXT_MESSENGER_TYPE_ICQ:
+ retType = CONTACTS_MESSENGER_TYPE_ICQ;
+ break;
+ case CTTEXT_MESSENGER_TYPE_JABBER:
+ default:
+ retType = CONTACTS_MESSENGER_TYPE_JABBER;
+ break;
+ }
+
+ return retType;
+}
+
+const char* CtMyProfileInputData::getMessengerMessenger(contacts_record_h record)
+{
+ WHIT();
+ int err = CONTACTS_ERROR_NONE;
+ char *messenger = NULL;
+ const char *result = NULL;
+
+ err = contacts_record_get_str_p(record, _contacts_messenger.im_id, &messenger);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_get_str_p() Failed(%d)", err);
+
+ result = messenger;
+ return result;
+}
+
+int CtMyProfileInputData::getMessengerType(contacts_record_h record)
+{
+ WHIT();
+ int err = CONTACTS_ERROR_NONE;
+ int type = 0;
+
+ err = contacts_record_get_int(record, _contacts_messenger.type, &type);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, 0, "contacts_record_get_int() Failed(%d)", err);
+
+ return type;
+}
+
+void CtMyProfileInputData::getMessengerTypeStr(contacts_record_h record, int indexType, std::string &typeString)
+{
+ WHIT();
+ const char* typeStr = NULL;
+
+ if (indexType == CONTACTS_MESSENGER_TYPE_CUSTOM) {
+ typeStr = getDataTypeCustom(record, _contacts_messenger.label);
+ }
+ else if (indexType == CONTACTS_MESSENGER_TYPE_AIM) {
+ typeStr = V_("IDS_PB_OPT_AIM");
+ }
+ else if (indexType == CONTACTS_MESSENGER_TYPE_YAHOO) {
+ typeStr = V_("IDS_PB_OPT_YAHOO_E");
+ }
+ else if (indexType == CONTACTS_MESSENGER_TYPE_SKYPE) {
+ typeStr = V_("IDS_PB_BODY_SKYPE");
+ }
+ else if (indexType == CONTACTS_MESSENGER_TYPE_QQ) {
+ typeStr = V_("IDS_PB_OPT_QQ");
+ }
+ else if (indexType == CONTACTS_MESSENGER_TYPE_GOOGLE) {
+ typeStr = V_("IDS_PB_OPT_HANGOUTS");
+ }
+ else if (indexType == CONTACTS_MESSENGER_TYPE_ICQ) {
+ typeStr = V_("IDS_PB_OPT_ICQ");
+ }
+ else if (indexType == CONTACTS_MESSENGER_TYPE_JABBER) {
+ typeStr = V_("IDS_PB_OPT_JABBER");
+ }
+
+ char *result = elm_entry_utf8_to_markup(typeStr);
+ if (result) {
+ typeString = result;
+ free(result);
+ }
+}
+
+int CtMyProfileInputData::getNextMessengerType()
+{
+ int i;
+ int messengerType;
+ int indexType;
+ int index = 0;
+ int err = CONTACTS_ERROR_NONE;
+ int used[CTTEXT_TYPE_OTHER+1] = {0};
+ contacts_record_h record = NULL;
+ while (CONTACTS_ERROR_NONE == contacts_record_get_child_record_at_p(__contactRecord, _contacts_my_profile.messenger, index++, &record)) {
+ err = contacts_record_get_int(record, _contacts_messenger.type, &messengerType);
+ if (CONTACTS_ERROR_NONE != err) {
+ WERROR("contacts_record_get_int() Failed(%d)", err);
+ continue;
+ }
+ indexType = getMessengerIndexType(messengerType);
+ used[indexType] = 1;
+ }
+
+ for (i=CTTEXT_MESSENGER_TYPE_AIM;i<=CTTEXT_MESSENGER_TYPE_JABBER;i++) {
+ if (0 == used[i]) {
+ return getMessengerRetType(i);
+ }
+ }
+
+ return CONTACTS_MESSENGER_TYPE_CUSTOM;
+
+}
+
+int CtMyProfileInputData::removeMessenger(contacts_record_h record)
+{
+ WHIT();
+ int err = CONTACTS_ERROR_NONE;
+
+ err = contacts_record_remove_child_record(__contactRecord, _contacts_my_profile.messenger, record);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_remove_child_record() Failed(%d)", err);
+
+ return err;
+}
+
+Eina_List* CtMyProfileInputData::getWebsiteList()
+{
+ WHIT();
+ return __getChildDataList(__contactRecord, _contacts_my_profile.url);
+}
+
+contacts_record_h CtMyProfileInputData::addWebsite(const char *url)
+{
+ WDEBUG("url %s", url);
+
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ err = contacts_record_create(_contacts_url._uri, &record);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_create() Failed(%d)", err);
+
+ setWebsiteWebsite(record, url);
+
+ err = contacts_record_add_child_record(__contactRecord, _contacts_my_profile.url, record);
+ if (CONTACTS_ERROR_NONE != err) {
+ WERROR("contacts_record_add_child_record() Failed(%d)", err);
+ contacts_record_destroy(record, true);
+ return NULL;
+ }
+ return record;
+}
+
+int CtMyProfileInputData::setWebsiteWebsite(contacts_record_h record, const char *url)
+{
+ WDEBUG("url %s", url);
+ int err = CONTACTS_ERROR_NONE;
+
+ if (url) {
+ err = contacts_record_set_str(record, _contacts_url.url, url);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+ }
+
+ return err;
+}
+
+const char* CtMyProfileInputData::getWebsiteWebsite(contacts_record_h record)
+{
+ WHIT();
+ int err = CONTACTS_ERROR_NONE;
+ char *url = NULL;
+ const char *result = NULL;
+
+ err = contacts_record_get_str_p(record, _contacts_url.url, &url);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_get_str_p() Failed(%d)", err);
+
+ result = url;
+ return result;
+}
+
+int CtMyProfileInputData::removeWebsite(contacts_record_h record)
+{
+ WHIT();
+ int err = CONTACTS_ERROR_NONE;
+
+ err = contacts_record_remove_child_record(__contactRecord, _contacts_my_profile.url, record);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_remove_child_record() Failed(%d)", err);
+
+ return err;
+}
+
+Eina_List* CtMyProfileInputData::getEventList()
+{
+ WHIT();
+ return __getChildDataList(__contactRecord, _contacts_my_profile.event);
+}
+
+contacts_record_h CtMyProfileInputData::addEvent(int date)
+{
+ WDEBUG("date %d", date);
+
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ err = contacts_record_create(_contacts_event._uri, &record);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_create() Failed(%d)", err);
+
+ setEventEvent(record, date);
+ setEventType(record, getNextEventType(), NULL);
+
+ err = contacts_record_add_child_record(__contactRecord, _contacts_my_profile.event, record);
+ if (CONTACTS_ERROR_NONE != err) {
+ WERROR("contacts_record_add_child_record() Failed(%d)", err);
+ contacts_record_destroy(record, true);
+ return NULL;
+ }
+ return record;
+}
+
+int CtMyProfileInputData::setEventEvent(contacts_record_h record, int date)
+{
+ WDEBUG("date %d", date);
+ int err = CONTACTS_ERROR_NONE;
+
+ if (date > 0) {
+ err = contacts_record_set_int(record, _contacts_event.date, date);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_int() Failed(%d)", err);
+ }
+ return err;
+}
+
+int CtMyProfileInputData::setEventType(contacts_record_h record, int type, char *customStr)
+{
+ WDEBUG("type %d", type);
+ int err = CONTACTS_ERROR_NONE;
+
+ if (type >= 0) {
+ err = contacts_record_set_int(record, _contacts_event.type, type);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+ }
+ if (customStr) {
+ err = contacts_record_set_str(record, _contacts_event.label, customStr);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_set_str() Failed(%d)", err);
+ }
+
+ return err;
+}
+
+int CtMyProfileInputData::getEventEvent(contacts_record_h record)
+{
+ WHIT();
+ int err = CONTACTS_ERROR_NONE;
+ int date = 0;
+
+ err = contacts_record_get_int(record, _contacts_event.date, &date);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, 0, "contacts_record_get_int() Failed(%d)", err);
+
+ return date;
+}
+
+int CtMyProfileInputData::getEventType(contacts_record_h record)
+{
+ WHIT();
+ int err = CONTACTS_ERROR_NONE;
+ int type = 0;
+
+ err = contacts_record_get_int(record, _contacts_event.type, &type);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, 0, "contacts_record_get_int() Failed(%d)", err);
+
+ return type;
+}
+
+void CtMyProfileInputData::getEventTypeStr(contacts_record_h record, int eventType, std::string &typeString)
+{
+ WHIT();
+ const char* typeStr = NULL;
+
+ if (eventType == CONTACTS_EVENT_TYPE_CUSTOM) {
+ typeStr = getDataTypeCustom(record, _contacts_event.label);
+ }
+ else if (eventType == CONTACTS_EVENT_TYPE_BIRTH) {
+ typeStr = V_("IDS_PB_OPT_BIRTHDAY");
+ }
+ else if (eventType == CONTACTS_EVENT_TYPE_ANNIVERSARY) {
+ typeStr = V_("IDS_PB_OPT_ANNIVERSARY_ABB");
+ }
+ else {
+ typeStr = V_("IDS_PB_OPT_OTHER");
+ }
+
+ char *result = elm_entry_utf8_to_markup(typeStr);
+ if (result) {
+ typeString = result;
+ free(result);
+ }
+}
+
+int CtMyProfileInputData::getNextEventType()
+{
+ int eventType;
+ int index = 0;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+ bool usedBirthday = false;
+
+ while (CONTACTS_ERROR_NONE == contacts_record_get_child_record_at_p(__contactRecord, _contacts_my_profile.event, index++, &record)) {
+ err = contacts_record_get_int(record, _contacts_event.type, &eventType);
+ if (CONTACTS_ERROR_NONE != err) {
+ WERROR("contacts_record_get_int() Failed(%d)", err);
+ continue;
+ }
+ if (CONTACTS_EVENT_TYPE_BIRTH == eventType) {
+ usedBirthday = true;
+ break;
+ }
+ }
+
+ if (usedBirthday)
+ return CONTACTS_EVENT_TYPE_ANNIVERSARY;
+
+ return CONTACTS_EVENT_TYPE_BIRTH;
+
+}
+
+int CtMyProfileInputData::removeEvent(contacts_record_h record)
+{
+ WHIT();
+ int err = CONTACTS_ERROR_NONE;
+
+ err = contacts_record_remove_child_record(__contactRecord, _contacts_my_profile.event, record);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, err, "contacts_record_remove_child_record() Failed(%d)", err);
+
+ return err;
+}
+
+void CtMyProfileInputData::__removeEmptyFiedls()
+{
+ removeEmptyFieldRecord(_contacts_my_profile.number, _contacts_number.number);
+ removeEmptyFieldRecord(_contacts_my_profile.email, _contacts_email.email);
+ removeEmptyFieldRecord(_contacts_my_profile.address, _contacts_address.street);
+ removeEmptyFieldRecord(_contacts_my_profile.url, _contacts_url.url);
+ removeEmptyFieldRecord(_contacts_my_profile.messenger, _contacts_messenger.im_id);
+ removeEmptyFieldRecord(_contacts_my_profile.note, _contacts_note.note);
+}
+
+int CtMyProfileInputData::insertContact(int *contactId)
+{
+ WHIT();
+ return contacts_db_insert_record(__contactRecord, contactId);
+}
+
+int CtMyProfileInputData::updateContact()
+{
+ WHIT();
+ return contacts_db_update_record(__contactRecord);
+}
+
+int CtMyProfileInputData::getContactId()
+{
+ WHIT();
+ return __contactId;
+}
+
+Eina_List* CtMyProfileInputData::__getChildDataList(contacts_record_h contactRecord, unsigned int propertyId)
+{
+ WDEBUG("propertyId %d", propertyId);
+ int index = 0;
+// Eina_List *l;
+ Eina_List *dataRecordList = NULL;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h dataRecord = NULL;
+// contacts_record_h dataRecordClone = NULL;
+
+ while (CONTACTS_ERROR_NONE == contacts_record_get_child_record_at_p(contactRecord, propertyId, index++, &dataRecord)) {
+ if (CONTACTS_ERROR_NONE != err) {
+ WERROR("contacts_record_get_str_p() Failed(%d)", err);
+ break;
+ }
+
+ //err = contacts_record_clone(dataRecord, &dataRecordClone);
+ //if (CONTACTS_ERROR_NONE != err) {
+ // WERROR("contacts_list_get_current_record_p() Failed(%d)", err);
+ // break;
+ //}
+ dataRecordList = eina_list_append(dataRecordList, dataRecord);
+ }
+
+ return dataRecordList;
+}
+
+void CtMyProfileInputData::setPreferenceCreateFirst(bool isFirst)
+{
+ WHIT();
+}
+
+int CtMyProfileInputData::getAddressbookId()
+{
+ WHIT();
+ return 0;
+}
+
+const char* CtMyProfileInputData::getAddressbookName()
+{
+ WHIT();
+ return NULL;
+}
+
+const char* CtMyProfileInputData::getUserName()
+{
+ WHIT();
+ return NULL;
+}
+
+void CtMyProfileInputData::setAddressbookInfo(int addressbookId)
+{
+ WHIT();
+}
+
+Eina_List* CtMyProfileInputData::getRelationshipList()
+{
+ WHIT();
+ return NULL;
+}
+
+contacts_record_h CtMyProfileInputData::addRelationship(const char *relationship)
+{
+ WHIT();
+ return NULL;
+}
+
+int CtMyProfileInputData::setRelationshipRelationship(contacts_record_h record, const char *relationship)
+{
+ WHIT();
+ return 0;
+}
+
+int CtMyProfileInputData::setRelationshipType(contacts_record_h record, int type, const char *customStr)
+{
+ WHIT();
+ return 0;
+}
+
+const char* CtMyProfileInputData::getRelationshipRelationship(contacts_record_h record)
+{
+ WHIT();
+ return NULL;
+}
+
+int CtMyProfileInputData::getRelationshipType(contacts_record_h record)
+{
+ WHIT();
+ return 0;
+}
+
+void CtMyProfileInputData::getRelationshipTypeStr(contacts_record_h record, int indexType, std::string &typeString)
+{
+ WHIT();
+}
+
+int CtMyProfileInputData::getNextRelationshipType()
+{
+ WHIT();
+ return 0;
+}
+
+int CtMyProfileInputData::removeRelationship(contacts_record_h record)
+{
+ WHIT();
+ return 0;
+}
+
+contacts_record_h CtMyProfileInputData::getDefaultEmail()
+{
+ WHIT();
+ return NULL;
+}
+
+bool CtMyProfileInputData::checkChangedTypeIsDeleted()
+{
+ WHIT();
+ return false;
+}
+
+void CtMyProfileInputData::attachListener(ICtChangeListener* listener)
+{
+ WHIT();
+}
+
+void CtMyProfileInputData::detachListener()
+{
+ WHIT();
+}
+
+void CtMyProfileInputData::removeEmptyFieldRecord(int property_id, int property_id_str)
+{
+ int i;
+ int count;
+ char *str1 = NULL;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+ bool empty = false;
+
+ err = contacts_record_get_child_record_count(__contactRecord, property_id, &count);
+ WPRET_M(CONTACTS_ERROR_NONE != err, "contacts_record_get_child_record_count() Failed(%d)", err);
+
+ for (i=count-1;0<=i;i--) {
+ empty = false;
+ err = contacts_record_get_child_record_at_p(__contactRecord, property_id, i, &record);
+ if (CONTACTS_ERROR_NONE != err) {
+ WERROR("contacts_record_get_child_record_at_p() Failed(%d)", err);
+ continue;
+ }
+
+ err = contacts_record_get_str(record, property_id_str, &str1);
+ WPRET_M(CONTACTS_ERROR_NONE != err, "contacts_record_get_str() Failed(%d)", err);
+ if (CONTACTS_ERROR_NONE != err || NULL == str1 || '\0' == *str1) {
+ empty = true;
+ }
+ free(str1);
+
+ if (empty) {
+ err = contacts_record_remove_child_record(__contactRecord, property_id, record);
+ WPRET_M(CONTACTS_ERROR_NONE != err, "contacts_record_remove_child_record() Failed(%d)", err);
+ err = contacts_record_destroy(record, true);
+ WPRET_M(CONTACTS_ERROR_NONE != err, "contacts_record_destroy() Failed(%d)", err);
+ }
+ }
+}