diff options
Diffstat (limited to 'lib/list')
-rwxr-xr-x | lib/list/CMakeLists.txt | 18 | ||||
-rw-r--r-- | lib/list/contacts-list-efl.xml | 35 | ||||
-rwxr-xr-x | lib/list/ct-group-edit-view.h | 23 | ||||
-rwxr-xr-x | lib/list/ct-group-view.cpp | 1696 | ||||
-rwxr-xr-x | lib/list/ct-list-contact-view.cpp | 1264 | ||||
-rwxr-xr-x | lib/list/ct-list-contact-view.h | 31 | ||||
-rwxr-xr-x | lib/list/ct-list-edit-view.cpp | 1102 | ||||
-rwxr-xr-x | lib/list/ct-list-edit-view.h | 45 | ||||
-rwxr-xr-x | lib/list/ct-list-main.cpp | 994 | ||||
-rwxr-xr-x | lib/list/ct-list-utils.cpp | 1153 | ||||
-rwxr-xr-x | lib/list/ct-list-utils.h | 59 | ||||
-rwxr-xr-x | lib/list/ct-list-view-ug.cpp | 888 | ||||
-rwxr-xr-x | lib/list/ct-list-view-ug.h | 31 | ||||
-rwxr-xr-x | lib/list/include/ct-list.h | 320 |
14 files changed, 0 insertions, 7659 deletions
diff --git a/lib/list/CMakeLists.txt b/lib/list/CMakeLists.txt deleted file mode 100755 index ec71fa7..0000000 --- a/lib/list/CMakeLists.txt +++ /dev/null @@ -1,18 +0,0 @@ -LINK_DIRECTORIES(${CMAKE_BINARY_DIR}) - -SET(TARGET ${CT_LIST}) - -FILE(GLOB SRCS *.cpp) - -ADD_LIBRARY(${TARGET} SHARED ${SRCS}) -SET_TARGET_PROPERTIES(${TARGET} PROPERTIES SOVERSION ${VERSION_MAJOR}) -SET_TARGET_PROPERTIES(${TARGET} PROPERTIES VERSION ${VERSION}) - -SET_TARGET_PROPERTIES(${TARGET} PROPERTIES COMPILE_FLAGS ${EXTRA_CFLAGS}) -TARGET_LINK_LIBRARIES(${TARGET} ${COMMON_LIB} ${ug_pkgs_LDFLAGS} ${CT_DETAILS}) - -ADD_DEPENDENCIES(${TARGET} contacts_edj_build contacts_theme_build group_theme_edj_build image_layout_edj_build list_theme_edj_build contact_button_edj_build) - -INSTALL(TARGETS ${TARGET} DESTINATION ${UGLIBDIR}) - -INSTALL(FILES ${CMAKE_BINARY_DIR}/lib/list/contacts-list-efl.xml DESTINATION "/usr/share/packages") diff --git a/lib/list/contacts-list-efl.xml b/lib/list/contacts-list-efl.xml deleted file mode 100644 index 728ec36..0000000 --- a/lib/list/contacts-list-efl.xml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<manifest xmlns="http://tizen.org/ns/packages" package="contacts-list-efl" version="0.1.0-0" install-location="internal-only"> - <label>contacts-list</label> - <author email="ensung.park@samsung.com" href="www.samsung.com">ensung park</author> - <description>contacts-list-efl Application</description> - <ui-application appid="contacts-list-efl" exec="/usr/ug/bin/contacts-list-efl" nodisplay="true" multiple="true" type="capp" taskmanage="false"> - <icon>org.tizen.contacts.png</icon> - <label>contacts-list</label> - <label xml:lang="en-us">contacts-list</label> - <label xml:lang="nl-nl">contacts-list</label> - <label xml:lang="de-de">contacts-list</label> - <label xml:lang="en-gb">contacts-list</label> - <label xml:lang="zh-hk">contacts-list</label> - <label xml:lang="zh-cn">contacts-list</label> - <label xml:lang="ru-ru">contacts-list</label> - <label xml:lang="zh-tw">contacts-list</label> - <label xml:lang="ja-jp">contacts-list</label> - <label xml:lang="es-es">contacts-list</label> - <label xml:lang="el-gr">contacts-list</label> - <label xml:lang="it-it">contacts-list</label> - <label xml:lang="tr-tr">contacts-list</label> - <label xml:lang="pt-pt">contacts-list</label> - <label xml:lang="fr-fr">contacts-list</label> - <label xml:lang="ko-kr">contacts-list</label> - <application-service> - <operation name="http://tizen.org/ns/packages"/> - </application-service> - <application-service> - <operation name="http://tizen.org/appcontrol/operation/social/pick"/> - </application-service> - <application-service> - <operation name="http://tizen.org/appcontrol/operation/social/choose"/> - </application-service> - </ui-application> -</manifest> diff --git a/lib/list/ct-group-edit-view.h b/lib/list/ct-group-edit-view.h deleted file mode 100755 index 5426186..0000000 --- a/lib/list/ct-group-edit-view.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.1 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * 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. - */ - -#ifndef __CT_GROUP_EDIT_VIEW_H__ -#define __CT_GROUP_EDIT_VIEW_H__ - -void ctui_gedit_push_view(Evas_Object *win, Evas_Object *navi, - ct_group_list *info, ct_group_rename_update_cb fn, void *fn_data); - -#endif /* __CT_GROUP_EDIT_VIEW_H__ */ diff --git a/lib/list/ct-group-view.cpp b/lib/list/ct-group-view.cpp deleted file mode 100755 index ee702be..0000000 --- a/lib/list/ct-group-view.cpp +++ /dev/null @@ -1,1696 +0,0 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.1 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * 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 <app.h> -#include <vconf.h> -#include <vconf-keys.h> -#include <fcntl.h> -#include <app_service.h> -#include <Ecore_X.h> -#include <ui-gadget-module.h> -#include <account.h> -#include <efl_assist.h> -#include "phone.h" -#include "ct-list.h" -#include "ct-group.h" -#include "ct-list-utils.h" -#include "ct-list-contact-view.h" -#include "ViewManager.h" - -//TODO: use it instead of magic-strings across the project -#define KEY_GROUP_DATA "cgroup_d" -#define FRIENDS "friends" -#define FAMILY "family" -#define COWORKERS "coworkers" -#define QUICK_MENU_SIZE 160 -#define PART_ICON "icon" - - -enum -{ - GROUP_MODE_NORMAL, - GROUP_MODE_EDIT, -}; - -typedef void (*quick_menu_cb)(void *data, Evas_Object *obj, void *event_info); - -typedef struct : public Common::View -{ - Evas_Object *gengrid; - Ecore_Timer *update_timer; - Ecore_Timer *waiting_timer; - Evas_Object *ctrl_button; - Evas_Object *delete_button; - bool is_background; - int count; - Evas_Object *quick_menu_popup; - int ug_request; - int ug_cnt_max; - int group_mode; - void *crop_ug; - char *ug_data; - bool need_update; -} ct_group_data; - -enum GROUP_ITC_TYPE -{ - GROUP_ITC_1IMAGE, - GROUP_ITC_2IMAGE, - GROUP_ITC_3IMAGE, - GROUP_ITC_6IMAGE, - GROUP_ITC_GROUP_TITLE, - GROUP_ITC_MAX, -}; - -static Elm_Gengrid_Item_Class group_itcs[] = -{ - { - 0, 0, 1, "groupitem.1image", NULL, NULL, - {NULL, NULL, NULL, NULL}, - }, - { - 0, 0, 1, "groupitem.2image", NULL, NULL, - {NULL, NULL, NULL, NULL}, - }, - { - 0, 0, 1, "groupitem.3image", NULL, NULL, - {NULL, NULL, NULL, NULL}, - }, - { - 0, 0, 1, "groupitem.6image", NULL, NULL, - {NULL, NULL, NULL, NULL}, - }, - { - 0, 0, 1, "group_index", NULL, NULL, - {NULL, NULL, NULL, NULL}, - }, -}; - -static Eina_Bool group_changed(void *user_data); - -static void group_gl_del(void *data, Evas_Object *obj) -{ - PH_TRACE; - int i; - ct_group_list *info = (ct_group_list *) data; - p_retm_if(NULL == info, "data is NULL"); - - for (i = 0; i < 6; i++) - free(info->img_list[i]); - free(info->img); - free(info->name); - free(info); -} - -static char* group_gl_label_get(void *data, Evas_Object *obj, const char *part) -{ - PH_TRACE; - char buf[PH_TEXT_MAX_LEN]; - ct_group_list *info = (ct_group_list *) data; - ct_group_data *cgroup_d; - - p_retvm_if(NULL == data, NULL, "The parameter(data) is NULL"); - - cgroup_d = (ct_group_data *) evas_object_data_get(obj, KEY_GROUP_DATA); - p_retvm_if(NULL == cgroup_d, NULL, "evas_object_data_get() return NULL"); - - if ((0 == strcmp(part, "text.name") - && cgroup_d->group_mode == GROUP_MODE_NORMAL) - || (0 == strcmp(part, "text.edit.name") - && cgroup_d->group_mode == GROUP_MODE_EDIT)) - { - if (info->name) - return strdup(info->name); - else - return strdup("Noname"); - } - else if ((0 == strcmp(part, "text.count") - && cgroup_d->group_mode == GROUP_MODE_NORMAL) - || (0 == strcmp(part, "text.edit.count") - && cgroup_d->group_mode == GROUP_MODE_EDIT)) - { - snprintf(buf, sizeof(buf), "%d", info->count); - return strdup(buf); - } - return NULL; -} - -static char* group_gl_index_label_get(void *data, Evas_Object *obj, - const char *part) -{ - PH_TRACE; - char *title = (char *) data; - - if (title && *title) - return strdup((const char *) data); - - return NULL; -} - -static void group_popup_hide_cb(void *data, Evas_Object *obj, void *event_info) -{ - PH_TRACE; - Evas_Object *icon; - Evas_Object *btn; - ct_group_data *cgroup_d = (ct_group_data *) data; - btn = (Evas_Object *) evas_object_data_get(obj, "expand_btn"); - if (btn) - { - icon = elm_object_part_content_get(btn, PART_ICON); - elm_image_file_set(icon, CTUI_IMG_ICON_EXPAND_OPENED, NULL); - elm_object_part_content_set(btn, PART_ICON, icon); - } - evas_object_del(cgroup_d->popup); - cgroup_d->popup = NULL; -} - -static void group_destroy_child_ug(void *data) -{ - PH_TRACE; - ct_group_data *cgroup_d = (ct_group_data *) data; - cgroup_d->child_ug = NULL; -} - -API void phone_group_message_result_cb(void *data, int *list, int cnt) -{ - PH_TRACE; - service_h service; - ui_gadget_h ug; - struct ug_cbs cbs = { 0 }; - struct ug_priv_data *priv_data; - ct_group_data *cgroup_d = (ct_group_data *) data; - char buf[PH_TEXT_MAX_LEN] = { '\0' }; - char temp[PH_TEXT_MAX_LEN + 1] = { '\0' }; - int ret, i; - contacts_record_h number_record = NULL; - char *number; - - p_retm_if(NULL == cgroup_d, "parameter(cgroup_d) is NULL"); - p_retm_if(0 == cnt || NULL == list, "parameter(list) is NULL"); - - priv_data = (ug_priv_data *) calloc(1, sizeof(struct ug_priv_data)); - p_retm_if(NULL == priv_data, "calloc is failed"); - - priv_data->destroy_cb = group_destroy_child_ug; - priv_data->cb_param = cgroup_d; - - service_create(&service); - - for (i = 0; i < cnt; i++) - { - ret = contacts_db_get_record(_contacts_number._uri, list[i], - &number_record); - if (CONTACTS_ERROR_NONE != ret) - { - ERR("contacts_db_get_record() Failed(%d)", ret); - continue; - } - - contacts_record_get_str_p(number_record, _contacts_number.number, - &number); - if (number && *number) - { - if (*buf) - snprintf(temp, sizeof(temp), "%s", buf); - if (*temp) - snprintf(buf, sizeof(buf), "%s,%s", temp, number); - else - snprintf(buf, sizeof(buf), "%s", number); - } - contacts_record_destroy(number_record, true); - } - if (*buf) - { - PH_DBG("number %s", buf); - service_add_extra_data(service, "TO", buf); - } - cbs.priv = priv_data; - cbs.layout_cb = ug_common_layout_cb; - cbs.result_cb = NULL; - cbs.destroy_cb = ug_common_destroy_cb; - - ug = ug_create(cgroup_d->ug, MSG_COMPOSER_UG, UG_MODE_FULLVIEW, service, - &cbs); - service_destroy(service); - - if (ug == NULL) - { - free(priv_data); - ERR("%s ug_create is failed", MSG_COMPOSER_UG); - } - evas_object_smart_callback_del(cgroup_d->navi, "transition,finished", - ctui_list_edit_navi_pop); - cgroup_d->child_ug = ug; -} - -API void phone_group_email_result_cb(void *data, int *list, int cnt) -{ - PH_TRACE; - service_h service; - Ecore_X_Window win_id; - ct_group_data *cgroup_d = (ct_group_data *) data; - int ret, i; - char *email; - contacts_record_h email_record = NULL; - char buf[PH_TEXT_MAX_LEN + 1] = { '\0' }; - char temp[PH_TEXT_MAX_LEN + 1] = { '\0' }; - - p_retm_if(NULL == cgroup_d, "parameter(cgroup_d) is NULL"); - p_retm_if(0 == cnt || NULL == list, "parameter(list) is NULL"); - - win_id = elm_win_xwindow_get(cgroup_d->win); - service_create(&service); - service_set_app_id(service, EMAIL_COMPOSER_PKG); - service_set_window(service, win_id); - - for (i = 0; i < cnt; i++) - { - ret = contacts_db_get_record(_contacts_email._uri, list[i], - &email_record); - if (CONTACTS_ERROR_NONE != ret) - { - ERR("contacts_db_get_record() Failed(%d)", ret); - continue; - } - contacts_record_get_str_p(email_record, _contacts_email.email, &email); - if (email && *email) - { - if (*buf) - snprintf(temp, sizeof(temp), "%s", buf); - - if (*temp) - snprintf(buf, sizeof(buf), "%s;%s", temp, email); - else - snprintf(buf, sizeof(buf), "%s", email); - } - contacts_record_destroy(email_record, true); - } - if (*buf) - { - PH_DBG("email %s", buf); - service_add_extra_data(service, SERVICE_DATA_TO, buf); - } - - service_send_launch_request(service, NULL, NULL); - service_destroy(service); -} - -static void group_notify_update(ct_group_data *cgroup_d) -{ - PH_TRACE; - if (GROUP_MODE_NORMAL == cgroup_d->group_mode) - phone_hide_notify(cgroup_d->layout); - else - { - if (0 < cgroup_d->count) - { - char buf[PH_TEXT_MAX_LEN + 1]; - snprintf(buf, sizeof(buf), "%s (%d)", S_(PH_SYS_POP_SELECTED), - cgroup_d->count); - phone_show_notify(cgroup_d->layout, buf); - } - else - phone_show_notify(cgroup_d->layout, - T_(CT_GET_TEXT_BASE_OP, CTTEXT_SELECT_GROUP)); - } -} - -static void group_edit_result_cb(int grp_id, void *data, bool changed) -{ - PH_TRACE; - ct_group_data *cgroup_d = (ct_group_data *) data; - group_notify_update((ct_group_data *) data); - - if (changed) - { - cgroup_d->group_mode = GROUP_MODE_NORMAL; - phone_hide_notify(cgroup_d->layout); - phone_group_set_navi(cgroup_d->layout); - } -} - -static void group_edit_btn_cb(void *data, Evas_Object *obj, void *event_info) -{ - PH_TRACE; - ct_group_data *cgroup_d; - ct_group_list *info = (ct_group_list *) data; - - cgroup_d = (ct_group_data *) evas_object_data_get(elm_object_item_widget_get(info->item), - "cgroup_d"); - p_retm_if(NULL == cgroup_d, "evas_object_data_get() return NULL"); - - phone_hide_notify(cgroup_d->layout); - ctui_create_group_input_view(cgroup_d->win, cgroup_d->navi, (ct_group_list *) data, - group_edit_result_cb, cgroup_d); -} - -static void group_navi_item_update(ct_group_data *cgroup_d) -{ - PH_TRACE; - if (0 < cgroup_d->count) - elm_object_disabled_set(cgroup_d->delete_button, EINA_FALSE); - else - elm_object_disabled_set(cgroup_d->delete_button, EINA_TRUE); -} - -static void group_check_changed_cb(void *data, Evas_Object *obj, - void *event_info) -{ - PH_TRACE; - ct_group_list *info = (ct_group_list *) data; - ct_group_data *cgroup_d; - p_retm_if(NULL == data, "data is NULL"); - - cgroup_d = (ct_group_data *) evas_object_data_get(elm_object_item_widget_get(info->item), - "cgroup_d"); - p_retm_if(NULL == cgroup_d, "evas_object_data_get() return NULL"); - - if (EINA_TRUE == info->selected && false == info->is_read_only) - cgroup_d->count++; - else - cgroup_d->count--; - group_navi_item_update(cgroup_d); - group_notify_update(cgroup_d); -} - -static void group_quick_ctxpopup_dismissed_cb(void *data, Evas_Object *obj, - void *event_info) -{ - PH_TRACE; - ct_group_data *cgroup_d = (ct_group_data *) data; - p_retm_if(NULL == data, "invalid data"); - Evas_Object *btn = obj; - p_retm_if(NULL == btn, "invalid btn"); - Evas_Object *icon = elm_object_part_content_get(btn, PART_ICON); - p_retm_if(NULL == icon, "invalid icon"); - elm_image_file_set(icon, CTUI_IMG_ICON_EXPAND_OPENED, NULL); - elm_object_part_content_set(btn, PART_ICON, icon); - evas_object_del(cgroup_d->quick_menu_popup); - cgroup_d->quick_menu_popup = NULL; -} - -static void group_quick_ctxpopup_hide_cb(void *data, Evas *e, Evas_Object *obj, - void *event_info) -{ - PH_TRACE; - Evas_Object *btn = (Evas_Object *) data; - p_retm_if(NULL == data, "invalid data"); - Evas_Object *icon = elm_object_part_content_get(btn, PART_ICON); - p_retm_if(NULL == icon, "invalid icon"); - elm_image_file_set(icon, CTUI_IMG_ICON_EXPAND_OPENED, NULL); - elm_object_part_content_set(btn, PART_ICON, icon); -} - -ct_list_data *create_group_list_date(Evas_Object *ctxpopup) -{ - PH_TRACE; - p_retv_if(NULL == ctxpopup, NULL); - ct_list_data *clist_d = (ct_list_data *) calloc(1, sizeof(ct_list_data)); - p_retv_if(NULL == clist_d, NULL); - Evas_Object * btn = (Evas_Object *)evas_object_data_get(ctxpopup, "quick_menu_button"); - ct_group_data * cgroup_d = (ct_group_data *)evas_object_data_get(ctxpopup, "cgroup_data"); - p_retv_if(NULL == cgroup_d,NULL); - group_quick_ctxpopup_dismissed_cb(cgroup_d, btn, NULL); - ct_group_list *info = (ct_group_list *)evas_object_data_get(ctxpopup, "group_list"); - p_retv_if(NULL == info, NULL); - - ph_view_info *view_info = (ph_view_info *) calloc(1, sizeof(ph_view_info)); - phone_set_view_info(view_info, cgroup_d->win, cgroup_d->navi, - cgroup_d->ug, cgroup_d->ug_request, cgroup_d->ug_cnt_max, - cgroup_d->ug_data); - - clist_d->win = view_info->win; - clist_d->navi = view_info->navi; - clist_d->ug = view_info->ug; - clist_d->ug_data = view_info->ug_data; - clist_d->ug_request = view_info->ug_request; - clist_d->base_ab = -1; - - clist_d->base_ab = info->id_ab; - clist_d->base_grp = info->id_grp; - clist_d->base_ab_mode = info->mode; - clist_d->title = SAFE_STRDUP(info->name); - - free(view_info); - return clist_d; -} - -static void list_email_group_btn_cb(void *data, Evas_Object *obj, void *event_info) -{ - PH_TRACE; - ct_list_data *clist_d = create_group_list_date(obj); - p_retm_if(NULL == clist_d, "clist_d is NULL"); - p_retm_if(NULL == evas_object_data_get(clist_d->navi, "cgroup_d"), " return NULL"); - - int list_op = 0; - if (-1 == clist_d->base_grp) - list_op = CT_GET_LIST_PERSON_HAD_EMAIL_OF_ADDRBOOK_ID; - else if (clist_d->base_grp) - list_op = CT_GET_LIST_PERSON_HAD_EMAIL_OF_GROUP_ID; - else - list_op = CT_GET_LIST_PERSON_NOT_ASSIGNED_HAD_EMAIL_OF_ADDRBOOK_ID; - - ctui_create_list_select_view(clist_d->navi, phone_group_email_result_cb, - evas_object_data_get(clist_d->navi, "cgroup_d"), list_op, - clist_d->base_ab, clist_d->base_grp, 0); - free(clist_d); -} - -static void list_message_group_btn_cb(void *data, Evas_Object *obj, void *event_info) -{ - PH_TRACE; - ct_list_data *clist_d = create_group_list_date(obj); - p_retm_if(NULL == clist_d, "clist_d is NULL"); - p_retm_if(NULL == evas_object_data_get(clist_d->navi, "cgroup_d"), " return NULL"); - - int list_op = 0; - if (-1 == clist_d->base_grp) - list_op = CT_GET_LIST_PERSON_HAD_NUMBER_OF_ADDRBOOK_ID; - else if (clist_d->base_grp) - list_op = CT_GET_LIST_PERSON_HAD_NUMBER_OF_GROUP_ID; - else - list_op = CT_GET_LIST_PERSON_NOT_ASSIGNED_HAD_NUMBER_OF_ADDRBOOK_ID; - - ctui_create_list_select_view(clist_d->navi, phone_group_message_result_cb, - evas_object_data_get(clist_d->navi, "cgroup_d"), list_op, - clist_d->base_ab, clist_d->base_grp, 0); - free(clist_d); -} - -void item_new(Evas_Object *ctxpopup, const char * text, const char * icon, quick_menu_cb group_quick_menu) -{ - PH_TRACE; - if(!ctxpopup) - { - return; - } - Evas_Object *layout = elm_layout_add(ctxpopup); - evas_object_propagate_events_set(layout, EINA_FALSE); - elm_layout_file_set(layout, CONTACT_BUTTON_THEME_EDJ, "quick.munu"); - evas_object_size_hint_min_set(layout, QUICK_MENU_SIZE, QUICK_MENU_SIZE); - Evas_Object *exp_icon = elm_icon_add(layout); - elm_image_file_set(exp_icon, icon, NULL); - elm_object_part_content_set(layout, PART_ICON, exp_icon); - elm_image_resizable_set(exp_icon, EINA_FALSE, EINA_FALSE); - evas_object_show(layout); - elm_object_part_text_set(layout,"elm.text.quick", text); - elm_ctxpopup_item_append(ctxpopup, NULL, layout, group_quick_menu, NULL); -} - -static void group_quick_menu(void *data, Evas *e, Evas_Object *obj, - void *event_info) -{ - PH_TRACE; - ct_group_list *info = (ct_group_list *)evas_object_data_get(obj, "group_list"); - ct_group_data *cgroup_d = (ct_group_data *)data; - p_retm_if(NULL == cgroup_d, "invalid cgroup_d"); - p_retm_if(NULL == data, "invalid data"); - const char *file_icon = NULL; - const char *file_group = NULL; - Evas_Object *icon = elm_object_part_content_get(obj, PART_ICON); - elm_image_file_get(icon, &file_icon, &file_group); - p_retm_if(NULL == file_icon, "elm_image_file_set() return NULL"); - - if (0 == strcmp(file_icon, CTUI_IMG_ICON_EXPAND_CLOSED)) - { - elm_image_file_set(icon, CTUI_IMG_ICON_EXPAND_OPENED, NULL); - elm_object_part_content_set(obj, PART_ICON, icon); - } - else - { - elm_image_file_set(icon, CTUI_IMG_ICON_EXPAND_CLOSED, NULL); - elm_object_part_content_set(obj, PART_ICON, icon); - - if (cgroup_d->quick_menu_popup) - { - evas_object_del(cgroup_d->quick_menu_popup); - cgroup_d->quick_menu_popup = NULL; - } - cgroup_d->quick_menu_popup = elm_ctxpopup_add(cgroup_d->navi); - evas_object_propagate_events_set(cgroup_d->quick_menu_popup, EINA_FALSE); - int rotate = (int) evas_object_data_get(cgroup_d->navi, "phone_rotate"); - evas_object_data_set(cgroup_d->quick_menu_popup, "cgroup_data", cgroup_d); - evas_object_data_set(cgroup_d->quick_menu_popup, "group_list", info); - evas_object_data_set(cgroup_d->quick_menu_popup, "quick_menu_button", obj); - - if (0 == rotate || 180 == rotate) - { - elm_ctxpopup_direction_priority_set(cgroup_d->quick_menu_popup, - ELM_CTXPOPUP_DIRECTION_DOWN, ELM_CTXPOPUP_DIRECTION_UP, - ELM_CTXPOPUP_DIRECTION_LEFT, ELM_CTXPOPUP_DIRECTION_RIGHT); - } - - evas_object_smart_callback_add(cgroup_d->quick_menu_popup, "dismissed", - group_quick_ctxpopup_dismissed_cb, cgroup_d); - evas_object_event_callback_add(cgroup_d->quick_menu_popup, EVAS_CALLBACK_HIDE, - group_quick_ctxpopup_hide_cb, obj); - - elm_ctxpopup_horizontal_set(cgroup_d->quick_menu_popup, EINA_TRUE); - item_new(cgroup_d->quick_menu_popup, T_(PH_GET_TEXT_BASIC, PHTEXT_EMAIL), IMG_MESSAGE_ICON, list_email_group_btn_cb); - item_new(cgroup_d->quick_menu_popup, T_(PH_GET_TEXT_BASIC, PHTEXT_MESSAGE),PH_IMG_ICON_MESSAGE_PRESS, list_message_group_btn_cb); - - int x = 0; - int y = 0; - evas_pointer_canvas_xy_get(evas_object_evas_get(cgroup_d->navi), &x, &y); - evas_object_move(cgroup_d->quick_menu_popup, x, y); - evas_object_show(cgroup_d->quick_menu_popup); - } -} - -static Evas_Object* group_gl_content_get(void *data, Evas_Object *obj, - const char *part) -{ - PH_TRACE; - Evas_Object *icon; - Evas_Object *button; - Evas_Object *check; - ct_group_data *cgroup_d; - ct_group_list *info = (ct_group_list *) data; - - cgroup_d = (ct_group_data *) evas_object_data_get(obj, "cgroup_d"); - p_retvm_if(NULL == cgroup_d, NULL, "evas_object_data_get() return NULL"); - - if (0 == strcmp(part, "swallow.icon")) - { - if (CT_UG_REQUEST_SELECT_GROUP == cgroup_d->ug_request - || CT_UG_REQUEST_SELECT_GROUP_ADD_TO_HOME - == cgroup_d->ug_request) - return NULL; - if (GROUP_MODE_NORMAL == cgroup_d->group_mode) - return NULL; - else if (info->id_grp) - { - button = elm_button_add(obj); - p_retvm_if(NULL == button, NULL, "elm_button_add() return NULL"); - evas_object_propagate_events_set(button, EINA_FALSE); - elm_object_style_set(button, "rename"); - evas_object_smart_callback_add(button, "clicked", group_edit_btn_cb, - info); - return button; - } - } - else if (0 == strncmp(part, "swallow.content", 15)) - { - int index = -1; - sscanf(part, "swallow.content%d", &index); - p_retvm_if(index<1 || 6<index, NULL, "index(%d) is out of range", - index); - - if (info->img && *info->img) - { - icon = elm_icon_add(obj); - p_retvm_if(NULL == icon, NULL, "elm_icon_add() return NULL"); - elm_image_file_set(icon, info->img, NULL); - evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_NONE, 1, - 1); - evas_object_size_hint_align_set(icon, 0.5, EVAS_HINT_FILL); - return icon; - } - else if (info->img_list[index - 1] && *info->img_list[index - 1]) - { - icon = elm_icon_add(obj); - p_retvm_if(NULL == icon, NULL, "elm_icon_add() return NULL"); - elm_image_file_set(icon, info->img_list[index - 1], NULL); - evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_NONE, 1, - 1); - evas_object_size_hint_align_set(icon, 0.5, EVAS_HINT_FILL); - return icon; - } - } - else if (0 == strcmp(part, "swallow.edit.icon") - && GROUP_MODE_EDIT == cgroup_d->group_mode) - { - if (CT_UG_REQUEST_SELECT_GROUP == cgroup_d->ug_request) - return NULL; - if (info->is_read_only == true) - { - check = elm_check_add(obj); - p_retvm_if(NULL == check, NULL, "elm_check_add() return NULL"); - evas_object_show(check); - elm_object_disabled_set(check, EINA_TRUE); - return check; - } - - check = elm_check_add(obj); - p_retvm_if(NULL == check, NULL, "elm_check_add() return NULL"); - evas_object_show(check); - evas_object_propagate_events_set(check, EINA_FALSE); - elm_check_state_pointer_set(check, &info->selected); - elm_check_state_set(check, info->selected); - evas_object_smart_callback_add(check, "changed", group_check_changed_cb, - info); - return check; - } - else if(0 == strcmp(part,"quick.menu.button") && GROUP_MODE_NORMAL == cgroup_d->group_mode) - { - Evas_Object *btn = elm_button_add(obj); - evas_object_data_set(btn, "group_list", info); - elm_object_style_set(btn, "transparency"); - Evas_Object *exp_icon = elm_icon_add(btn); - elm_image_file_set(exp_icon, CTUI_IMG_ICON_EXPAND_OPENED, NULL); - elm_object_part_content_set(btn, PART_ICON, exp_icon); - evas_object_propagate_events_set(btn, EINA_FALSE); - evas_object_event_callback_add(btn, EVAS_CALLBACK_MOUSE_UP, group_quick_menu, cgroup_d); - evas_object_show(btn); - return btn; - } - return NULL; -} - -static void __group_return_id(ui_gadget_h ug, int group_id) -{ - PH_TRACE; - service_h service = NULL; - char buf[16] = { 0, }; - - service_create(&service); - - if (group_id) - { - snprintf(buf, sizeof(buf), "%d", group_id); - service_add_extra_data(service, CT_UG_BUNDLE_RESULT_GROUP_ID, buf); - } - - PH_DBG("group_id=%d", group_id); - ug_send_result(ug, service); - - service_destroy(service); -} - -static void group_gl_sel(void *data, Evas_Object *obj, void *event_info) -{ - PH_TRACE; - Elm_Object_Item *item = (Elm_Object_Item *) event_info; - ct_group_data *cgroup_d = (ct_group_data *) data; - ct_group_list *info = (ct_group_list *) elm_object_item_data_get(item); - ph_view_info *view_info; - p_retm_if(NULL == info, "elm_object_item_data_get() return NULL"); - - elm_gengrid_item_selected_set(item, EINA_FALSE); - - if (CT_UG_REQUEST_SELECT_GROUP == cgroup_d->ug_request) - { - __group_return_id(cgroup_d->ug, info->id_grp); - ug_destroy_me(cgroup_d->ug); - cgroup_d->ug = NULL; - } - else if (GROUP_MODE_NORMAL == cgroup_d->group_mode) - { - view_info = (ph_view_info *) calloc(1, sizeof(ph_view_info)); - phone_set_view_info(view_info, cgroup_d->win, cgroup_d->navi, - cgroup_d->ug, cgroup_d->ug_request, cgroup_d->ug_cnt_max, - cgroup_d->ug_data); - - if (0 < info->id_grp) - ctui_list_create_contact_view_with_info(view_info, - CT_GET_LIST_PERSON_OF_GROUP_ID, info); - else - // not assigned - ctui_list_create_contact_view_with_info(view_info, - CT_GET_LIST_PERSON_NOT_ASSIGNED_OF_ADDRBOOK_ID, info); - free(view_info); - } - else - { - - if (info->is_read_only == true) - return; //skip default group - - info->selected = !info->selected; - elm_gengrid_item_update(info->item); - - if (EINA_TRUE == info->selected) - cgroup_d->count++; - else - cgroup_d->count--; - - group_navi_item_update(cgroup_d); - group_notify_update(cgroup_d); - } -} - -static void group_create_itcs() -{ - PH_TRACE; - group_itcs[GROUP_ITC_GROUP_TITLE].func.text_get = group_gl_index_label_get; - - group_itcs[GROUP_ITC_1IMAGE].func.text_get = group_gl_label_get; - group_itcs[GROUP_ITC_1IMAGE].func.content_get = group_gl_content_get; - group_itcs[GROUP_ITC_1IMAGE].func.del = group_gl_del; - - group_itcs[GROUP_ITC_2IMAGE].func.text_get = group_gl_label_get; - group_itcs[GROUP_ITC_2IMAGE].func.content_get = group_gl_content_get; - group_itcs[GROUP_ITC_2IMAGE].func.del = group_gl_del; - - group_itcs[GROUP_ITC_3IMAGE].func.text_get = group_gl_label_get; - group_itcs[GROUP_ITC_3IMAGE].func.content_get = group_gl_content_get; - group_itcs[GROUP_ITC_3IMAGE].func.del = group_gl_del; - - group_itcs[GROUP_ITC_6IMAGE].func.text_get = group_gl_label_get; - group_itcs[GROUP_ITC_6IMAGE].func.content_get = group_gl_content_get; - group_itcs[GROUP_ITC_6IMAGE].func.del = group_gl_del; -} - -static Elm_Gengrid_Item_Class* group_get_gengrid_item_class(const char *img, - int count) -{ - PH_TRACE; - PH_DBG("count = %d", count); - if (img && *img) - { - return &group_itcs[GROUP_ITC_1IMAGE]; - } - else if (count <= 10) - { - return &group_itcs[GROUP_ITC_3IMAGE]; - } - else - { - return &group_itcs[GROUP_ITC_6IMAGE]; - } -} - -static contacts_filter_h group_create_filter_int(contacts_filter_h filter, - const char *view_uri, int property_id, contacts_match_int_flag_e flag, - int match_value) -{ - PH_TRACE; - int err = CONTACTS_ERROR_NONE; - - if (NULL == filter) - { - err = contacts_filter_create(view_uri, &filter); - p_retvm_if(CONTACTS_ERROR_NONE != err, NULL, - "contacts_filter_create() Failed(%d)", err); - } - else - { - err = contacts_filter_add_operator(filter, - CONTACTS_FILTER_OPERATOR_AND); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_filter_add_operator() Failed(%d)", err); - } - - err = contacts_filter_add_int(filter, property_id, flag, match_value); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_filter_add_int() Failed(%d)", err); - - return filter; -} - -static void __group_get_images(ct_group_list *info, contacts_list_h person_list) -{ - PH_TRACE; - int cnt = 0; - int err = CONTACTS_ERROR_NONE; - contacts_record_h record = NULL; - - if (person_list == NULL) - { - ERR("person list is null"); - return; - } - - err = contacts_list_get_current_record_p(person_list, &record); - p_retm_if(CONTACTS_ERROR_NONE != err, "phone_cts_get_list() Failed(%d)", - err); - while (record) - { - char *path = NULL; - contacts_record_get_str_p(record, - _contacts_person_grouprel.image_thumbnail_path, &path); - info->img_list[cnt++] = SAFE_STRDUP(path); - err = contacts_list_next(person_list); - if (CONTACTS_ERROR_NONE != err) - break; - contacts_list_get_current_record_p(person_list, &record); - if (5 < cnt) - break; - } - -} - -static void __group_append_gengrid_of_ab(ct_group_data *cgroup_d, int ab_id, - int ab_mode) -{ - PH_TRACE; - int err = CONTACTS_ERROR_NONE; - unsigned int count = 0; - ct_group_list *info; - contacts_record_h record = NULL; - contacts_list_h group_list = NULL; - contacts_list_h person_list = NULL; - contacts_filter_h filter = NULL; - contacts_query_h query = NULL; - - unsigned int person_grouprel_projection[] = { - _contacts_person_grouprel.person_id, - _contacts_person_grouprel.status, - _contacts_person_grouprel.display_name, - _contacts_person_grouprel.display_name_index, - _contacts_person_grouprel.addressbook_ids, - _contacts_person_grouprel.image_thumbnail_path, - _contacts_person_grouprel.link_count, }; - - err = phone_cts_get_list(_contacts_group._uri, - _contacts_group.address_book_id, ab_id, &group_list); - p_warn_if(CONTACTS_ERROR_NONE != err, "phone_cts_get_list() Failed(%d)", - err); - - err = contacts_list_get_current_record_p(group_list, &record); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_list_get_current_record_p() Failed(%d)", err); - while (record) - { - int grp_id; - char* img = NULL; - char* group_system_id = NULL; - bool is_read_only = false; - - err = contacts_record_get_int(record, _contacts_group.id, &grp_id); - p_retm_if(CONTACTS_ERROR_NONE != err, - "contacts_record_get_int() Failed(%d)", err); - info = (ct_group_list *) calloc(1, sizeof(ct_group_list)); - if (NULL == info) - { - ERR("calloc() return NULL"); - break; - } - info->id_ab = ab_id; - info->mode = ab_mode; - info->id_grp = grp_id; - info->name = '\0'; - err = contacts_record_get_str_p(record, _contacts_group.image_path, - &img); - - if(CONTACTS_ERROR_NONE != err) - { - free(info); - info = NULL; - return; - } - - info->img = SAFE_STRDUP(img); - - contacts_record_get_str_p(record, _contacts_group.extra_data, - &group_system_id); - if (group_system_id && cgroup_d->group_mode != GROUP_MODE_NORMAL) - { - free(info); - info = NULL; - err = contacts_list_next(group_list); - if (CONTACTS_ERROR_NONE != err) - { - ERR("contacts_list_next() Failed(%d)", err); - break; - } - err = contacts_list_get_current_record_p(group_list, &record); - if (CONTACTS_ERROR_NONE != err) - { - ERR("contacts_list_get_current_record_p() Failed(%d)", err); - break; - } - continue; - } - else - { - info->name = SAFE_STRDUP(phone_get_group_name(record)); - } - - err = phone_cts_get_list(_contacts_person_grouprel._uri, - _contacts_person_grouprel.group_id, grp_id, &person_list); - p_retm_if(CONTACTS_ERROR_NONE != err, "phone_cts_get_list() Failed(%d)", - err); - - err = contacts_record_get_bool(record, _contacts_group.is_read_only, - &is_read_only); - p_retm_if(CONTACTS_ERROR_NONE != err, - "contacts_record_get_bool() Failed(%d)", err); - info->is_read_only = is_read_only; - - err = contacts_list_get_count(person_list, &count); - p_retm_if(CONTACTS_ERROR_NONE != err, - "contacts_list_get_count() Failed(%d)", err); - info->count = count; - __group_get_images(info, person_list); - - info->item = elm_gengrid_item_append(cgroup_d->gengrid, - group_get_gengrid_item_class(info->img, info->count), info, - group_gl_sel, cgroup_d); - - err = contacts_list_next(group_list); - if (CONTACTS_ERROR_NONE != err) - { - ERR("contacts_list_next() Failed(%d)", err); - break; - } - err = contacts_list_get_current_record_p(group_list, &record); - if (CONTACTS_ERROR_NONE != err) - { - ERR("contacts_list_get_current_record_p() Failed(%d)", err); - break; - } - } - err = contacts_list_destroy(group_list, true); - p_retm_if(CONTACTS_ERROR_NONE != err, - "contacts_list_get_current_record_p() Failed(%d)", err); - - err = contacts_query_create(_contacts_person_grouprel._uri, &query); - p_retm_if(CONTACTS_ERROR_NONE != err, "contacts_query_create() Failed(%d)", - err); - - filter = group_create_filter_int(filter, _contacts_person_grouprel._uri, - _contacts_person_grouprel.address_book_id, CONTACTS_MATCH_EQUAL, - ab_id); - filter = group_create_filter_int(filter, _contacts_person_grouprel._uri, - _contacts_person_grouprel.group_id, CONTACTS_MATCH_NONE, 0); - - do - { - if (CONTACTS_ERROR_NONE - != (err = contacts_query_set_filter(query, filter))) - break; - if (CONTACTS_ERROR_NONE - != (err = contacts_query_set_distinct(query, true))) - break; - if (CONTACTS_ERROR_NONE - != (err = contacts_query_set_projection(query, - person_grouprel_projection, - sizeof(person_grouprel_projection) / sizeof(int)))) - break; - if (CONTACTS_ERROR_NONE - != (err = contacts_db_get_records_with_query(query, 0, 0, - &person_list))) - break; - - err = contacts_list_get_count(person_list, &count); - p_retm_if(CONTACTS_ERROR_NONE != err, - "contacts_list_get_count() Failed(%d)", err); - - if (0 < count && cgroup_d->group_mode == GROUP_MODE_NORMAL) - { - info = (ct_group_list *) calloc(1, sizeof(ct_group_list)); - p_retm_if(NULL == info, "calloc() return NULL"); - info->id_ab = ab_id; - info->count = count; - info->mode = ab_mode; - if (0 == ab_id) - info->name = strdup(T_(CT_GET_TEXT_BASIC, CTTEXT_NOT_ASSIGNED)); - else - info->name = strdup(T_(CT_GET_TEXT_BASIC, CTTEXT_ALL_CONTACTS)); - __group_get_images(info, person_list); - info->item = elm_gengrid_item_append(cgroup_d->gengrid, - group_get_gengrid_item_class(info->img, info->count), info, - group_gl_sel, cgroup_d); - } - } - while (0); - - contacts_query_destroy(query); - contacts_filter_destroy(filter); -} - -static void __group_fill_layout(ct_group_data *cgroup_d) -{ - PH_TRACE; - int ret; - contacts_record_h record = NULL; - contacts_list_h addressbook_list = NULL; - - ret = contacts_db_get_all_records(_contacts_address_book._uri, 0, 0, - &addressbook_list); - p_retm_if(CONTACTS_ERROR_NONE != ret, - "contacts_db_get_all_records() Failed(%d)", ret); - ret = contacts_list_get_current_record_p(addressbook_list, &record); - p_retm_if(CONTACTS_ERROR_NONE != ret, - "contacts_list_get_current_record_p() Failed(%d)", ret); - while (record) - { - int ab_id; - int ab_mode; - char *name; - - ret = contacts_record_get_int(record, _contacts_address_book.id, - &ab_id); - p_retm_if(CONTACTS_ERROR_NONE != ret, - "contacts_record_get_int() Failed(%d)", ret); - if (0 == ab_id) - name = (char *) T_(CT_GET_TEXT_BASIC, CTTEXT_MY_PHONE); - else - { - ret = contacts_record_get_str_p(record, _contacts_address_book.name, - &name); - p_retm_if(CONTACTS_ERROR_NONE != ret, - "contacts_record_get_str() Failed(%d)", ret); - } - ret = contacts_record_get_int(record, _contacts_address_book.mode, - &ab_mode); - p_retm_if(CONTACTS_ERROR_NONE != ret, - "contacts_record_get_int() Failed(%d)", ret); - - if (GROUP_MODE_NORMAL == cgroup_d->group_mode - || CONTACTS_ADDRESS_BOOK_MODE_READONLY != ab_mode) - { - elm_gengrid_item_append(cgroup_d->gengrid, - &group_itcs[GROUP_ITC_GROUP_TITLE], name, NULL, NULL); - __group_append_gengrid_of_ab(cgroup_d, ab_id, ab_mode); - } - ret = contacts_list_next(addressbook_list); - p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_list_next() Failed(%d)", - ret); - ret = contacts_list_get_current_record_p(addressbook_list, &record); - p_retm_if(CONTACTS_ERROR_NONE != ret, - "contacts_list_get_current_record_p() Failed(%d)", ret); - } - ret = contacts_list_destroy(addressbook_list, true); - p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_list_destroy() Failed(%d)", - ret); -} - -static void group_edit_mode_end(ct_group_data *cgroup_d, bool redraw) -{ - PH_TRACE; - p_retm_if(NULL == cgroup_d, "parameter(cgroup_d) is NULL"); - cgroup_d->count = 0; - phone_hide_notify(cgroup_d->layout); - cgroup_d->group_mode = GROUP_MODE_NORMAL; - if (redraw) - phone_group_set_navi(cgroup_d->layout); - elm_gengrid_clear(cgroup_d->gengrid); - __group_fill_layout(cgroup_d); -} - -static Eina_Bool group_wait_changed(void *user_data) -{ - PH_TRACE; - ct_group_data *cgroup_d = (ct_group_data *) user_data; - ecore_timer_del(cgroup_d->waiting_timer); - cgroup_d->waiting_timer = NULL; - if (cgroup_d->need_update) - { - PH_DBG("need to update"); - cgroup_d->need_update = false; - group_changed(cgroup_d); - } - return ECORE_CALLBACK_CANCEL; -} - -static Eina_Bool group_changed(void *user_data) -{ - PH_TRACE; - ct_group_data *cgroup_d = (ct_group_data *) user_data; - PH_DBG("group_changed"); - if (cgroup_d->update_timer) - { - ecore_timer_del(cgroup_d->update_timer); - cgroup_d->update_timer = NULL; - } - - if (cgroup_d->waiting_timer) - { - PH_DBG("waiting 3 seconds for group change"); - cgroup_d->need_update = true; - return ECORE_CALLBACK_RENEW;; - } - else - { - cgroup_d->waiting_timer = ecore_timer_add(3.0, group_wait_changed, - cgroup_d); - } - - elm_gengrid_clear(cgroup_d->gengrid); - __group_fill_layout(cgroup_d); - - return ECORE_CALLBACK_CANCEL; -} - -static void group_data_lazy_update(const char* view_uri, void *data) -{ - PH_TRACE; - ct_group_data *cgroup_d = (ct_group_data *) data; - - if (cgroup_d->update_timer) - { - ecore_timer_del(cgroup_d->update_timer); - cgroup_d->update_timer = NULL; - } - - PH_DBG("cgroup_d->is_background = %d", cgroup_d->is_background); - - if (cgroup_d->is_background) - cgroup_d->update_timer = ecore_timer_add(3.0, group_changed, cgroup_d); - else - group_changed(cgroup_d); - - if (cgroup_d->group_mode == GROUP_MODE_EDIT) - group_edit_mode_end(cgroup_d, true); -} - -static void group_delete_btn_cb(void *data, Evas_Object *obj, void *event_info) -{ - PH_TRACE; - int ret; - bool completed = true; - Elm_Object_Item * item; - const Elm_Gengrid_Item_Class *itc_temp; - ct_group_data *cgroup_d = (ct_group_data *) data; - - group_popup_hide_cb(cgroup_d, NULL, NULL); - - item = elm_gengrid_first_item_get(cgroup_d->gengrid); - - while (item) - { - itc_temp = elm_gengrid_item_item_class_get(item); - if (0 - == strcmp(itc_temp->item_style, - group_itcs[GROUP_ITC_GROUP_TITLE].item_style)) - { - item = elm_gengrid_item_next_get(item); - continue; - } - - ct_group_list *info = (ct_group_list *) elm_object_item_data_get(item); - if (info && info->selected) - { - ret = contacts_db_delete_record(_contacts_group._uri, info->id_grp); - if (CONTACTS_ERROR_NONE != ret) - { - ERR("Error : contacts_db_delete_record() Failed(%d)", ret); - completed = false; - break; - } - } - item = elm_gengrid_item_next_get(item); - } - if (completed) - phone_show_tickernoti(S_(PH_SYS_POP_REMOVED)); - else - phone_show_tickernoti(S_(PH_SYS_POP_FAILED)); - - group_edit_mode_end(cgroup_d, true); -} - -static void group_cancel_btn_cb(void *data) -{ - PH_TRACE; - Elm_Object_Item * item; - ct_group_data *cgroup_d = (ct_group_data *) data; - ct_group_list *info; - const Elm_Gengrid_Item_Class *itc_temp; - - item = elm_gengrid_first_item_get(cgroup_d->gengrid); - while (item) - { - itc_temp = elm_gengrid_item_item_class_get(item); - if (0 - == strcmp(itc_temp->item_style, - group_itcs[GROUP_ITC_GROUP_TITLE].item_style)) - { - item = elm_gengrid_item_next_get(item); - continue; - } - - info = (ct_group_list *) elm_object_item_data_get(item); - if (NULL == info) - continue; - info->selected = EINA_FALSE; - item = elm_gengrid_item_next_get(item); - } - group_edit_mode_end(cgroup_d, true); -} - -static void group_edit_cb(void *data, Evas_Object *obj, void *event_info) -{ - PH_TRACE; - ct_group_data *cgroup_d = (ct_group_data *) data; - if (cgroup_d->popup) - { - evas_object_del(cgroup_d->popup); - cgroup_d->popup = NULL; - } - - cgroup_d->group_mode = GROUP_MODE_EDIT; - phone_group_set_navi(cgroup_d->layout); - elm_gengrid_clear(cgroup_d->gengrid); - __group_fill_layout(cgroup_d); - phone_show_notify(cgroup_d->layout, - T_(CT_GET_TEXT_BASE_OP, CTTEXT_SELECT_GROUP)); - -} - -static void group_more_cb(void *data) -{ - PH_TRACE; - int rotate; - int x, y, w, h; - ct_group_data *cgroup_d = (ct_group_data *) data; - - if (cgroup_d->popup) - { - evas_object_del(cgroup_d->popup); - cgroup_d->popup = NULL; - } - - cgroup_d->popup = elm_ctxpopup_add(cgroup_d->navi); - p_retm_if(NULL == cgroup_d->popup, "elm_ctxpopup_add() return NULL"); - - rotate = (int) evas_object_data_get(cgroup_d->navi, "phone_rotate"); - if (0 == rotate || 180 == rotate) - elm_ctxpopup_direction_priority_set(cgroup_d->popup, - ELM_CTXPOPUP_DIRECTION_DOWN, ELM_CTXPOPUP_DIRECTION_UP, - ELM_CTXPOPUP_DIRECTION_LEFT, ELM_CTXPOPUP_DIRECTION_RIGHT); - - evas_object_smart_callback_add(cgroup_d->popup, "dismissed", - group_popup_hide_cb, cgroup_d); - - elm_ctxpopup_item_append(cgroup_d->popup, S_(PH_SYS_SK_EDIT), NULL, - group_edit_cb, cgroup_d); - - evas_object_geometry_get(cgroup_d->navi, &x, &y, &w, &h); - evas_object_move(cgroup_d->popup, 0, y + h); - evas_object_show(cgroup_d->popup); -} - -static void group_add_cb(void *data, Evas_Object *obj, void *event_info) -{ - PH_TRACE; - ct_group_data *cgroup_d = (ct_group_data *) data; - evas_object_data_set(cgroup_d->navi, "navi_it_pop_to", cgroup_d->navi_item); - ctui_create_group_input_view(cgroup_d->win, cgroup_d->navi, NULL, NULL, - NULL); -} - -#ifdef _CT_GROUP_DEFAULT_GROUP_UPDATE_DB -static void group_update_default_group_name(keynode_t *key, void *data) -{ - PH_TRACE; - int ret; - int text_index= -1; - contacts_record_h record = NULL; - contacts_record_h group_record = NULL; - contacts_list_h group_list = NULL; - - group_list = NULL; - ret = contacts_db_get_all_records( _contacts_group._uri,0,0,&group_list); - p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_db_get_all_records() Failed(%d)", ret); - ret = contacts_list_get_current_record_p(group_list, &record); - p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_list_get_current_record_p() Failed(%d)", ret); - while(record) - { - int grp_id; - char* group_sysid; - char* group_name; - - ret = contacts_record_get_int(record,_contacts_group.id,&grp_id); - p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_record_get_int() Failed(%d)", ret); - ret = contacts_record_get_str_p(record,_contacts_group.extra_data,&group_sysid); - p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_record_get_str_p() Failed(%d)", ret); - ret = contacts_record_get_str_p(record,_contacts_group.name,&group_name); - p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_record_get_str_p() Failed(%d)", ret); - if(group_sysid == NULL) - { - PH_DBG("sysid null ,group_name__ = %s ", group_name); - - ret = contacts_list_next(group_list); - p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_list_next() Failed(%d)", ret); - - ret = contacts_list_get_current_record_p(group_list, &record); - p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_list_get_current_record_p() Failed(%d)", ret); - continue; - } - PH_DBG("group_sysid = %s",group_sysid); - if(strcmp(group_sysid,FRIENDS)==0) - text_index = CTTEXT_FRIENDS; - else if(strcmp(group_sysid,FAMILY)==0) - text_index = CTTEXT_FRIENDS+1; - else if(strcmp(group_sysid,COWORKERS)==0) - text_index = CTTEXT_FRIENDS+2; - else - { - ret = contacts_list_next(group_list); - p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_list_next() Failed(%d)", ret); - - ret = contacts_list_get_current_record_p(group_list, &record); - p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_list_get_current_record_p() Failed(%d)", ret); - continue; - } - - if(text_index == -1) - { - ret = contacts_list_next(group_list); - p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_list_next() Failed(%d)", ret); - - ret = contacts_list_get_current_record_p(group_list, &record); - p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_list_get_current_record_p() Failed(%d)", ret); - ERR("text_index is -1, failed"); - continue; - } - else - PH_DBG("text_index = %d",text_index); - - PH_DBG("group = %s , %s", group_name,T_(CT_GET_TEXT_BASIC, text_index)); - - if(strcmp(group_name,T_(CT_GET_TEXT_BASIC, text_index)) != 0) - { - ret = contacts_db_get_record(_contacts_group._uri,grp_id,&group_record); - p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_db_get_record() Failed(%d)", ret); - - ret = contacts_record_set_str(group_record,_contacts_group.name,T_(CT_GET_TEXT_BASIC, text_index)); - p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_record_set_str() Failed(%d)", ret); - - ret = contacts_db_update_record(group_record); - p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_db_update_record() Failed(%d)", ret); - - ret = contacts_record_destroy(group_record, true); - p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_record_destroy() Failed(%d)", ret); - } - ret = contacts_list_next(group_list); - p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_list_next() Failed(%d)", ret); - - ret = contacts_list_get_current_record_p(group_list, &record); - p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_list_get_current_record_p() Failed(%d)", ret); - } - ret = contacts_list_destroy(group_list, true); - p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_list_destroy() Failed(%d)", ret); - -} -#endif - -static void __group_pop_as_topmost(void *data, Evas_Object *obj, - void *event_info) -{ - PH_TRACE; - ct_group_data *cgroup_d = (ct_group_data *) data; - if (cgroup_d->navi_item == elm_naviframe_top_item_get(obj)) - { - group_notify_update(cgroup_d); - } -} - -static void group_view_delete_cb(void *data, Evas *e, Evas_Object *obj, - void *event_info) -{ - PH_TRACE; - int ret; - ct_group_data *cgroup_d = (ct_group_data *) data; - p_retm_if(NULL == cgroup_d, "parameter(cgroup_d) is NULL"); - - ret = contacts_db_remove_changed_cb(_contacts_contact._uri, - group_data_lazy_update, cgroup_d); - p_warn_if(CONTACTS_ERROR_NONE, "contacts_db_remove_changed_cb() Failed(%d)", - ret); - ret = contacts_db_remove_changed_cb(_contacts_group._uri, - group_data_lazy_update, cgroup_d); - p_warn_if(CONTACTS_ERROR_NONE, "contacts_db_remove_changed_cb() Failed(%d)", - ret); - ret = contacts_db_remove_changed_cb(_contacts_person._uri, - group_data_lazy_update, cgroup_d); - p_warn_if(CONTACTS_ERROR_NONE, "contacts_db_remove_changed_cb() Failed(%d)", - ret); - -#ifdef _CT_GROUP_DEFAULT_GROUP_UPDATE_DB - ret = vconf_ignore_key_changed(VCONFKEY_LANGSET, group_update_default_group_name); - p_warn_if(-1 == ret, "vconf_ignore_key_changed() Failed"); -#endif - - if (cgroup_d->th) - { - elm_theme_extension_del(cgroup_d->th, GROUP_THEME_EDJ); - elm_theme_extension_del(cgroup_d->th, CONTACT_BUTTON_THEME_EDJ); - elm_theme_free(cgroup_d->th); - } - - if (cgroup_d->child_ug) - ug_destroy(cgroup_d->child_ug); - - if (cgroup_d->crop_ug) - ug_destroy((ui_gadget_h) cgroup_d->crop_ug); - - if (cgroup_d->child_ug) - ug_destroy(cgroup_d->child_ug); - - if (cgroup_d->popup) - evas_object_del(cgroup_d->popup); - - if (cgroup_d->update_timer) - ecore_timer_del(cgroup_d->update_timer); - - if (cgroup_d->waiting_timer) - ecore_timer_del(cgroup_d->waiting_timer); - - evas_object_smart_callback_del(cgroup_d->navi, "transition,finished", - __group_pop_as_topmost); - - free(cgroup_d); -} - -static int group_create_layout(ct_group_data *cgroup_d, Evas_Object *parent) -{ - PH_TRACE; - int ret; - const int CT_GROUP_ITEM_WIDTH = 360; - const int CT_GROUP_ITEM_HEIGHT = 340; - double scale; - Evas_Object *layout; - Evas_Object *base; - Evas_Object *gengrid; - cgroup_d->navi = parent; - - base = elm_layout_add(cgroup_d->navi); - p_retvm_if(NULL == base, -1, "elm_layout_add() return NULL"); - elm_layout_file_set(base, SELECTION_INFO_EDJ, "selectioninfo_layout"); - layout = phone_create_base_layout(base, false); - p_retvm_if(NULL == layout, -1, "phone_create_base_layout() return NULL"); - elm_object_part_content_set(base, "contents", layout); - cgroup_d->layout = base; - - gengrid = elm_gengrid_add(layout); - p_retvm_if(NULL == gengrid, -1, "elm_gengrid_add() return NULL"); - elm_object_theme_set(gengrid, cgroup_d->th); - evas_object_size_hint_weight_set(gengrid, EVAS_HINT_EXPAND, - EVAS_HINT_EXPAND); - elm_gengrid_align_set(gengrid, 0.5, 0.0); - evas_object_data_set(gengrid, "cgroup_d", cgroup_d); - - scale = elm_config_scale_get(); - elm_gengrid_group_item_size_set(gengrid, (int) (720 * scale), - (int) (50 * scale)); - elm_gengrid_item_size_set(gengrid, (int) (CT_GROUP_ITEM_WIDTH * scale), - (int) (CT_GROUP_ITEM_HEIGHT * scale)); - elm_gengrid_horizontal_set(gengrid, EINA_FALSE); - - elm_scroller_policy_set(gengrid, ELM_SCROLLER_POLICY_OFF, - ELM_SCROLLER_POLICY_AUTO); - elm_object_part_content_set(layout, "elm.swallow.content", gengrid); - cgroup_d->gengrid = gengrid; - -#ifdef _CT_GROUP_DEFAULT_GROUP_UPDATE_DB - group_update_default_group_name(NULL, NULL); - ret = vconf_notify_key_changed(VCONFKEY_LANGSET, group_update_default_group_name, NULL); - p_warn_if(-1 == ret, "vconf_notify_key_changed() Failed"); -#endif - - group_create_itcs(); - __group_fill_layout(cgroup_d); - - evas_object_event_callback_add(cgroup_d->layout, EVAS_CALLBACK_DEL, - group_view_delete_cb, cgroup_d); - - ret = contacts_db_add_changed_cb(_contacts_contact._uri, - group_data_lazy_update, cgroup_d); - p_warn_if(CONTACTS_ERROR_NONE, "contacts_db_add_changed_cb() Failed(%d)", - ret); - - ret = contacts_db_add_changed_cb(_contacts_group._uri, - group_data_lazy_update, cgroup_d); - p_warn_if(CONTACTS_ERROR_NONE, "contacts_db_add_changed_cb() Failed(%d)", - ret); - - ret = contacts_db_add_changed_cb(_contacts_person._uri, - group_data_lazy_update, cgroup_d); - p_warn_if(CONTACTS_ERROR_NONE, "contacts_db_add_changed_cb() Failed(%d)", - ret); - - return 0; - -} - -API void phone_group_set_navi(Evas_Object *layout) -{ - PH_TRACE; - ct_group_data *cgroup_d; - Elm_Object_Item *navi_it; - - cgroup_d = (ct_group_data *) evas_object_data_get(layout, KEY_GROUP_DATA); - p_retm_if(NULL == cgroup_d, "cgroup_d is NULL"); - navi_it = elm_naviframe_bottom_item_get(cgroup_d->navi); - p_retm_if(NULL == navi_it, "navi item is NULL"); - - phone_navi_item_reset(cgroup_d->navi_item, cgroup_d); - - if (!cgroup_d->ug) - { - if (GROUP_MODE_NORMAL == cgroup_d->group_mode) - { - Evas_Object *group_button; - - group_button = phone_create_toolbar_btn(cgroup_d->layout, - T_(CT_GET_TEXT_BASE_OP, CTTEXT_CREATE_GROUP), group_add_cb, cgroup_d); - elm_object_part_content_set(cgroup_d->layout, "toolbar", - group_button); - - cgroup_d->menu_cb = group_more_cb; - } - else - { - cgroup_d->delete_button = phone_create_toolbar_btn(cgroup_d->layout, - T_(PH_GET_TEXT_BASIC, CTTEXT_REMOVE), group_delete_btn_cb, cgroup_d); - elm_object_part_content_set(cgroup_d->layout, "toolbar", - cgroup_d->delete_button); - elm_object_disabled_set(cgroup_d->delete_button, EINA_TRUE); - - cgroup_d->back_cb = group_cancel_btn_cb; - } - } -} - -API Evas_Object* phone_create_group_view(ph_view_info *view_info) -{ - PH_TRACE; - int ret; - Elm_Theme *th; - ct_group_data *cgroup_d = (ct_group_data *) calloc(1, sizeof(ct_group_data)); - p_retvm_if(NULL == cgroup_d, NULL, "Fail to calloc ct_group_data"); - cgroup_d->ug = view_info->ug; - cgroup_d->ug_request = view_info->ug_request; - cgroup_d->ug_cnt_max = view_info->ug_cnt_max; - cgroup_d->ug_data = view_info->ug_data; - cgroup_d->win = view_info->win; - cgroup_d->navi_item = elm_naviframe_bottom_item_get(view_info->navi); - cgroup_d->is_background = true; - - th = elm_theme_new(); - elm_theme_ref_set(th, NULL); - elm_theme_extension_add(th, GROUP_THEME_EDJ); - elm_theme_extension_add(th, CONTACT_BUTTON_THEME_EDJ); - cgroup_d->th = th; - - ret = group_create_layout(cgroup_d, view_info->navi); - if (ret < 0) - { - free(cgroup_d); - return NULL; - } - - evas_object_data_set(cgroup_d->layout, KEY_GROUP_DATA, cgroup_d); - evas_object_data_set(cgroup_d->navi, KEY_GROUP_DATA, cgroup_d); - - evas_object_smart_callback_add(view_info->navi, "transition,finished", - __group_pop_as_topmost, cgroup_d); - - return cgroup_d->layout; -} - -API void phone_group_view_reset(Evas_Object *base) -{ - PH_TRACE; - ct_group_data *cgroup_d; - Elm_Object_Item * item; - - cgroup_d = (ct_group_data *) evas_object_data_get(base, KEY_GROUP_DATA); - p_retm_if(NULL == cgroup_d, "cgroup_d is null"); - - if (cgroup_d->child_ug) - { - ug_destroy(cgroup_d->child_ug); - cgroup_d->child_ug = NULL; - } - - item = elm_naviframe_bottom_item_get(cgroup_d->navi); - if (elm_naviframe_top_item_get(cgroup_d->navi) != item) - elm_naviframe_item_pop_to(item); - - if (GROUP_MODE_EDIT == cgroup_d->group_mode) - group_edit_mode_end(cgroup_d, false); -} - -API void phone_group_view_language_changed(Evas_Object *base) -{ - PH_TRACE; - ct_group_data *cgroup_d; - cgroup_d = (ct_group_data *) evas_object_data_get(base, KEY_GROUP_DATA); - p_retm_if(NULL == cgroup_d, "evas_object_data_get() return NULL"); - group_changed(cgroup_d); - - if (cgroup_d->group_mode == GROUP_MODE_EDIT) - group_notify_update(cgroup_d); -} - -API void phone_group_set_background(Evas_Object *obj, bool is_background) -{ - PH_TRACE; - ct_group_data *cgroup_d; - cgroup_d = (ct_group_data *) evas_object_data_get(obj, KEY_GROUP_DATA); - p_retm_if(NULL == cgroup_d, "group data is null"); - - cgroup_d->is_background = is_background; - if (cgroup_d->update_timer) - { - ecore_timer_del(cgroup_d->update_timer); - cgroup_d->update_timer = NULL; - group_changed(cgroup_d); - } -} - -API Evas_Object* phone_create_group_view_ug(ui_gadget_h ug, Evas_Object *parent, - int ug_request) -{ - PH_TRACE; - int ret; - Elm_Theme *th; - ct_group_data *cgroup_d = (ct_group_data *) calloc(1, sizeof(ct_group_data)); - p_retvm_if(NULL == cgroup_d, NULL, "Fail to calloc ct_group_data"); - cgroup_d->ug = ug; - cgroup_d->ug_request = ug_request; - cgroup_d->navi = elm_naviframe_add(parent); - p_retvm_if(NULL == cgroup_d->navi, FALSE, - "elm_naviframe_add() return NULL"); - - ea_object_event_callback_add(cgroup_d->navi, EA_CALLBACK_BACK, &Common::ViewManager::onBack, cgroup_d->win); - ea_object_event_callback_add(cgroup_d->navi, EA_CALLBACK_MORE, &Common::ViewManager::onMenu, NULL); - elm_object_part_content_set(parent, "elm.swallow.content", cgroup_d->navi); - evas_object_show(cgroup_d->navi); - - th = elm_theme_new(); - elm_theme_ref_set(th, NULL); - elm_theme_extension_add(th, GROUP_THEME_EDJ); - elm_theme_extension_add(th, CONTACT_BUTTON_THEME_EDJ); - cgroup_d->th = th; - - ret = group_create_layout(cgroup_d, cgroup_d->navi); - if (ret < 0) - { - free(cgroup_d); - return NULL; - } - cgroup_d->navi_item = elm_naviframe_item_push(cgroup_d->navi, - T_(CT_GET_TEXT_BASIC, CTTEXT_GROUP), NULL, NULL, - cgroup_d->layout, NULL); - evas_object_data_set(cgroup_d->layout, KEY_GROUP_DATA, cgroup_d); - return cgroup_d->layout; -} - diff --git a/lib/list/ct-list-contact-view.cpp b/lib/list/ct-list-contact-view.cpp deleted file mode 100755 index 6cd06ea..0000000 --- a/lib/list/ct-list-contact-view.cpp +++ /dev/null @@ -1,1264 +0,0 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.1 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * 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. - */ - -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif - -#include <string.h> -#include <ui-gadget-module.h> - -#include "phone.h" -#include "ct-detail.h" -#include "ct-list.h" -#include "ct-list-utils.h" -#include "ct-list-view-ug.h" -#include "ct-list-edit-view.h" -#include "ct-list-contact-view.h" -#include "ct-group.h" -#include "ct-list.h" -#include "phone-common.h" - -static void __list_insert_records(ct_list_data *clist_d); - -API void ctui_list_new_btn_clicked_cb(void *data, - Evas_Object *obj, - void *event_info) -{ - PH_TRACE; - ct_list_data *clist_d = (ct_list_data *) data; - ct_detail_data *cdetail_d = NULL; - ph_view_info *view_info = NULL; - - assert(clist_d); - p_ret_if(!clist_d); - - switch (clist_d->ug_request) - { - //case PH_UG_REQUEST_SET_WITH_NUM: - //case PH_UG_REQUEST_SET_WITH_EMAIL: - //case PH_UG_REQUEST_SET_WITH_WEB: - case PH_UG_REQUEST_SET_WITH_IMG: - case PH_UG_REQUEST_SET_WITH_RINGTONE: - case CT_UG_REQUEST_UPDATE_CONTACT: - case CT_UG_REQUEST_UPDATE_WITH_NUM: - case CT_UG_REQUEST_UPDATE_WITH_EMAIL: - case CT_UG_REQUEST_UPDATE_WITH_WEB: - case CT_UG_REQUEST_SAVE_IMG: - case CT_UG_REQUEST_SAVE_RINGTONE: - view_info = (ph_view_info *) calloc(1, sizeof(ph_view_info)); - phone_set_view_info(view_info, clist_d->win, clist_d->navi, - clist_d->ug, clist_d->ug_request, clist_d->cnt_max_check, - clist_d->ug_data); - ctui_list_update_with_data(view_info, clist_d, 0, clist_d->base_grp, - clist_d->base_ab); - free(view_info); - break; - default: - - // hide sweeped item - Elm_Object_Item *lastItem = clist_d->last_sweep_item; - - if (NULL != lastItem) - { - elm_genlist_item_decorate_mode_set(lastItem, "slide", EINA_FALSE); - elm_genlist_item_select_mode_set(lastItem, ELM_OBJECT_SELECT_MODE_DEFAULT); - clist_d->last_sweep_item = NULL; - } - - cdetail_d = (ct_detail_data *) calloc(1, sizeof(ct_detail_data)); - p_retm_if(!cdetail_d, "cdetail_d is NULL, Not enough memory"); - - ctui_ld_to_dd(clist_d, cdetail_d); - - if (0 < cdetail_d->base_ab) - { - int err = CONTACTS_ERROR_NONE; - contacts_record_h record = NULL; - char temp[PH_TEXT_MAX_LEN + 1]; - - err = contacts_db_get_record(_contacts_address_book._uri, - cdetail_d->base_ab, &record); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_db_record_get() Failed(%d)", err); - - err = contacts_record_get_int(record, - _contacts_address_book.mode, - &(cdetail_d->base_ab_mode)); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_record_get_int() Failed(%d)", err); - - err = contacts_record_destroy(record, true); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_record_destroy() Failed(%d)", err); - - temp[0] = '\0'; - ctui_get_addressbook_name(cdetail_d->base_ab, temp, - sizeof(temp)); - if (*temp) - cdetail_d->base_ab_name = strdup(temp); - } - else if (0 == cdetail_d->base_ab) - { - cdetail_d->base_ab_mode = CONTACTS_ADDRESS_BOOK_MODE_NONE; - cdetail_d->base_ab_name = strdup( - T_(CT_GET_TEXT_BASIC, CTTEXT_PHONE)); - } - cdetail_d->only_input = true; - ctui_create_input_view(cdetail_d); - - break; - } -} - -static void list_popup_hide_cb(void *data, Evas_Object *obj, void *event_info) -{ - PH_TRACE; - assert(data); - if (NULL != data) - { - ct_list_data *clist_d = static_cast<ct_list_data*>( data ); - if (NULL != clist_d->popup) - { - evas_object_del(clist_d->popup); - clist_d->popup = NULL; - } - elm_object_tree_focus_allow_set(clist_d->navi, EINA_TRUE); - } -} - -static void list_menu_hide_cb(void *data, Evas_Object *obj, void *event_info) -{ - PH_TRACE; - assert(data); - if (NULL != data) - { - ct_list_data *clist_d = static_cast<ct_list_data*>( data ); - if (NULL != clist_d->m_Menu) - { - evas_object_del(clist_d->m_Menu); - clist_d->m_Menu = NULL; - } - elm_object_tree_focus_allow_set(clist_d->navi, EINA_TRUE); - } -} - -static void list_remove_member_button_cb(void *data, Evas_Object *obj, - void *event_info) -{ - PH_TRACE; - ct_list_data *clist_d = (ct_list_data *) data; - p_retm_if(NULL == clist_d->navi_item, "parameter(navi_item) is NULL"); - - list_menu_hide_cb(data, NULL, NULL); - clist_d->view_id = CT_LIST_MULTI_REMOVE_MEMBER; - - if (clist_d->genlist) - elm_object_focus_set(clist_d->genlist, EINA_TRUE); - if (!clist_d->ug) - ctui_list_edit_mode_start(clist_d); -} - -static void list_ab_popup_view_button_cb(void *data, Evas_Object *obj, - void *event_info) -{ - PH_TRACE; - int selected_id; - Evas_Object *popup; - Evas_Object *genlist; - Evas_Object *radio_main; - ct_list_data *clist_d = (ct_list_data *) data; - p_retm_if(NULL == clist_d, "parameter(clist_d) is NULL"); - - popup = clist_d->popup; - p_retm_if(NULL == clist_d, "popup is NULL"); - - genlist = elm_object_content_get(popup); - p_retm_if(NULL == genlist, "elm_object_content_get() is NULL"); - - radio_main = (Evas_Object *) evas_object_data_get(genlist, "radio_main"); - p_retm_if(NULL == radio_main, "evas_object_data_get() is NULL"); - - selected_id = elm_radio_value_get(radio_main); - - if (clist_d->list_op != CT_GET_LIST_ALL_PERSON && selected_id == -1) - { - clist_d->list_op = CT_GET_LIST_ALL_PERSON; - clist_d->base_ab = -1; - } - else if (clist_d->base_ab != selected_id) - { - clist_d->list_op = CT_GET_LIST_PERSON_OF_ADDRBOOK_ID; - clist_d->base_ab = selected_id; - } - - ctui_set_view_mode(clist_d->base_ab); - ctui_list_genlist_update(clist_d); - - list_popup_hide_cb(data, NULL, NULL); -} - -static void list_ab_popup_cancel_button_cb(void *data, Evas_Object *obj, void *event_info) -{ - PH_TRACE; - list_popup_hide_cb(data, NULL, NULL); -} - -static void list_ab_popup_sel(void *data, Evas_Object *obj, void *event_info) -{ - PH_TRACE; - Evas_Object *genlist; - Evas_Object *radio_main; - Elm_Object_Item *item = (Elm_Object_Item *) event_info; - ct_ab_popup_data *ab_popup_data; - - elm_genlist_item_selected_set(item, EINA_FALSE); - - genlist = elm_object_item_widget_get(item); - p_retm_if(NULL == genlist, "elm_object_item_widget_get() return NULL"); - - ab_popup_data = (ct_ab_popup_data *) elm_object_item_data_get(item); - p_retm_if(NULL == ab_popup_data, "elm_object_item_data_get() return NULL"); - - radio_main = (Evas_Object *) evas_object_data_get(genlist, "radio_main"); - p_retm_if(NULL == radio_main, "evas_object_data_get() return NULL"); - - elm_radio_value_set(radio_main, ab_popup_data->id); -} - -static void list_view_button_cb(void *data, Evas_Object *obj, void *event_info) -{ - PH_TRACE; - assert(data); - if (NULL != data) - { - ct_list_data* clist_d = static_cast<ct_list_data*>(data); - p_retm_if(NULL == clist_d, "parameter(clist_d) is NULL"); - - list_popup_hide_cb(data, NULL, NULL); - - Evas_Object *popup = NULL; - popup = ctui_addrbook_popup(clist_d->win, list_ab_popup_sel, clist_d, CT_AB_POPUP_TYPE_LIST_VIEW); - p_retm_if(NULL == popup, "ctui_addrbook_popup() return NULL"); - elm_object_part_text_set(popup, "title,text", T_(PH_GET_TEXT_BASIC, PHTEXT_CONTACTS_MENU_CONTACTS_TO_DISPLAY)); - clist_d->popup = popup; - - Evas_Object *btnOK = NULL; - btnOK = elm_button_add(popup); - p_retm_if(NULL == btnOK, "elm_button_add() return NULL"); - elm_object_text_set(btnOK, S_(PH_SYS_SK_OK)); - elm_object_part_content_set(popup, "button1", btnOK); - elm_object_style_set(btnOK, "popup_button/default"); - evas_object_smart_callback_add(btnOK, "clicked", list_ab_popup_view_button_cb, clist_d); - - Evas_Object *btnCancel = NULL; - btnCancel = elm_button_add(popup); - p_retm_if(NULL == btnCancel, "elm_button_add() return NULL"); - elm_object_text_set(btnCancel, S_(PH_SYS_SK_CANCEL)); - elm_object_part_content_set(popup, "button2", btnCancel); - elm_object_style_set(btnCancel, "popup_button/default"); - evas_object_smart_callback_add(btnCancel, "clicked", list_ab_popup_cancel_button_cb, clist_d); - } -} - -static void list_add_button_cb(void *data, Evas_Object *obj, void *event_info) -{ - PH_TRACE; - ct_list_data *clist_d = (ct_list_data *) data; - - evas_object_data_set(clist_d->navi, "navi_it_pop", clist_d->navi_item); - ctui_create_gadd_list_select_view(clist_d->win, clist_d->navi, - clist_d->base_grp, clist_d->base_ab, &clist_d->list, true); -} - -static bool list_load_vcard_foreach_cb(contacts_record_h record, void *data) -{ - PH_TRACE; - int err; - ph_progress_info *p_info; - ct_list_data *clist_d = (ct_list_data *) data; - contacts_record_h record_clone = NULL; - - p_retvm_if(NULL == clist_d, -1, "parameter(clist_d) is NULL"); - - p_info = clist_d->p_info; - p_retvm_if(NULL == p_info, -1, "clist_d->p_info is NULL"); - - PH_DBG("list_load_vcard_foreach_cb total_cnt %d", - clist_d->cnt_import_total); - - if (!p_info->alive) - { - p_info->result = FALSE; - p_info->completed = true; - return false; - } - - err = contacts_record_clone(record, &record_clone); - if (CONTACTS_ERROR_NONE != err) - { - ERR("contacts_record_clone() Failed(%d)", err); - return false; - } - clist_d->list_import_records = eina_list_append( - clist_d->list_import_records, record_clone); - clist_d->cnt_import_total++; - - return true; -} - -static PTHREAD_FN list_load_vcard_contacts_thread_fn(void* data) -{ - PH_TRACE; - int err = CONTACTS_ERROR_NONE; - ct_list_data *clist_d = (ct_list_data *) data; - char *last = NULL; - const char *path = NULL; - ph_progress_info *p_info = clist_d->p_info; - - err = contacts_connect2(); - p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_connect2() Failed(%d)", - err); - - path = (const char *) strtok_r((char *) clist_d->vcard_path, "?", &last); - while (path) - { - err = contacts_vcard_parse_to_contact_foreach(path, - list_load_vcard_foreach_cb, clist_d); - if (CONTACTS_ERROR_NONE != err) - { - p_info->result = FALSE; - ERR("contacts_svc_vcard_foreach() Failed(%d)", p_info->result); - break; - } - path = strtok_r(NULL, "?", &last); - } - - p_info->next_job = true; - - contacts_disconnect2(); - - pthread_exit(NULL); -} - -static void __list_insert_records_cb(int err, int *ids, unsigned int count, - void *data) -{ - PH_TRACE; - ct_list_data *clist_d = (ct_list_data *) data; - contacts_error_e _err = CONTACTS_ERROR_NONE; - - PH_DBG("err %d", err); - - if (CONTACTS_ERROR_NONE != err) - { - if (clist_d->p_info) - { - clist_d->p_info->completed = true; - clist_d->p_info->alive = false; - clist_d->p_info->result = false; - } - return; - } - - _err = (contacts_error_e) contacts_list_destroy(clist_d->import_list, true); - p_retm_if(CONTACTS_ERROR_NONE != _err, "contacts_list_destroy() Failed(%d)", - _err); - - PH_DBG("__list_insert_records_cb total count %d, count %d", - clist_d->cnt_import_total, clist_d->cnt_import); - - if (clist_d->p_info) - { - if (!clist_d->p_info->alive) - { - clist_d->p_info->result = FALSE; - clist_d->p_info->completed = true; - return; - } - } - else - return; - - if (clist_d->cnt_import == clist_d->cnt_import_total) - { - if (clist_d->p_info) - { - clist_d->p_info->completed = true; - clist_d->p_info->alive = false; - clist_d->p_info->result = true; - } - return; - } - - __list_insert_records(clist_d); -} - -static void __list_insert_records(ct_list_data *clist_d) -{ - PH_TRACE; - const int LIST_BULK_LENGTH = 50; - Eina_List *l; - int err = CONTACTS_ERROR_NONE; - void *v_record_temp = NULL; - - err = contacts_list_create(&clist_d->import_list); - p_retm_if(CONTACTS_ERROR_NONE != err, "contacts_list_create() Failed(%d)", - err); - - EINA_LIST_FOREACH(clist_d->list_import_records, l, v_record_temp) - { - contacts_record_h record_temp = (contacts_record_h) v_record_temp; - err = contacts_list_add(clist_d->import_list, record_temp); - p_retm_if(CONTACTS_ERROR_NONE != err, - "contacts_list_add() Failed(%d) count %d", - err, clist_d->cnt_import); - clist_d->list_import_records = eina_list_remove_list( - clist_d->list_import_records, l); - - clist_d->cnt_import++; - - if ((clist_d->cnt_import % LIST_BULK_LENGTH) == 0) - break; - } - err = contacts_db_insert_records_async(clist_d->import_list, - __list_insert_records_cb, clist_d); - p_retm_if(CONTACTS_ERROR_NONE != err, - "contacts_db_insert_records_async() Failed(%d)", err); - ctui_create_contacts_error_popup(clist_d->navi, err); -} - -static Eina_Bool list_load_vcard_timer_cb(void *data) -{ - PH_TRACE; - ct_list_data *clist_d = (ct_list_data *) data; - ph_progress_info *p_info; - - p_retvm_if(NULL == clist_d, ECORE_CALLBACK_CANCEL, - "parameter(clist_d) is NULL"); - p_info = clist_d->p_info; - - if (p_info->next_job) - { - pthread_join(p_info->thread, NULL); - __list_insert_records(clist_d); - p_info->next_job = false; - } - - if (!p_info->alive && !p_info->completed) - { - p_info->result = FALSE; - p_info->completed = true; - } - - if (!p_info->completed) - { - return ECORE_CALLBACK_RENEW; - } - else - { - Eina_List *l; - void *v_record = NULL; - const char *message; - - pthread_join(p_info->thread, NULL); - - if (p_info->result) - message = T_(CT_GET_TEXT_BASIC, CTTEXT_IMPORTED); - else - message = S_(PH_SYS_POP_FAILED); - - list_popup_hide_cb(data, NULL, NULL); - list_menu_hide_cb(data, NULL, NULL); - phone_show_tickernoti(message); - - EINA_LIST_FOREACH(clist_d->list_import_records, l, v_record) - { - contacts_record_h record = (contacts_record_h) v_record; - contacts_record_destroy(record, true); - } - eina_list_free(clist_d->list_import_records); - - free(p_info); - clist_d->p_info = NULL; - - return ECORE_CALLBACK_CANCEL; - } -} - -static void list_add_all_contacts_button_cb(void *data, Evas_Object *obj, - void *event_info) -{ - PH_TRACE; - int ret; - ct_list_data *clist_d = (ct_list_data *) data; - ph_progress_info *p_info; - - p_info = (ph_progress_info *) calloc(1, sizeof(ph_progress_info)); - if (NULL == p_info) - { - ERR("calloc() return NULL"); - elm_exit(); - } - - clist_d->p_info = p_info; - clist_d->list = NULL; - clist_d->cnt_import_total = 0; - clist_d->cnt_import = 0; - - p_info->cnt = 0; - p_info->alive = true; - p_info->result = TRUE; - p_info->completed = false; - - ret = pthread_create(&p_info->thread, NULL, - list_load_vcard_contacts_thread_fn, clist_d); - if (0 != ret) - { - ERR("Thread creation failed(%d)", ret); - free(p_info); - clist_d->p_info = NULL; - elm_exit(); - } - p_info->timer = ecore_timer_add(0.5, list_load_vcard_timer_cb, clist_d); - if (NULL == p_info->timer) - { - ERR("ecore_timer_add() return NULL"); - - p_info->alive = false; - pthread_join(p_info->thread, NULL); - - free(p_info); - clist_d->p_info = NULL; - elm_exit(); - } - clist_d->popup = phone_progressbar_popup(clist_d->win, p_info, - T_(CT_GET_TEXT_BASIC, CTTEXT_IMPORTING_SD_CONTACTS)); -} - -static void list_message_btn_cb(void *data, Evas_Object *obj, void *event_info) -{ - PH_TRACE; - int list_op; - ct_list_data *clist_d = (ct_list_data *) data; - - p_retm_if(NULL == clist_d, "clist_d is NULL"); - list_menu_hide_cb(clist_d, NULL, NULL); - - p_retm_if(NULL == evas_object_data_get(clist_d->navi, "cgroup_d"), - "evas_object_data_get() return NULL"); - - if (-1 == clist_d->base_grp) - list_op = CT_GET_LIST_PERSON_HAD_NUMBER_OF_ADDRBOOK_ID; - else if (clist_d->base_grp) - list_op = CT_GET_LIST_PERSON_HAD_NUMBER_OF_GROUP_ID; - else - list_op = CT_GET_LIST_PERSON_NOT_ASSIGNED_HAD_NUMBER_OF_ADDRBOOK_ID; - - ctui_create_list_select_view(clist_d->navi, phone_group_message_result_cb, - evas_object_data_get(clist_d->navi, "cgroup_d"), list_op, - clist_d->base_ab, clist_d->base_grp, 0); -} - -static void list_email_btn_cb(void *data, Evas_Object *obj, void *event_info) -{ - PH_TRACE; - int list_op; - ct_list_data *clist_d = (ct_list_data *) data; - - p_retm_if(NULL == clist_d, "clist_d is NULL"); - list_menu_hide_cb(clist_d, NULL, NULL); - - p_retm_if(NULL == evas_object_data_get(clist_d->navi, "cgroup_d"), - "evas_object_data_get() return NULL"); - - if (-1 == clist_d->base_grp) - list_op = CT_GET_LIST_PERSON_HAD_EMAIL_OF_ADDRBOOK_ID; - else if (clist_d->base_grp) - list_op = CT_GET_LIST_PERSON_HAD_EMAIL_OF_GROUP_ID; - else - list_op = CT_GET_LIST_PERSON_NOT_ASSIGNED_HAD_EMAIL_OF_ADDRBOOK_ID; - - ctui_create_list_select_view(clist_d->navi, phone_group_email_result_cb, - evas_object_data_get(clist_d->navi, "cgroup_d"), list_op, - clist_d->base_ab, clist_d->base_grp, 0); -} - -static Evas_Object* ct_send_message_email_create_popup(ct_list_data* clist_d) -{ - PH_TRACE; - Evas_Object* popup = elm_popup_add(clist_d->navi); - p_retvm_if(NULL == popup, NULL, "popup add failed"); - elm_object_part_text_set(popup, TITLE_TEXT, T_(PH_GET_TEXT_BASIC, PHTEXT_SEND_MESSAGE_EMAIL)); - - if(!phone_popup_add_button(popup, S_(PH_SYS_SK_CANCEL), NULL, clist_d)) - { - evas_object_del(popup); - return NULL; - } - - elm_object_style_set(popup, "content_no_vhpad"); - evas_object_show(popup); - return popup; -} - -static char* ct_send_message_email_gen_it_text_get(void *data, Evas_Object *obj, const char *part) -{ - PH_TRACE; - p_retvm_if(NULL == data, NULL, "data is null"); - return strdup((char*)data); -} - -static void ct_send_message_email_cb(void *data, Evas_Object *obj, void *event_info) -{ - PH_TRACE; - p_retm_if(NULL == data, "data is null"); - ct_list_data* clist_d = (ct_list_data*)data; - - list_popup_hide_cb(data, NULL, NULL); - list_menu_hide_cb(data, NULL, NULL); - - clist_d->popup = ct_send_message_email_create_popup(clist_d); - p_retm_if(NULL == clist_d->popup, "popup is null"); - - Evas_Object* genlist = elm_genlist_add(clist_d->popup); - if(NULL == genlist) - { - ERR("genlist is null"); - list_popup_hide_cb(data, NULL, NULL); - return; - } - elm_object_content_set(clist_d->popup, genlist); - - Elm_Genlist_Item_Class* itc = elm_genlist_item_class_new(); - itc->item_style = "1text/popup"; - itc->func.text_get = ct_send_message_email_gen_it_text_get; - - Elm_Object_Item* item = elm_genlist_item_append(genlist, itc, T_(PH_GET_TEXT_BASIC, PHTEXT_SEND_MESSAGE), - NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); - elm_object_item_disabled_set(item, EINA_TRUE); - - item = elm_genlist_item_append(genlist, itc, T_(PH_GET_TEXT_BASIC, PHTEXT_SEND_EMAIL), - NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); - elm_object_item_disabled_set(item, EINA_TRUE); - - elm_genlist_item_class_free(itc); -} - -static void ctui_list_more_btn_clicked_cb(void *data) -{ - PH_TRACE; - assert(data); - if (NULL != data) - { - ct_list_data* clist_d = static_cast<ct_list_data*>(data); - - // hide sweeped view - Elm_Object_Item *lastItem = clist_d->last_sweep_item; - - if (NULL != lastItem) - { - elm_genlist_item_decorate_mode_set(lastItem, "slide", EINA_FALSE); - elm_genlist_item_select_mode_set(lastItem, ELM_OBJECT_SELECT_MODE_DEFAULT); - clist_d->last_sweep_item = NULL; - } - - list_popup_hide_cb(data, NULL, NULL); - list_menu_hide_cb(data, NULL, NULL); - - clist_d->m_Menu = elm_ctxpopup_add(clist_d->navi); - if (clist_d->m_Menu) - { - int rotate = (int) evas_object_data_get(clist_d->navi, "phone_rotate"); - if (0 == rotate || 180 == rotate) - elm_ctxpopup_direction_priority_set(clist_d->m_Menu, ELM_CTXPOPUP_DIRECTION_DOWN, ELM_CTXPOPUP_DIRECTION_UP, ELM_CTXPOPUP_DIRECTION_LEFT, ELM_CTXPOPUP_DIRECTION_RIGHT); - evas_object_smart_callback_add(clist_d->popup, "dismissed", list_menu_hide_cb, clist_d); - - if (clist_d->list) - { - if (CONTACTS_ADDRESS_BOOK_MODE_READONLY != clist_d->base_ab_mode) - { - elm_ctxpopup_item_append(clist_d->m_Menu, S_(PH_SYS_SK_DELETE), NULL, ct_list_edit_cb, clist_d); - - Elm_Object_Item* menu_item = NULL; - - menu_item = elm_ctxpopup_item_append(clist_d->m_Menu, T_(PH_GET_TEXT_BASIC, PHTEXT_IMPORT_EXPORT), NULL, NULL, clist_d); - elm_object_item_disabled_set(menu_item, EINA_TRUE); - menu_item = elm_ctxpopup_item_append(clist_d->m_Menu, T_(PH_GET_TEXT_BASIC, PHTEXT_ACCOUNTS), NULL, NULL, clist_d); - elm_object_item_disabled_set(menu_item, EINA_TRUE); - elm_ctxpopup_item_append(clist_d->m_Menu, T_(PH_GET_TEXT_BASIC, PHTEXT_SEND_MESSAGE_EMAIL), NULL, ct_send_message_email_cb, clist_d); - menu_item = elm_ctxpopup_item_append(clist_d->m_Menu, T_(PH_GET_TEXT_BASIC, PHTEXT_CONTACTS_MENU_CONTACTS_TO_DISPLAY), NULL, list_view_button_cb, clist_d); - - if (NULL != menu_item) - { - unsigned int acc_cnt = 1; - contacts_list_h list = NULL; - const unsigned int MIN_NUMBER_OF_ADDRESSBOOKS = 2; - int err = CONTACTS_ERROR_NONE; - err = contacts_db_get_all_records(_contacts_address_book._uri, 0, 0, &list); - if (CONTACTS_ERROR_NONE != err) - ERR("contacts_db_get_all_records() Failed(%d)", err); - err = contacts_list_get_count(list, &acc_cnt); - if (CONTACTS_ERROR_NONE != err) - ERR("contacts_list_get_count() Failed(%d)", err); - err = contacts_list_destroy(list, true); - if (CONTACTS_ERROR_NONE != err) - ERR("contacts_list_destroy() Failed(%d)", err); - - if (acc_cnt < MIN_NUMBER_OF_ADDRESSBOOKS) - { - elm_object_item_disabled_set(menu_item, EINA_TRUE); - } - } - } - - elm_ctxpopup_item_append(clist_d->m_Menu, T_(PH_GET_TEXT_BASIC, PHTEXT_CONTACTS_MENU_SETTINGS), NULL, ct_list_settings_cb, clist_d); - } - - int x, y, w, h; - evas_object_geometry_get(clist_d->navi, &x, &y, &w, &h); - evas_object_move(clist_d->m_Menu, 0, y + h); - evas_object_show(clist_d->m_Menu); - } - else - { - ERR("ctui_list_more_btn_clicked_cb failed: %s", "elm_ctxpopup_add() return NULL"); - } - } -} - -static void list_more_button_cb(void *data) -{ - PH_TRACE; - assert(data); - if (NULL != data) - { - ct_list_data* clist_d = static_cast<ct_list_data*>(data); - - list_popup_hide_cb(data, NULL, NULL); - list_menu_hide_cb(data, NULL, NULL); - - clist_d->m_Menu = elm_ctxpopup_add(clist_d->navi); - if (NULL != clist_d->m_Menu) - { - int rotate = (int) evas_object_data_get(clist_d->navi, "phone_rotate"); - if (0 == rotate || 180 == rotate) - elm_ctxpopup_direction_priority_set(clist_d->m_Menu, ELM_CTXPOPUP_DIRECTION_DOWN, ELM_CTXPOPUP_DIRECTION_UP, ELM_CTXPOPUP_DIRECTION_LEFT, ELM_CTXPOPUP_DIRECTION_RIGHT); - - evas_object_smart_callback_add(clist_d->m_Menu, "dismissed", list_menu_hide_cb, clist_d); - - elm_ctxpopup_item_append(clist_d->m_Menu, S_(PH_SYS_BODY_MESSAGE), NULL, list_message_btn_cb, clist_d); - elm_ctxpopup_item_append(clist_d->m_Menu, T_(CT_GET_TEXT_BASIC ,CTTEXT_EMAIL), NULL, list_email_btn_cb, clist_d); - elm_ctxpopup_item_append(clist_d->m_Menu, S_(PH_SYS_BODY_REMOVE), NULL, list_remove_member_button_cb, clist_d); - - int x, y, w, h; - evas_object_geometry_get(clist_d->navi, &x, &y, &w, &h); - evas_object_move(clist_d->m_Menu, 0, y + h); - evas_object_show(clist_d->m_Menu); - } - else - { - ERR("list_more_button_cb failed: %s", "elm_ctxpopup_add() return NULL"); - } - } -} - -static void list_navi_item_update(void *data) -{ - PH_TRACE; - Evas_Object *new_button; - ct_list_data *clist_d = (ct_list_data *) data; - - p_retm_if(NULL == clist_d, "parameter(clist_d) is NULL"); - new_button = (Evas_Object *) evas_object_data_get(clist_d->navi, "new_button"); - - if (!clist_d->ug) - { - if (new_button) - { - if (CONTACTS_ADDRESS_BOOK_MODE_READONLY == clist_d->base_ab_mode) - elm_object_disabled_set(new_button, EINA_TRUE); - else - elm_object_disabled_set(new_button, EINA_FALSE); - } - if (NULL == clist_d->list) - { - clist_d->menu_cb = NULL; - } - else - { - clist_d->menu_cb = ctui_list_more_btn_clicked_cb; - } - } -} - -static void __list_ug_destroy_me_cb(void *data) -{ - PH_TRACE; - ct_list_data *clist_d = (ct_list_data *) data; - - if (clist_d->service_operation) - phone_service_reply_simple(clist_d->service_operation, - SERVICE_RESULT_FAILED); - - ug_destroy_me(clist_d->ug); -} - -static Evas_Object *list_create_add_contact_button(Evas_Object *pLayout_search, ct_list_data &clist_d, - Evas_Smart_Cb click_cb_func) -{ - PH_TRACE; - Evas_Object *pAddBtn = elm_object_part_content_get(clist_d.searchbar, "button_add"); - if (!pAddBtn) - { - pAddBtn = elm_button_add(pLayout_search); - if (pAddBtn) - { - elm_object_part_content_set(pLayout_search, "button_add", pAddBtn); - elm_object_style_set(pAddBtn, "plus"); - evas_object_size_hint_weight_set(pAddBtn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_smart_callback_add(pAddBtn, "clicked", click_cb_func, &clist_d); - evas_object_data_set(clist_d.searchbar, "add_button", pAddBtn); - evas_object_show(pAddBtn); - - Evas_Object *icon = elm_icon_add(pLayout_search); - elm_icon_standard_set(icon, PH_IMG_ICON_ADD); - elm_object_part_content_set(pAddBtn, "icon", icon); - } - } - return pAddBtn; -} - -static void list_make_navi(ct_list_data *clist_d) -{ - PH_TRACE; - p_retm_if(NULL == clist_d, "clist_d is NULL"); - - if (NULL == clist_d->list_navi_item_update_fn) - clist_d->list_navi_item_update_fn = list_navi_item_update; - - phone_navi_item_reset(clist_d->navi_item, clist_d); - // FIXME : should be rearragned accoring to new UX - if (CT_GET_LIST_VCARD == clist_d->list_op) - { - list_create_add_contact_button(clist_d->searchbar, *clist_d, list_add_all_contacts_button_cb); - } - else if (clist_d->navi_item != elm_naviframe_bottom_item_get(clist_d->navi)) - { // from group view - if (!clist_d->ug) - { - if (clist_d->base_grp) - { - Evas_Object *add_button = NULL; - add_button = list_create_add_contact_button(clist_d->searchbar, *clist_d, list_add_button_cb); - - if (CONTACTS_ADDRESS_BOOK_MODE_READONLY == clist_d->base_ab_mode) - elm_object_disabled_set(add_button, EINA_TRUE); - - if (clist_d->list) - { - clist_d->menu_cb = list_more_button_cb; - } - } - } - } - else if (!clist_d->ug || - !(PH_UG_REQUEST_LAUNCH_VOICECALL == clist_d->ug_request || - CT_UG_REQUEST_LIST_WITH_BACK >= clist_d->ug_request || - CT_UG_REQUEST_SELECT_CONTACT_ADD_TO_HOME == clist_d->ug_request || - CT_UG_REQUEST_SELECT_GROUP_ADD_TO_HOME == clist_d->ug_request) - ) - { - - Evas_Object *create_button __attribute__ ((unused)) = NULL; - if (!clist_d->ug) - { - if (clist_d->list) - { - clist_d->menu_cb = ctui_list_more_btn_clicked_cb; - } - } - create_button = list_create_add_contact_button(clist_d->searchbar, *clist_d, ctui_list_new_btn_clicked_cb); - if (NULL == clist_d->ug - || clist_d->ug_request < CT_UG_REQUEST_SELECT_PERSON - || (CT_UG_REQUEST_UPDATE_CONTACT <= clist_d->ug_request - && clist_d->ug_request <= CT_UG_REQUEST_UPDATE_WITH_WEB) - || (CT_UG_REQUEST_SAVE_IMG <= clist_d->ug_request - && clist_d->ug_request <= CT_UG_REQUEST_SAVE_RINGTONE)) - { - if (clist_d->ug_request) - { - clist_d->back_cb = __list_ug_destroy_me_cb; - } - } - else - { - clist_d->back_cb = __list_ug_destroy_me_cb; - } - } -} - -static void list_call_btn_pressed_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) -{ - PH_TRACE; - p_retm_if(NULL == data, "data is NULL"); - if (NULL != data) - { - Evas_Object *icon = NULL; - icon = static_cast<Evas_Object *>(elm_object_part_content_get((const Evas_Object *) data, "icon")); - elm_image_file_set(icon, PH_IMG_ICON_CALL_PRESS, NULL); - } -} - -static void list_call_btn_unpressed_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) -{ - PH_TRACE; - assert(data); - assert(obj); - p_retm_if(NULL == data, "data is NULL"); - if (NULL != data && NULL != obj) - { - Evas_Object *icon = NULL; - icon = static_cast<Evas_Object *>(elm_object_part_content_get((const Evas_Object *) data, "icon")); - elm_image_file_set(icon, PH_IMG_ICON_CALL, NULL); - - ct_list_data *clist_d = static_cast<ct_list_data*>(evas_object_data_get(obj, "clist_d")); - elm_genlist_item_select_mode_set(clist_d->last_sweep_item, ELM_OBJECT_SELECT_MODE_DEFAULT); - } -} - -static void list_msg_btn_pressed_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) -{ - PH_TRACE; - assert(data); - p_retm_if(NULL == data, "data is NULL"); - if (NULL != data) - { - Evas_Object *icon = NULL; - icon = static_cast<Evas_Object *>(elm_object_part_content_get((const Evas_Object *) data, "icon")); - elm_image_file_set(icon, PH_IMG_ICON_MESSAGE_PRESS, NULL); - } -} - -static void list_msg_btn_unpressed_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) -{ - PH_TRACE; - assert(data); - assert(obj); - p_retm_if(NULL == data, "data is NULL"); - if (NULL != data && NULL != obj) - { - Evas_Object *icon = NULL; - icon = static_cast<Evas_Object *>(elm_object_part_content_get((const Evas_Object *) data, "icon")); - elm_image_file_set(icon, PH_IMG_ICON_MESSAGE, NULL); - - ct_list_data *clist_d = static_cast<ct_list_data*>(evas_object_data_get(obj, "clist_d")); - elm_genlist_item_select_mode_set(clist_d->last_sweep_item, ELM_OBJECT_SELECT_MODE_DEFAULT); - } -} - -static Evas_Object* list_gl_icon_get(void *data, Evas_Object *obj, const char *part) -{ - PH_TRACE; - assert(data); - assert(obj); - assert(part); - - - if (NULL != data && NULL != obj && NULL != part) - { - ct_person_list *person_info = static_cast<ct_person_list*>(data); - p_retvm_if(NULL == person_info, NULL, "person_info is NULL"); - - ct_list_data *clist_d = static_cast<ct_list_data*>(evas_object_data_get(obj, "clist_d")); - - if (strcmp(part, "elm.slide.swallow.1") == 0) - { - Evas_Object *btn; - - if (NULL == person_info->number || '\0' == *person_info->number) - { - btn = phone_create_list_sweep_btn(obj, PH_IMG_ICON_DELETE); - p_retvm_if(NULL == btn, NULL, "phone_create_list_sweep_btn() return NULL"); - - elm_object_style_set(btn, "sweep/delete"); - evas_object_data_set(btn, "clist_d", clist_d); - evas_object_propagate_events_set(btn, EINA_FALSE); - evas_object_smart_callback_add(btn, "clicked", ct_list_sweep_del_cb, (void *) person_info->id); - - if (0 == person_info->id) - elm_object_disabled_set(btn, EINA_TRUE); - } - else - { - btn = phone_create_list_sweep_btn(obj, PH_IMG_ICON_CALL); - p_retvm_if(NULL == btn, NULL, "phone_create_list_sweep_btn() return NULL"); - evas_object_data_set(btn, "clist_d", clist_d); - evas_object_smart_callback_add(btn, "clicked", ct_list_call, person_info); - evas_object_event_callback_add(btn, EVAS_CALLBACK_MOUSE_DOWN, list_call_btn_pressed_cb, btn); - evas_object_event_callback_add(btn, EVAS_CALLBACK_MOUSE_UP, list_call_btn_unpressed_cb, btn); - } - return btn; - } - else if (strcmp(part, "elm.slide.swallow.2") == 0) - { - Evas_Object *btn; - - if (NULL == person_info->number || '\0' == *person_info->number) - return NULL; - - btn = phone_create_list_sweep_btn(obj, PH_IMG_ICON_MESSAGE); - p_retvm_if(NULL == btn, NULL, "phone_create_list_sweep_btn() return NULL"); - - evas_object_data_set(btn, "clist_d", clist_d); - evas_object_smart_callback_add(btn, "clicked", ct_list_msg, person_info); - evas_object_event_callback_add(btn, EVAS_CALLBACK_MOUSE_DOWN, list_msg_btn_pressed_cb, btn); - evas_object_event_callback_add(btn, EVAS_CALLBACK_MOUSE_UP, list_msg_btn_unpressed_cb, btn); - - return btn; - } - else if (strcmp(part, "elm.slide.swallow.3") == 0) - { - Evas_Object *btn; - btn = phone_create_list_sweep_btn(obj, PH_IMG_ICON_DELETE); - p_retvm_if(NULL == btn, NULL, "phone_create_list_sweep_btn() return NULL"); - - elm_object_style_set(btn, "sweep/delete"); - evas_object_data_set(btn, "clist_d", clist_d); - evas_object_smart_callback_add(btn, "clicked", ct_list_sweep_del_cb, (void *) person_info->id); - - if (0 == person_info->id) - elm_object_disabled_set(btn, EINA_TRUE); - - return btn; - } - else if (0 == strcmp(part, "elm.icon")) - { - int err = CONTACTS_ERROR_NONE; - contacts_record_h record = NULL; - Evas_Object *icon; - - if (!person_info->img_loaded) - { - if (person_info->id) - { - err = contacts_db_get_record(_contacts_person._uri, person_info->id, &record); - p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_db_get_record() Failed(%d)", err); - - err = contacts_record_get_str(record, _contacts_person.image_thumbnail_path, &(person_info->img_path)); - p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_get_str() Failed(%d)", err); - - err = contacts_record_destroy(record, true); - p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_destroy() Failed(%d)", err); - } - person_info->img_loaded = true; - } - - icon = elm_icon_add(obj); - if (icon) - { - elm_image_prescale_set(icon, CT_LIST_ICON_SIZE); - if (NULL != person_info->img_path) - { - elm_image_file_set(icon, person_info->img_path, NULL); - } - else - { - elm_image_file_set(icon, IMG_DEFAULT, NULL); - } - - evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); - evas_object_show(icon); - } - return icon; - } - else if (0 == strcmp(part, "elm.edit.icon.1")) - { - Evas_Object *check; - check = ct_list_edit_add_check(obj, &person_info->checked, clist_d); - p_retvm_if(NULL == check, NULL, "ct_list_edit_add_check() return NULL"); - evas_object_data_set(check, "person_info", person_info); - return check; - } - } - - return NULL; -} - -API void list_create_itcs(ct_list_data *clist_d) -{ - PH_TRACE; - assert(clist_d); - if (NULL != clist_d) - { - clist_d->itcs[CT_LIST_ITEM_NO_NUMBER].item_style = "1text.1icon.2.tb"; - clist_d->itcs[CT_LIST_ITEM_NO_NUMBER].decorate_item_style = "mode/slide3"; - clist_d->itcs[CT_LIST_ITEM_NO_NUMBER].func.text_get = ct_list_gl_label_get; - clist_d->itcs[CT_LIST_ITEM_NO_NUMBER].func.content_get = list_gl_icon_get; - clist_d->itcs[CT_LIST_ITEM_NO_NUMBER].decorate_all_item_style = "edit_default"; - - clist_d->itcs[CT_LIST_ITEM].item_style = "1text.1icon.2.tb"; - clist_d->itcs[CT_LIST_ITEM].decorate_item_style = "mode/slide"; - clist_d->itcs[CT_LIST_ITEM].func.text_get = ct_list_gl_label_get; - clist_d->itcs[CT_LIST_ITEM].func.content_get = list_gl_icon_get; - clist_d->itcs[CT_LIST_ITEM].decorate_all_item_style = "edit_default"; - - clist_d->itcs[CT_LIST_ITEM_SEARCH_NO_NUMBER].item_style = "1text.1icon.2.tb"; - clist_d->itcs[CT_LIST_ITEM_SEARCH_NO_NUMBER].decorate_item_style = "mode/slide3"; - clist_d->itcs[CT_LIST_ITEM_SEARCH_NO_NUMBER].func.text_get = ct_list_gl_label_get; - clist_d->itcs[CT_LIST_ITEM_SEARCH_NO_NUMBER].func.content_get = list_gl_icon_get; - clist_d->itcs[CT_LIST_ITEM_SEARCH_NO_NUMBER].decorate_all_item_style = "edit_default"; - - clist_d->itcs[CT_LIST_ITEM_SEARCH].item_style = "2text.1icon.4.tb"; - clist_d->itcs[CT_LIST_ITEM_SEARCH].decorate_item_style = "mode/slide"; - clist_d->itcs[CT_LIST_ITEM_SEARCH].func.text_get = ct_list_gl_label_get; - clist_d->itcs[CT_LIST_ITEM_SEARCH].func.content_get = list_gl_icon_get; - clist_d->itcs[CT_LIST_ITEM_SEARCH].decorate_all_item_style = "edit_default"; - - clist_d->itcs[CT_LIST_ITEM_COUNT].item_style = "1text.1icon.2.tb"; - clist_d->itcs[CT_LIST_ITEM_COUNT].func.text_get = ct_list_count_gl_label_get; - } -} - -API void ctui_list_navi_set(int mode, ct_list_data *clist_d) -{ - PH_TRACE; - p_retm_if(NULL == clist_d, "clist_d is NULL"); - Evas_Object *delete_item = (Evas_Object *) evas_object_data_get(clist_d->navi, "delete_button"); - if(delete_item) - { - evas_object_del(delete_item); - } - evas_object_data_del(clist_d->navi, "new_button"); - evas_object_data_del(clist_d->navi, "button_add"); - phone_navi_item_reset(clist_d->navi_item, clist_d); - - switch (mode) - { - case CT_LIST_MODE_DEFAULT: - list_make_navi(clist_d); - break; - case CT_LIST_MODE_EDIT: - ct_list_edit_make_edit_navi(clist_d); - if (CT_LIST_MULTI_ADD_MEMBER != clist_d->view_id) - ctui_navi_btn_disabled_set(clist_d->navi, EINA_TRUE); - ctui_list_update_selection_info(clist_d); - break; - default: - return; - } -} - -Evas_Object* ct_list_create_contact_view(ct_list_data *clist_d) -{ - PH_TRACE; - list_create_itcs(clist_d); - clist_d->gl_sel = ct_list_ug_gl_sel; - clist_d->gl_sel_data = clist_d; - clist_d->edit_sel_update = ctui_list_update_selection_info; - return ct_list_create_contact_layout(clist_d); -} - -// Group > Group detail view : In case of UG, it can be check view -API Evas_Object* ctui_list_create_contact_view_with_info( - ph_view_info *view_info, int list_op, ct_group_list *info) -{ - PH_TRACE; - ct_list_data *clist_d; - const char *ab_name = NULL; - char temp[PH_TEXT_MAX_LEN]; - - p_retv_if(CT_GET_LIST_VCARD == list_op, NULL); - clist_d = (ct_list_data *) calloc(1, sizeof(ct_list_data)); - p_retvm_if(!clist_d, NULL, "clist_d is NULL, Not enough memory"); - - clist_d->win = view_info->win; - clist_d->navi = view_info->navi; - clist_d->ug = view_info->ug; - clist_d->ug_data = view_info->ug_data; - clist_d->ug_request = view_info->ug_request; - clist_d->base_ab = -1; - - switch (clist_d->ug_request) - { - //case PH_UG_REQUEST_SELECT_NUMBER: - //case PH_UG_REQUEST_CHECK_FOR_NUMBER: - case CT_UG_REQUEST_SELECT_NUMBER: - case CT_UG_REQUEST_CHECK_FOR_NUMBER: - clist_d->list_op = list_op + 1; - break; - //case PH_UG_REQUEST_SELECT_EMAIL: - //case PH_UG_REQUEST_CHECK_FOR_EMAIL: - case CT_UG_REQUEST_SELECT_EMAIL: - case CT_UG_REQUEST_CHECK_FOR_EMAIL: - clist_d->list_op = list_op + 2; - break; - case CT_UG_REQUEST_SELECT_NUMBER_OR_EMAIL: - case CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL: - clist_d->list_op = list_op + 3; - break; - default: - clist_d->list_op = list_op; - break; - } - - clist_d->base_ab = info->id_ab; - clist_d->base_grp = info->id_grp; - clist_d->base_ab_mode = info->mode; - ct_list_get_contacts(clist_d, &clist_d->list); - clist_d->base_layout = ct_list_create_contact_view(clist_d); - clist_d->title = SAFE_STRDUP(info->name); - clist_d->navi_item = elm_naviframe_item_push(clist_d->navi, clist_d->title, - NULL, NULL, clist_d->base_layout, NULL); - if (0 < clist_d->base_ab) - { - temp[0] = '\0'; - ctui_get_addressbook_name(clist_d->base_ab, temp, sizeof(temp)); - ab_name = temp; - } - else - ab_name = T_(CT_GET_TEXT_BASIC, CTTEXT_PHONE); - - elm_object_item_part_text_set(clist_d->navi_item, "subtitle", ab_name); - clist_d->sub_title = strdup(ab_name); - - switch (clist_d->ug_request) - { - case CT_UG_REQUEST_CHECK: - case CT_UG_REQUEST_CHECK_FOR_NUMBER: - case CT_UG_REQUEST_CHECK_FOR_EMAIL: - case CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL: - ctui_list_edit_mode_start(clist_d); - break; - default: - ctui_list_navi_set(CT_LIST_MODE_DEFAULT, clist_d); - break; - } - return clist_d->navi; -} - -API void ctui_list_set_search_text(ct_list_data *clist_d, const char *text) -{ - PH_TRACE; - p_retm_if(!clist_d, "clist_d is NULL"); - if (clist_d->searchbar) - { - Evas_Object *en; - en = elm_object_part_content_get(clist_d->searchbar, - "elm.swallow.content"); - elm_entry_entry_set(en, text); - } -} diff --git a/lib/list/ct-list-contact-view.h b/lib/list/ct-list-contact-view.h deleted file mode 100755 index 27b2421..0000000 --- a/lib/list/ct-list-contact-view.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.1 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * 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. - */ - -/** - * Module responsible for creating contacts-list view and handling efl-callbacks relevant to it. - */ - -#ifndef __CONTACTS_LIST_CONTACT_VIEW_H__ -#define __CONTACTS_LIST_CONTACT_VIEW_H__ - -/** - * Initialises layout for contact--list view based on specified data-structure. - * @param clist_d data-structure the contact-list will be based on. - * @return layout of contact-list. - * */ -Evas_Object* ct_list_create_contact_view(ct_list_data *clist_d); - -#endif //__CONTACTS_LIST_CONTACT_VIEW_H__ diff --git a/lib/list/ct-list-edit-view.cpp b/lib/list/ct-list-edit-view.cpp deleted file mode 100755 index 69807a3..0000000 --- a/lib/list/ct-list-edit-view.cpp +++ /dev/null @@ -1,1102 +0,0 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.1 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * 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 <ui-gadget-module.h> -#include <app.h> -#include <fcntl.h> - -#include "phone.h" -#include "phone-common.h" -#include "ct-list.h" -#include "ct-list-utils.h" -#include "ct-list-view-ug.h" -#include "ct-list-contact-view.h" -#include <stdio.h> -#include <stdlib.h> - -#define TIMER_DURATION 0.2 -#define FOUND_BY_NUMBER 1 -#define FOUND_BY_EMAIL 2 - -static void list_edit_del_cb(void *data, Evas_Object *obj, void *event_info); -ct_person_list *find_info_in_list_by_id(Eina_List *check_list, int person_id); -ct_person_list *copy_contact_info(ct_person_list *person_info); - -Eina_List* update_list_person_check_info(Eina_List *check_list,ct_person_list * person_info) -{ - PH_TRACE; - - ct_person_list * person_copy_info = copy_contact_info(person_info); - - if (person_copy_info) - { - if (EINA_TRUE == person_copy_info->checked) - { - check_list = eina_list_append(check_list,(void *) person_copy_info); - } - else - { - if (check_list) - { - ct_person_list * person_info_list = find_info_in_list_by_id(check_list, person_copy_info->id); - if (person_info_list) - { - check_list = eina_list_remove(check_list,(void *) person_info_list); - free(person_info_list); - free(person_copy_info); - } - } - } - } - return check_list; -} - -ct_person_list *copy_contact_info(ct_person_list *person_info) -{ - PH_TRACE; - - ct_person_list *p_info = NULL; - if (person_info) - { - p_info = (ct_person_list *) calloc(1, sizeof(ct_person_list)); - p_info->checked = person_info->checked; - p_info->id_ret = person_info->id_ret; - p_info->id_ret_type = person_info->id_ret_type; - p_info->id = person_info->id; - } - return p_info; -} - -static inline void list_edit_items_checked_set(ct_list_data *clist_d, - Eina_Bool checked) -{ - PH_TRACE; - Eina_List *l; - void *v_person_info = NULL; - - EINA_LIST_FOREACH(clist_d->list, l, v_person_info) - { - ct_person_list *person_info = (ct_person_list *) v_person_info; - if (NULL == person_info) - { - ERR("elm_object_item_data_get() return NULL"); - continue; - } - person_info->checked = checked; - clist_d->list_check_info = update_list_person_check_info(clist_d->list_check_info, person_info); - } -} - -static inline void list_edit_all_items_checked_set(Eina_List *list, - Eina_Bool checked) -{ - PH_TRACE; - Eina_List *l; - void *v_person_info; - - EINA_LIST_FOREACH(list, l, v_person_info) - { - ct_person_list *person_info = (ct_person_list *) v_person_info; - if (NULL == person_info) - { - ERR("elm_object_item_data_get() return NULL"); - continue; - } - person_info->checked = checked; - } -} - -void ct_list_edit_mode_end(ct_list_data *clist_d) -{ - PH_TRACE; - Evas_Object *en; - char buf[PH_TEXT_MAX_LEN + 1]; - - clist_d->list_mode = CT_LIST_MODE_DEFAULT; - ct_list_clear_pdata(clist_d); - - if (clist_d->select_all_layout) - { - elm_box_unpack(clist_d->box, clist_d->select_all_layout); - evas_object_del(clist_d->select_all_layout); - clist_d->select_all_layout = NULL; - } - clist_d->cnt_checked = 0; - list_edit_all_items_checked_set(clist_d->list, EINA_FALSE); - if (clist_d->list_check_info) - { - ctui_list_free_contacts(clist_d->list_check_info); - clist_d->list_check_info = NULL; - } - - if (NULL == clist_d->count_item && clist_d->cnt_list_total - && !(clist_d->search_str && *clist_d->search_str)) - { - clist_d->count_item = elm_genlist_item_append(clist_d->genlist, - &clist_d->itcs[CT_LIST_ITEM_COUNT], - (void *) clist_d->cnt_list_total, NULL, ELM_GENLIST_ITEM_NONE, - NULL, NULL); - elm_object_item_disabled_set(clist_d->count_item, EINA_TRUE); - } - - if (clist_d->genlist) - elm_object_focus_set(clist_d->genlist, EINA_TRUE); - - if (clist_d->search_str && *clist_d->search_str) - ctui_list_searchbar_cancel_cb(clist_d->searchbar, NULL, NULL); - - elm_genlist_decorate_mode_set(clist_d->genlist, EINA_FALSE); - ctui_list_navi_set(CT_LIST_MODE_DEFAULT, clist_d); - - if (CT_LIST_IN_MULTI_TAB != clist_d->tab_mode - && CT_UG_REQUEST_SELECT_PERSON <= clist_d->ug_request) - { - snprintf(buf, sizeof(buf), "%s (%d)", clist_d->title, - clist_d->cnt_list_total); - elm_object_item_text_set(clist_d->navi_item, buf); - } - - en = elm_object_part_content_get(clist_d->searchbar, "elm.swallow.content"); - elm_entry_entry_set(en, NULL); - - phone_hide_notify(clist_d->base_layout); - - phone_set_searchbar_add_button_visible(*clist_d, true); -} - -static void list_edit_cancel_cb(void *data) -{ - PH_TRACE; - ct_list_data *clist_d = (ct_list_data *) data; - if(clist_d) - { - ct_list_edit_mode_end(clist_d); - } -} - -static void list_edit_delete_persons(ct_list_data *clist_d); - -static void list_edit_remove_record_cb(int err, void *data) -{ - PH_TRACE; - ct_list_data *clist_d = (ct_list_data *) data; - ph_progress_info *p_info = NULL; - - p_retm_if(NULL == clist_d, "Invalid parameter(clist_d is NULL)"); - p_info = clist_d->p_info; - p_retm_if(NULL == p_info, "Invalid parameter(p_info is NULL)"); - - if (p_info->update_ids) - { - free(p_info->update_ids); - p_info->update_ids = NULL; - } - - if (p_info->update_list) - { - contacts_list_destroy(p_info->update_list, true); - p_info->update_list = NULL; - } - - if (CONTACTS_ERROR_NONE != err || p_info->alive == false) - { - if (p_info->popup) - { - evas_object_del(p_info->popup); - p_info->popup = NULL; - } - phone_show_tickernoti(S_(PH_SYS_POP_FAILED)); - free(p_info); - clist_d->p_info = NULL; - clist_d->updating = false; - ct_list_edit_mode_end(clist_d); - return; - } - else if (p_info->cnt == p_info->cnt_checked_total) - { - if (p_info->popup) - { - evas_object_del(p_info->popup); - p_info->popup = NULL; - } - if (clist_d->base_grp) - phone_show_tickernoti(S_(PH_SYS_POP_REMOVED)); - else - phone_show_tickernoti(S_(PH_SYS_POP_DELETED)); - free(p_info); - clist_d->p_info = NULL; - clist_d->updating = false; - ct_list_edit_mode_end(clist_d); - return; - } - else - { - list_edit_delete_persons(clist_d); - } -} - -static void list_edit_remove_group_relation(int group_id, int person_id, - contacts_list_h list_result) -{ - PH_TRACE; - contacts_list_h list = NULL; - contacts_filter_h filter = NULL; - contacts_query_h query = NULL; - int err = CONTACTS_ERROR_NONE; - - p_retm_if(group_id <= 0, "Invalid parameter(group_id is %d)", group_id); - p_retm_if(person_id <= 0, "Invalid parameter(person_id is %d)", person_id); - p_retm_if(NULL == list_result, "Invalid parameter(list is NULL)"); - - do - { - if (CONTACTS_ERROR_NONE - != (err = contacts_query_create(_contacts_contact_grouprel._uri, - &query))) - break; - if (CONTACTS_ERROR_NONE - != (err = contacts_filter_create( - _contacts_contact_grouprel._uri, &filter))) - break; - - if (CONTACTS_ERROR_NONE - != (err = contacts_filter_add_int(filter, - _contacts_contact_grouprel.group_id, - CONTACTS_MATCH_EQUAL, group_id))) - break; - if (CONTACTS_ERROR_NONE - != (err = contacts_filter_add_operator(filter, - CONTACTS_FILTER_OPERATOR_AND))) - break; - if (CONTACTS_ERROR_NONE - != (err = contacts_filter_add_int(filter, - _contacts_contact_grouprel.person_id, - CONTACTS_MATCH_EQUAL, person_id))) - break; - if (CONTACTS_ERROR_NONE - != (err = contacts_query_set_filter(query, filter))) - break; - if (CONTACTS_ERROR_NONE - != (err = contacts_db_get_records_with_query(query, 0, 0, &list))) - break; - - while (CONTACTS_ERROR_NONE == err) - { - contacts_record_h record = NULL; - int temp = 0; - int contact_id = 0; - contacts_record_h record_group_relation = NULL; - phone_cts_get_int_from_list(list, - _contacts_contact_grouprel.contact_id, &contact_id); - err = contacts_db_get_record(_contacts_contact._uri, contact_id, - &record); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_db_get_record() Failed(%d)", err); - - while (CONTACTS_ERROR_NONE - == (contacts_record_get_child_record_at_p(record, - _contacts_contact.group_relation, temp++, - &record_group_relation))) - { - int group_relation_group_id = 0; - contacts_record_get_int(record_group_relation, - _contacts_group_relation.group_id, - &group_relation_group_id); - if (group_id == group_relation_group_id) - { - err = contacts_record_remove_child_record(record, - _contacts_contact.group_relation, - record_group_relation); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_record_remove_child_record() Failed(%d)", - err); - contacts_list_add(list_result, record); - break; - } - } - err = contacts_list_next(list); - } - contacts_filter_destroy(filter); - contacts_query_destroy(query); - contacts_list_destroy(list, true); - return; - } - while (0); - ERR("update_group_relation Failed(%d)", err); - contacts_filter_destroy(filter); - contacts_query_destroy(query); - contacts_list_destroy(list, true); - return; -} - -void list_edit_delete_persons_without_progressbar_cb(int err, void *data) -{ - PH_TRACE; - ct_list_data *clist_d = (ct_list_data *) data; - p_retm_if(NULL == clist_d, "Invalid parameter(clist_d is NULL)"); - - PH_DBG("err = %d", err); - if (CONTACTS_ERROR_NONE != err) - { - clist_d->updating = false; - phone_show_tickernoti(S_(PH_SYS_POP_FAILED)); - } - else if (clist_d->update_delete_list) - { - contacts_list_destroy(clist_d->update_delete_list, true); - clist_d->update_delete_list = NULL; - phone_show_tickernoti(S_(PH_SYS_POP_REMOVED)); - } - - if (clist_d->update_add_list) - { - contacts_db_update_records_async(clist_d->update_add_list, - ct_list_add_contacts_to_group_without_progressbar_cb, clist_d); - } - else - { - elm_naviframe_item_pop(clist_d->navi); - } -} - -void list_edit_delete_persons_without_progressbar(ct_list_data *clist_d) -{ - PH_TRACE; - p_retm_if(NULL == clist_d, "parameter(clist_d) is NULL"); - Eina_List *l = NULL; - void *v_person_info = NULL; - contacts_list_h list = NULL; - - int err = contacts_list_create(&list); - p_retm_if(CONTACTS_ERROR_NONE != err, "contacts_list_create() Failed(%d)", err); - - EINA_LIST_FOREACH(clist_d->list_check_info, l, v_person_info) - { - ct_person_list *person_info = (ct_person_list *) v_person_info; - if (person_info) - { - PH_DBG("person_info->display = %s", person_info->display); - list_edit_remove_group_relation(clist_d->base_grp, person_info->id, list); - } - } - - unsigned int count = 0; - contacts_list_get_count(list, &count); - if (count) - { - clist_d->update_delete_list = list; - } - else - { - contacts_list_destroy(clist_d->update_delete_list, true); - clist_d->update_delete_list = NULL; - } -} - -static void list_edit_delete_persons(ct_list_data *clist_d) -{ - PH_TRACE; - const int LIST_BULK_LENGTH = 50; - int count = 0; - int *ids = NULL; - double value = 0.0; - char percent_total[PH_TEXT_MAX_LEN + 1] = { 0, }; - char percent[PH_TEXT_MAX_LEN + 1] = { 0, }; - ph_progress_info *p_info = NULL; - void *v_person_info = NULL; - Eina_List *l = NULL; - int err = CONTACTS_ERROR_NONE; - contacts_list_h list = NULL; - - p_retm_if(NULL == clist_d, "parameter(clist_d) is NULL"); - p_info = clist_d->p_info; - p_retm_if(NULL == p_info, "parameter(p_info) is NULL"); - - if (p_info->update_ids) - { - free(p_info->update_ids); - p_info->update_ids = NULL; - } - - if (clist_d->base_grp) - { - err = contacts_list_create(&list); - p_retm_if(CONTACTS_ERROR_NONE != err, - "contacts_list_create() Failed(%d)", err); - } - else - { - if (p_info->cnt_checked_total - p_info->cnt < LIST_BULK_LENGTH) - ids = (int *) calloc(1, - sizeof(int) * (p_info->cnt_checked_total - p_info->cnt)); - else - ids = (int *) calloc(1, sizeof(int) * LIST_BULK_LENGTH); - p_retm_if(NULL == ids, "calloc() return NULL"); - } - - if (p_info->cnt == 0 && p_info->cnt_checked_total > 0) - { - EINA_LIST_FOREACH(clist_d->list_check_info, l, v_person_info) - { - ct_person_list *person_info = (ct_person_list *) v_person_info; - if (NULL == person_info) - continue; - clist_d->list_delete_records = eina_list_append( - clist_d->list_delete_records, (void*) person_info->id); - } - } - if(p_info->cnt == 0) - { - create_no_content_layout(clist_d, clist_d->content_layout); - } - void *person_id; - l = NULL; - EINA_LIST_FOREACH(clist_d->list_delete_records, l, person_id) - { - if (clist_d->base_grp > 0) - list_edit_remove_group_relation(clist_d->base_grp, (int) person_id, - list); - else - { - if (ids) - ids[count] = (int) person_id; - } - - clist_d->list_delete_records = eina_list_remove_list( - clist_d->list_delete_records, l); - count++; - p_info->cnt++; - - if (LIST_BULK_LENGTH == count - || p_info->cnt == p_info->cnt_checked_total) - break; - } - - if (clist_d->base_grp) - { - p_info->update_list = list; - err = contacts_db_update_records_async(list, list_edit_remove_record_cb, - clist_d); - p_retm_if(err != CONTACTS_ERROR_NONE, - "contacts_db_update_records_async() fail(%d)", err); - } - else - { - p_info->update_ids = ids; - err = contacts_db_delete_records_async(_contacts_person._uri, ids, - count, list_edit_remove_record_cb, clist_d); - p_retm_if(err != CONTACTS_ERROR_NONE, - "contacts_db_delete_records_async() fail(%d)", err); - } - - value = (double) p_info->cnt / (double) p_info->cnt_checked_total; - elm_progressbar_value_set(p_info->progressbar, value); - snprintf(percent, sizeof(percent), "%d%%", - (int) (100.0 * (double) p_info->cnt - / (double) p_info->cnt_checked_total)); - snprintf(percent_total, sizeof(percent_total), "%d/%d", p_info->cnt, - p_info->cnt_checked_total); - edje_object_part_text_set(elm_layout_edje_get(p_info->layout), - "elm.text.subtext1", percent); - edje_object_part_text_set(elm_layout_edje_get(p_info->layout), - "elm.text.subtext2", percent_total); - - PH_DBG("list_edit_delete_persons %d", count); -} - -static Eina_Bool __list_edit_delete_start_timer_cb(void *data) -{ - PH_TRACE; - ct_list_data *clist_d = (ct_list_data *) data; - list_edit_delete_persons(clist_d); - - if (clist_d && clist_d->list_check_info) - { - ctui_list_free_contacts(clist_d->list_check_info); - clist_d->list_check_info = NULL; - } - return ECORE_CALLBACK_CANCEL; -} - -void list_edit_popup_hide_cb(void *data, Evas_Object *obj, void *event_info) -{ - PH_TRACE; - assert(data); - if (NULL != data) - { - ct_list_data *pCListD = static_cast<ct_list_data *>(data); - if (NULL != pCListD->popup) - { - evas_object_del(pCListD->popup); - pCListD->popup = NULL; - } - elm_object_tree_focus_allow_set(pCListD->navi, EINA_TRUE); - } -} - -void list_edit_menu_hide_cb(void *data, Evas_Object *obj, void *event_info) -{ - PH_TRACE; - assert(data); - if (NULL != data) - { - ct_list_data *pCListD = static_cast<ct_list_data *>(data); - if (NULL != pCListD->m_Menu) - { - evas_object_del(pCListD->m_Menu); - pCListD->m_Menu = NULL; - } - elm_object_tree_focus_allow_set(pCListD->navi, EINA_TRUE); - } -} - -void createDeletePopup(void *data) -{ - PH_TRACE; - if (!data) - { - return; - } - - ct_list_data *pCListD = static_cast<ct_list_data *>(data); - char buffer[PH_TEXT_MAX_LEN] = { 0 }; - snprintf(buffer, sizeof(buffer) / sizeof(buffer[0]), "%s %d %s", - T_(PH_GET_TEXT_BASIC,PHTEXT_CONTACTS_POP_DELETE), - pCListD->cnt_checked, - T_(PH_GET_TEXT_BASIC,PHTEXT_CONTACTS_POP_CONTACTS)); - Evas_Object *pPopup = elm_popup_add(pCListD->win); - if (pPopup) - { - evas_object_size_hint_weight_set(pPopup, EVAS_HINT_EXPAND, - EVAS_HINT_EXPAND); - elm_object_text_set(pPopup, buffer); - evas_object_show(pPopup); - } - pCListD->popup = pPopup; - Evas_Object *pDelete = elm_button_add(pPopup); - if (pDelete) - { - elm_object_text_set(pDelete, - T_(PH_GET_TEXT_BASIC,PHTEXT_CONTACTS_BUTTON_DELETE)); - elm_object_part_content_set(pPopup, "button1", pDelete); - elm_object_style_set(pDelete, "popup_button/default"); - evas_object_smart_callback_add(pDelete, "clicked", list_edit_del_cb, - pCListD); - evas_object_show(pDelete); - } - - Evas_Object *pCancel = elm_button_add(pPopup); - if (pCancel) - { - elm_object_text_set(pCancel, - T_(PH_GET_TEXT_BASIC,PHTEXT_CONTACTS_BUTTON_CANCEL)); - elm_object_part_content_set(pPopup, "button2", pCancel); - elm_object_style_set(pCancel, "popup_button/default"); - evas_object_smart_callback_add(pCancel, "clicked", - list_edit_popup_hide_cb, pCListD); - evas_object_show(pCancel); - } -} - -void createContListDeletePopupCB(void *data, Evas_Object *obj, void *event_info) -{ - PH_TRACE; - assert(data); - if (NULL != data) - { - list_edit_popup_hide_cb(data, NULL, NULL); - - ct_list_data *clist_d = static_cast<ct_list_data*>(data); - ph_progress_info *p_info = (ph_progress_info *) calloc(1, sizeof(ph_progress_info)); - if (NULL != p_info) - { - clist_d->updating = true; - clist_d->p_info = p_info; - p_info->cnt_checked_total = clist_d->cnt_checked; - p_info->alive = true; - p_info->result = TRUE; - p_info->popup = phone_progressbar_popup(clist_d->win, p_info, - T_(CT_GET_TEXT_BASIC, CTTEXT_DELETING_CONTACTS)); - p_info->timer = ecore_timer_add(0.5, - __list_edit_delete_start_timer_cb, clist_d); - } - else - { - ERR("createContListDeletePopupCB() failed: %s", - "calloc return NULL"); - } - } -} - -void createContListDeleteConfirmationPopupCB(void *data, Evas_Object *obj, void *event_info) -{ - PH_TRACE; - assert(data); - if (NULL != data) - { - list_edit_popup_hide_cb(data, NULL, NULL); - - ct_list_data *clist_d = static_cast<ct_list_data*>(data); - Evas_Object *btn = phone_create_confirm_popup(&clist_d->popup, clist_d->win, S_(PH_SYS_POP_DELETE_Q), createContListDeletePopupCB, data); - evas_object_data_set(btn, "clist_d", clist_d); - } -} - -static void list_edit_del_cb(void *data, Evas_Object *obj, void *event_info) -{ - PH_TRACE; - ct_list_data *clist_d = (ct_list_data *) data; - ph_progress_info *p_info; - list_edit_popup_hide_cb(data, NULL, NULL); - - p_info = (ph_progress_info *) calloc(1, sizeof(ph_progress_info)); - p_retm_if(NULL == p_info, "calloc return NULL"); - - clist_d->updating = true; - clist_d->p_info = p_info; - p_info->cnt_checked_total = clist_d->cnt_checked; - p_info->alive = true; - p_info->result = TRUE; - p_info->popup = phone_progressbar_popup(clist_d->win, p_info, T_(CT_GET_TEXT_BASIC, CTTEXT_DELETING_CONTACTS)); - p_info->timer = ecore_timer_add(0.5, __list_edit_delete_start_timer_cb, clist_d); -} - -static void list_edit_check_done(void *data, Evas_Object *obj, void *event_info) -{ - PH_TRACE; - int cnt_checked; - int person_count = 0; - int number_count = 0; - int email_count = 0; - int *result_list_number = NULL; - int *result_list_email = NULL; - int *result_list_person = NULL; - Eina_List *l; - void *v_person_info; - ct_list_data *clist_d = (ct_list_data *) data; - - // called by setting - import contacts (list - vcard contacts) - if (CT_GET_LIST_VCARD == clist_d->list_op) - { - clist_d->select_result_cb(clist_d->select_result_cb_data, NULL, 0); - phone_hide_notify(clist_d->base_layout); - return; - } - cnt_checked = eina_list_count(clist_d->list_check_info); - - PH_DBG("clist_d->ug_request %d count %d", clist_d->ug_request, cnt_checked); - if (CT_UG_REQUEST_CHECK_FOR_NUMBER == clist_d->ug_request) - result_list_number = (int *) calloc(cnt_checked, sizeof(int)); - else if (CT_UG_REQUEST_CHECK_FOR_EMAIL == clist_d->ug_request) - result_list_email = (int *) calloc(cnt_checked, sizeof(int)); - else if (CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL == clist_d->ug_request) - { - result_list_number = (int *) calloc(cnt_checked, sizeof(int)); - result_list_email = (int *) calloc(cnt_checked, sizeof(int)); - } - else - result_list_person = (int *) calloc(cnt_checked, sizeof(int)); - - EINA_LIST_FOREACH(clist_d->list_check_info, l, v_person_info) - { - ct_person_list *person_info = (ct_person_list *) v_person_info; - - if (NULL == person_info || !person_info->checked) - continue; - if (FOUND_BY_NUMBER == person_info->id_ret_type) - { - result_list_number[number_count++] = person_info->id_ret; - } - else if (FOUND_BY_EMAIL == person_info->id_ret_type) - { - if (result_list_email) - result_list_email[email_count++] = person_info->id_ret; - } - else - { - if (result_list_person) - result_list_person[person_count++] = person_info->id; - } - } - - // setting - import,export / group-view - message,email,chaton,calendar - if (clist_d->select_result_cb) - { // called by setting view - check person_info - if (CT_UG_REQUEST_CHECK_FOR_NUMBER != clist_d->ug_request) - ctui_list_edit_navi_pop(clist_d, NULL, NULL); - elm_naviframe_item_pop(clist_d->navi); - } - if (clist_d->contact_add_cb) - { // called by group,favorite view - check person_info - if (0 < cnt_checked) - { - clist_d->contact_add_cb(clist_d->win, clist_d->navi, cnt_checked); - phone_hide_notify(clist_d->base_layout); - } - else - elm_naviframe_item_pop_to((Elm_Object_Item *) - evas_object_data_get(clist_d->navi, "navi_it_pop")); - if (result_list_person) - free(result_list_person); - if (result_list_number) - free(result_list_number); - if (result_list_email) - free(result_list_email); - return; - } - - if (CT_UG_REQUEST_CHECK_FOR_NUMBER == clist_d->ug_request) - { - if (clist_d->service_operation) - phone_list_ug_return_values(clist_d->service_operation, - result_list_number, cnt_checked, - CT_OPERATION_RESULT_TYPE_PHONE); - else - phone_list_ug_return_ids(clist_d->ug, result_list_number, - cnt_checked, CT_UG_BUNDLE_RESULT_NUMBER_ID_LIST); - } - else if (CT_UG_REQUEST_CHECK_FOR_EMAIL == clist_d->ug_request) - { - if (clist_d->service_operation) - phone_list_ug_return_values(clist_d->service_operation, - result_list_email, cnt_checked, - CT_OPERATION_RESULT_TYPE_EMAIL); - else - phone_list_ug_return_ids(clist_d->ug, result_list_email, - cnt_checked, CT_UG_BUNDLE_RESULT_EMAIL_ID_LIST); - } - else if (CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL == clist_d->ug_request) - { - phone_list_ug_return_number_email_ids(clist_d->ug, result_list_number, - number_count, result_list_email, email_count); - } - else - { - if (clist_d->service_operation) - phone_list_ug_return_values(clist_d->service_operation, - result_list_person, cnt_checked, - CT_OPERATION_RESULT_TYPE_ITEM_ID); - else - phone_list_ug_return_ids(clist_d->ug, result_list_person, - cnt_checked, CT_UG_BUNDLE_RESULT_PERSON_ID_LIST); - } - if (result_list_person) - free(result_list_person); - if (result_list_number) - free(result_list_number); - if (result_list_email) - free(result_list_email); - - ug_destroy_me(clist_d->ug); -} - -static void list_gadd_view_cancel_btn_cb(void *data) -{ - PH_TRACE; - ct_list_data *clist_d = (ct_list_data *) data; - p_retm_if(NULL == clist_d, "clist_d is NULL"); - - phone_hide_notify(clist_d->navi); - elm_naviframe_item_pop_to((Elm_Object_Item *) evas_object_data_get(clist_d->navi, "navi_it_pop")); -} - -static void __list_edit_ug_destroy_me_cb(void *data) -{ - PH_TRACE; - ct_list_data *clist_d = (ct_list_data *) data; - - if (clist_d->service_operation) - phone_service_reply_simple(clist_d->service_operation, - SERVICE_RESULT_FAILED); - - ug_destroy_me(clist_d->ug); -} - -static void list_edit_back_cb(void *data) -{ - ct_list_data *clist_d = (ct_list_data *) data; - assert(clist_d); - - if (!clist_d) - { - return; - } - - evas_object_smart_callback_del(clist_d->navi, "transition,finished",ctui_list_edit_navi_pop); - elm_naviframe_item_pop(clist_d->navi); -} - -void ct_list_edit_make_edit_navi(ct_list_data *clist_d) -{ - PH_TRACE; - Evas_Object *delete_button = NULL; // used for delete button or remove button - Evas_Object *done_button = NULL; - phone_navi_item_reset(clist_d->navi_item, clist_d); - - if (CT_UG_REQUEST_CHECK == clist_d->ug_request - || CT_UG_REQUEST_CHECK_FOR_NUMBER == clist_d->ug_request - || CT_UG_REQUEST_CHECK_FOR_EMAIL == clist_d->ug_request - || CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL == clist_d->ug_request) - { - done_button = phone_create_toolbar_btn(clist_d->base_layout, - S_(CT_SYS_SK_DONE), list_edit_check_done, clist_d); - elm_object_part_content_set(clist_d->base_layout, "toolbar", - done_button); - evas_object_data_set(clist_d->navi, "done_button", done_button); - if (CT_UG_REQUEST_CHECK_FOR_NUMBER == clist_d->ug_request) - { - evas_object_smart_callback_add(clist_d->navi, "transition,finished", - ctui_list_edit_navi_pop, clist_d); - clist_d->back_cb = list_edit_back_cb; - } - - if (clist_d->navi_item != elm_naviframe_bottom_item_get(clist_d->navi)) - { // group view, setting view : CHECK MODE - if (clist_d->select_result_cb || clist_d->ug) - { - elm_object_style_set(done_button, "naviframe/toolbar/default"); - } - else - { - clist_d->back_cb = list_gadd_view_cancel_btn_cb; - elm_object_style_set(done_button, "naviframe/toolbar/left"); - } - } - else - { // check UG - clist_d->back_cb = __list_edit_ug_destroy_me_cb; - } - } - else if (!clist_d->ug) - { - // group detail : all or not assign, do not dispaly del button - if (clist_d->navi_item == elm_naviframe_bottom_item_get(clist_d->navi) - || clist_d->base_grp) - { - delete_button = phone_create_toolbar_btn(clist_d->base_layout, - CT_LIST_MULTI_REMOVE_MEMBER == clist_d->view_id ? S_(PH_SYS_BODY_REMOVE) : S_(PH_SYS_SK_DELETE), - createContListDeleteConfirmationPopupCB, clist_d); - elm_object_part_content_set(clist_d->base_layout, "toolbar", - delete_button); - evas_object_data_set(clist_d->navi, "delete_button", delete_button); - } - - clist_d->back_cb = list_edit_cancel_cb; - } -} - -static void list_edit_select_all(void *data, Eina_Bool checked) -{ - PH_TRACE; - ct_list_data *clist_d = (ct_list_data *) data; - - list_edit_items_checked_set(clist_d, checked); - elm_genlist_realized_items_update(clist_d->genlist); - - if (checked) - clist_d->cnt_checked = clist_d->cnt_list_total; - else - clist_d->cnt_checked = 0; - - ctui_list_update_selection_info(clist_d); -} - -void ct_list_item_checked_set(Elm_Object_Item *item, ct_list_data *clist_d) -{ - PH_TRACE; - ct_person_list *person_info = (ct_person_list *) elm_object_item_data_get(item); - p_retm_if(NULL == person_info, "elm_object_item_data_get() returns NULL"); - - if (person_info->checked) - { - if (clist_d->cnt_max_check) - { - if (clist_d->cnt_max_check <= clist_d->cnt_checked) - { - phone_show_popup(clist_d->navi, - T_(CT_GET_TEXT_ERR, CTTEXT_EXCEED_LIMIT), 2.0); - person_info->checked = EINA_FALSE; - return; - } - } - clist_d->cnt_checked++; - } - else - clist_d->cnt_checked--; - elm_genlist_item_update(item); - - clist_d->list_check_info = update_list_person_check_info(clist_d->list_check_info, person_info); -} - -static void list_edit_item_check_cb(void *data, Evas_Object *obj, - void *event_info) -{ - PH_TRACE; - Elm_Object_Item * item; - ct_person_list *person_info; - ct_list_data *clist_d = (ct_list_data *) data; - - person_info = (ct_person_list *) evas_object_data_get(obj, "person_info"); - p_retm_if(NULL == person_info, "evas_object_data_get() return NULL"); - - item = person_info->item; - p_retm_if(NULL == item, "person_info->item is NULL"); - - if (person_info->checked) - { - person_info->checked = !person_info->checked; - ct_list_item_checked_set(item, clist_d); - ctui_list_update_selection_info(clist_d); - return; - } - - - elm_genlist_item_update(item); - - if (CT_UG_REQUEST_CHECK_FOR_NUMBER == clist_d->ug_request) - ct_list_ug_handle_check_for_number(item, clist_d); - else if (CT_UG_REQUEST_CHECK_FOR_EMAIL == clist_d->ug_request) - ct_list_ug_handle_check_for_email(item, clist_d); - else if (CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL == clist_d->ug_request) - ct_list_ug_handle_check_for_number_or_email(item, clist_d); - else - { - person_info->checked = !person_info->checked; - ct_list_item_checked_set(item, clist_d); - ctui_list_update_selection_info(clist_d); - } - -} - -Evas_Object* ct_list_edit_add_check(Evas_Object *parent, Eina_Bool *checked, - ct_list_data *clist_d) -{ - PH_TRACE; - Evas_Object *check = elm_check_add(parent); - elm_check_state_set(check, *checked); - evas_object_propagate_events_set(check, EINA_FALSE); - evas_object_smart_callback_add(check, "changed", list_edit_item_check_cb, - clist_d); - return check; -} - -API void ctui_list_edit_mode_start(ct_list_data *clist_d) -{ - PH_TRACE; - - //Sweep Off in Edit mode - ctui_list_set_unsweep(clist_d); - - clist_d->list_mode = CT_LIST_MODE_EDIT; - - // Append 'Select All' layout - if ((CT_UG_REQUEST_CHECK_FOR_NUMBER != clist_d->ug_request) - && (CT_UG_REQUEST_CHECK_FOR_EMAIL != clist_d->ug_request) - && (CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL != clist_d->ug_request) - && (CT_LIST_MULTI_ADD_MEMBER != clist_d->view_id)) - if (((!clist_d->ug_request || clist_d->select_result_cb) - || (clist_d->base_grp > 0 && clist_d->contact_add_cb)) - && (0 == clist_d->cnt_max_check - || clist_d->cnt_list_total <= clist_d->cnt_max_check)) - { - clist_d->select_all_layout = phone_create_select_all(clist_d->box, - S_(PH_SYS_BODY_SELECT_ALL), list_edit_select_all, - clist_d); - elm_box_pack_start(clist_d->box, clist_d->select_all_layout); - } - - if (clist_d->count_item) - { - elm_object_item_del(clist_d->count_item); - clist_d->count_item = NULL; - } - elm_genlist_decorate_mode_set(clist_d->genlist, EINA_TRUE); - - if (CT_LIST_IN_MULTI_TAB != clist_d->tab_mode && !clist_d->title - && CT_UG_REQUEST_SELECT_PERSON <= clist_d->ug_request) - { - elm_object_item_text_set(clist_d->navi_item, - T_(CT_GET_TEXT_BASIC, CTTEXT_SELECT_CONTACTS)); - } - if (0 < clist_d->cnt_list_total) - phone_show_notify(clist_d->base_layout, - T_(CT_GET_TEXT_BASIC, CTTEXT_SELECT_CONTACTS)); - - ctui_list_navi_set(CT_LIST_MODE_EDIT, clist_d); - - if (clist_d->genlist) - elm_object_focus_set(clist_d->genlist, EINA_TRUE); - - phone_set_searchbar_add_button_visible(*clist_d, false); -} - -void ct_list_edit_cb(void *data, Evas_Object *obj, void *event_info) -{ - PH_TRACE; - assert(data); - if (NULL != data) - { - ct_list_data* clist_d = static_cast<ct_list_data*>(data); - p_retm_if(NULL == clist_d->navi_item, "parameter(navi_item) is NULL"); - - list_edit_popup_hide_cb(data, NULL, NULL); - list_edit_menu_hide_cb(data, NULL, NULL); - ctui_list_edit_mode_start(clist_d); - } -} - -void ct_list_settings_cb(void *data, Evas_Object *obj, void *event_info) -{ - PH_TRACE; - assert(data); - if (NULL != data) - { - ct_list_data* clist_d = static_cast<ct_list_data*>(data); - p_retm_if(NULL == clist_d->navi_item, "parameter(navi_item) is NULL"); - - list_edit_popup_hide_cb(data, NULL, NULL); - list_edit_menu_hide_cb(data, NULL, NULL); - - clist_d->child_ug = phone_launch_settings_ug(clist_d->ug, CONTACTS_SETTINGS_UG, - ct_list_destroy_child_ug, clist_d); - } -} - -API void ctui_list_set_selectall(ct_list_data *clist_d) -{ - PH_TRACE; - PH_DBG("ctui_list_set_selectall view_id %d", clist_d->view_id); - if (NULL != clist_d->select_all_layout - || CT_LIST_MODE_DEFAULT == clist_d->list_mode - || CT_LIST_MULTI_ADD_MEMBER == clist_d->view_id) - return; - // Append 'Select All' layout - if ((CT_UG_REQUEST_CHECK_FOR_NUMBER != clist_d->ug_request) - && (CT_UG_REQUEST_CHECK_FOR_EMAIL != clist_d->ug_request) - && (CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL != clist_d->ug_request)) - if (((!clist_d->ug_request || clist_d->select_result_cb) - || (clist_d->base_grp > 0 && clist_d->contact_add_cb)) - && (0 == clist_d->cnt_max_check - || clist_d->cnt_list_total <= clist_d->cnt_max_check)) - { - clist_d->select_all_layout = phone_create_select_all(clist_d->box, - S_(PH_SYS_BODY_SELECT_ALL), list_edit_select_all, - clist_d); - elm_box_pack_start(clist_d->box, clist_d->select_all_layout); - } - -} - diff --git a/lib/list/ct-list-edit-view.h b/lib/list/ct-list-edit-view.h deleted file mode 100755 index ca3ec6f..0000000 --- a/lib/list/ct-list-edit-view.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.1 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * 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. - */ - -#ifndef __CONTACTS_LIST_EDIT_VIEW_H__ -#define __CONTACTS_LIST_EDIT_VIEW_H__ - -/** - * Module responsible for editing selected contact. - */ - -void ct_list_edit_mode_end(ct_list_data *clist_d); -void ct_list_edit_cb(void *data, Evas_Object *obj, void *event_info); -void ct_list_settings_cb(void *data, Evas_Object *obj, void *event_info); -void ct_list_edit_make_edit_navi(ct_list_data *clist_d); -Evas_Object* ct_list_edit_add_check(Evas_Object *parent, Eina_Bool *checked, - ct_list_data *clist_d); -void ct_list_item_checked_set(Elm_Object_Item *item, ct_list_data *clist_d); - -/** - * Deletes group contacts from database. - * @param clist_d Contact list data. - */ -void list_edit_delete_persons_without_progressbar(ct_list_data *clist_d); - -/** - * The callback function to get the result of contacts_db_update_records_async operation. - * @param error Error code for batch operation. - * @param user_data The user data passed from the batch operation. - */ -void list_edit_delete_persons_without_progressbar_cb(int err, void *data); - -#endif //__CONTACTS_LIST_EDIT_VIEW_H__ diff --git a/lib/list/ct-list-main.cpp b/lib/list/ct-list-main.cpp deleted file mode 100755 index 4b95b4f..0000000 --- a/lib/list/ct-list-main.cpp +++ /dev/null @@ -1,994 +0,0 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.1 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * 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. - */ - -/** - * ct-list is an UI-control responsible for drawing and handling list-specific event of contacts-app - * (some kind of "sub-application" used by "host" contacts-app). - */ - -#include <vconf.h> -#include <vconf-keys.h> -#include <ui-gadget-module.h> -#include <efl_assist.h> -#include "phone.h" -#include "ct-list.h" -#include "ct-group.h" -#include "ct-detail.h" -#include "ct-list-utils.h" -#include "ct-list-view-ug.h" -#include "ct-list-contact-view.h" -#include "ct-list-edit-view.h" -#include "ViewManager.h" - -API void ctui_list_view_reset(ct_list_data *clist_d) -{ - PH_TRACE; - evas_object_data_del(clist_d->navi, "done_button"); - evas_object_data_del(clist_d->navi, "edit_button"); - evas_object_data_del(clist_d->navi, "new_button"); - evas_object_data_del(clist_d->navi, "view_button"); - evas_object_data_del(clist_d->navi, "account_button"); - - if (CT_UG_REQUEST_CHECK != clist_d->ug_request - && CT_UG_REQUEST_CHECK_FOR_NUMBER != clist_d->ug_request - && CT_UG_REQUEST_CHECK_FOR_EMAIL != clist_d->ug_request - && CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL != clist_d->ug_request) - { - if (CT_LIST_MODE_EDIT == clist_d->list_mode) - { - ct_list_edit_mode_end(clist_d); - } - } - - if (elm_naviframe_top_item_get(clist_d->navi) != clist_d->navi_item) - { - elm_naviframe_item_pop_to(clist_d->navi_item); - } - else - { - ctui_list_set_unsweep(clist_d); - } - - if (clist_d->child_ug) - { - ug_destroy(clist_d->child_ug); - clist_d->child_ug = NULL; - } -} - -API void ctui_list_view_language_changed(Evas_Object *navi) -{ - PH_TRACE; - ct_list_data *clist_d = (ct_list_data *) evas_object_data_get(navi, "clist_d"); - p_retm_if(NULL == clist_d, "evas_object_data_get() return NULL"); - ctui_list_genlist_update(clist_d); - if (clist_d->searchbar) - elm_object_part_text_set(clist_d->searchbar, "elm.guidetext", - S_(CT_SYS_BODY_SEARCH)); - - ctui_list_update_selection_info(clist_d); - - void *cdetail_d = evas_object_data_get(navi, "cdetail_d"); - if (cdetail_d) - ct_detail_view_language_changed((ct_detail_data *) cdetail_d); -} - -static int create_list_view(Evas_Object *base, ct_list_data *clist_d) -{ - PH_TRACE; - char buf[PH_TEXT_SHORT_LEN]; - - if (NULL == clist_d->navi) - { - p_retvm_if(NULL == base, FALSE, "base is NULL"); - clist_d->navi = elm_naviframe_add(base); - p_retvm_if(NULL == clist_d->navi, FALSE, "navi is NULL"); - ea_object_event_callback_add(clist_d->navi, EA_CALLBACK_BACK, &Common::ViewManager::onBack, clist_d->win); - ea_object_event_callback_add(clist_d->navi, EA_CALLBACK_MORE, &Common::ViewManager::onMenu, NULL); - elm_naviframe_prev_btn_auto_pushed_set(clist_d->navi, EINA_FALSE); - elm_object_part_content_set(base, "elm.swallow.content", clist_d->navi); - evas_object_show(clist_d->navi); - } - ct_list_init_account_data(clist_d); - if (CT_GET_LIST_VCARD != clist_d->list_op) - ct_list_get_contacts(clist_d, &clist_d->list); - clist_d->base_layout = ct_list_create_contact_view(clist_d); - - FREEandSTRDUP(clist_d->title, T_(CT_GET_TEXT_BASIC, CTTEXT_ALL_CONTACTS)); - snprintf(buf, sizeof(buf), "%s (%d)", clist_d->title, - clist_d->cnt_list_total); - clist_d->navi_item = elm_naviframe_item_push(clist_d->navi, buf, NULL, NULL, - clist_d->base_layout, NULL); - - return TRUE; -} - -static Evas_Object* list_create_vcard_list_view(Evas_Object *base, - ct_list_data *clist_d) -{ - PH_TRACE; - char buf[PH_TEXT_SHORT_LEN]; - - p_retvm_if(NULL == base, FALSE, "base is NULL"); - - clist_d->navi = elm_naviframe_add(base); - p_retvm_if(NULL == clist_d->navi, FALSE, "navi is NULL"); - ea_object_event_callback_add(clist_d->navi, EA_CALLBACK_BACK, &Common::ViewManager::onBack, clist_d->win); - ea_object_event_callback_add(clist_d->navi, EA_CALLBACK_MORE, &Common::ViewManager::onMenu, NULL); - elm_naviframe_prev_btn_auto_pushed_set(clist_d->navi, EINA_FALSE); - evas_object_show(clist_d->navi); - - clist_d->base_layout = ct_list_create_contact_view(clist_d); - - clist_d->title = strdup(T_(CT_GET_TEXT_BASIC, CTTEXT_VCARD_CONTACTS)); - snprintf(buf, sizeof(buf), "%s (%d)", clist_d->title, - clist_d->cnt_list_total); - clist_d->navi_item = elm_naviframe_item_push(clist_d->navi, buf, NULL, NULL, - clist_d->base_layout, NULL); - if (clist_d->select_result_cb) - ctui_list_edit_mode_start(clist_d); - else - ctui_list_navi_set(CT_LIST_MODE_DEFAULT, clist_d); - - elm_object_part_content_set(base, "elm.swallow.content", clist_d->navi); - - return clist_d->navi; -} - -static int __list_parse_bundle_by_operation(service_h service, - ct_list_data* clist_d) -{ - PH_TRACE; - char* val = NULL; - char* val1 = NULL; - char *operation = NULL; - - service_get_operation(service, &operation); - p_retvm_if(NULL == operation, 0, "operation is NULL"); - PH_DBG("operaion = %s", operation); - - if (strcmp(operation, CT_OPERATION_SOCIAL_CHOOSE) == 0) - { - service_get_extra_data(service, CT_OPERATION_ITEM_TYPE, &val); - if (val) - { - if (strcmp(val, CT_OPERATION_ITEM_TYPE_PERSON) != 0) - { - ERR("CT_OPERATION_ITEM_TYPE_PERSON not matched %s", val); - free(val); - return -1; - } - free(val); - val = NULL; - } - else - { - ERR("CT_OPERATION_ITEM_TYPE is mandatory"); - return -1; - } - clist_d->service_operation = service; - clist_d->ug_request = CT_UG_REQUEST_UPDATE_CONTACT; - clist_d->list_op = CT_GET_LIST_PERSON_OF_WRITABLE_ADDRBOOK_ID; - - service_get_extra_data(service, CT_OPERATION_PHONE, &val1); - if (val1) - { - clist_d->ug_request = CT_UG_REQUEST_UPDATE_WITH_NUM; - clist_d->ug_data = val1; - return 1; - } - - service_get_extra_data(service, CT_OPERATION_EMAIL, &val1); - if (val1) - { - clist_d->ug_request = CT_UG_REQUEST_UPDATE_WITH_EMAIL; - clist_d->ug_data = val1; - return 1; - } - - service_get_extra_data(service, CT_OPERATION_URL, &val1); - if (val1) - { - clist_d->ug_request = CT_UG_REQUEST_UPDATE_WITH_WEB; - clist_d->ug_data = val1; - return 1; - } - } - else if (strcmp(operation, CT_OPERATION_SOCIAL_PICK) == 0) - { - service_get_extra_data(service, CT_OPERATION_ITEM_TYPE, &val); - if (val) - { - if (strcmp(val, CT_OPERATION_ITEM_TYPE_PERSON) != 0) - { - ERR("CT_OPERATION_ITEM_TYPE_PERSON not matched %s", val); - free(val); - return -1; - } - free(val); - val = NULL; - } - else - { - ERR("CT_OPERATION_ITEM_TYPE is mandatory"); - return -1; - } - - service_get_extra_data(service, CT_OPERATION_SELECTION_MODE, &val); - if (val) - { - if (strcmp(val, CT_OPERATION_SELECTION_MODE_SINGLE) == 0) - { - service_get_extra_data(service, CT_OPERATION_RESULT_TYPE, - &val1); - if (val1) - { - if (strcmp(val1, CT_OPERATION_RESULT_TYPE_PHONE) == 0) - { - clist_d->ug_request = CT_UG_REQUEST_SELECT_NUMBER; - clist_d->list_op = CT_GET_LIST_ALL_PERSON_HAD_NUMBER; - } - else if (strcmp(val1, CT_OPERATION_RESULT_TYPE_EMAIL) == 0) - { - clist_d->ug_request = CT_UG_REQUEST_SELECT_EMAIL; - clist_d->list_op = CT_GET_LIST_ALL_PERSON_HAD_EMAIL; - } - else if (strcmp(val1, CT_OPERATION_RESULT_TYPE_ITEM_ID) - == 0) - { - clist_d->ug_request = CT_UG_REQUEST_SELECT_PERSON; - } - else if (strcmp(val1, CT_OPERATION_RESULT_TYPE_VCARD) == 0) - { - clist_d->ug_request = CT_UG_REQUEST_SELECT_VCARD; - - } - else - { - ERR("CT_OPERATION_RESULT_TYPE is wrong value %s", val1); - free(val); - free(val1); - return -1; - } - free(val1); - clist_d->service_operation = service; - } - else - { - ERR("CT_OPERATION_RESULT_TYPE is wrong value %s", val1); - free(val); - free(val1); - return -1; - } - } - else if (strcmp(val, CT_OPERATION_SELECTION_MODE_MULTIPLE) == 0) - { - service_get_extra_data(service, CT_OPERATION_RESULT_TYPE, - &val1); - if (val1) - { - if (strcmp(val1, CT_OPERATION_RESULT_TYPE_PHONE) == 0) - { - clist_d->ug_request = CT_UG_REQUEST_CHECK_FOR_NUMBER; - clist_d->list_op = CT_GET_LIST_ALL_PERSON_HAD_NUMBER; - } - else if (strcmp(val1, CT_OPERATION_RESULT_TYPE_EMAIL) == 0) - { - clist_d->ug_request = CT_UG_REQUEST_CHECK_FOR_EMAIL; - clist_d->list_op = CT_GET_LIST_ALL_PERSON_HAD_EMAIL; - } - else if (strcmp(val1, CT_OPERATION_RESULT_TYPE_ITEM_ID) - == 0) - { - clist_d->ug_request = CT_UG_REQUEST_CHECK; - } - else - { - ERR("CT_OPERATION_RESULT_TYPE is wrong value %s", val1); - free(val); - free(val1); - return -1; - } - free(val1); - clist_d->service_operation = service; - } - else - { - ERR("CT_OPERATION_RESULT_TYPE is wrong value %s", val1); - free(val); - free(val1); - return -1; - } - } - else - { - ERR("CT_OPERATION_SELECTION_MODE is wrong %s", val); - free(val); - return -1; - } - free(val); - } - else - { - ERR("CT_OPERATION_SELECTION_MODE is mandatory"); - return -1; - } - } - else - { - ERR("operation wrong"); - return -1; - } - - return 1; -} - -static void *list_on_create(ui_gadget_h ug, enum ug_mode mode, - service_h service, void *priv) -{ - PH_TRACE; - int ret; - int err = CONTACTS_ERROR_NONE; - Evas_Object *bg, *base; - Evas_Object *parent; - ct_list_data *clist_d = (ct_list_data *) priv; - char *operation = NULL; - - p_retvm_if(NULL == ug || NULL == priv, NULL, - "The parameter is invalid(ug=%p, priv=%p)", ug, priv); - - clist_d->win = (Evas_Object *) ug_get_window(); - parent = (Evas_Object *) ug_get_parent_layout(ug); - p_retvm_if(NULL == parent, NULL, "ug_get_parent_layout() return NULL"); - clist_d->ug = ug; - - bindtextdomain(PACKAGE, LOCALEDIR); - - err = contacts_connect2(); - p_retvm_if(CONTACTS_ERROR_NONE != err, NULL, - "contacts_connect2() Failed(%d)", err); - - service_get_operation(service, &operation); - if (operation) - { - ret = __list_parse_bundle_by_operation(service, clist_d); - free(operation); - if (ret < 0) - { - ERR("__list_parse_bundle_by_operation invalid parameter"); - ret = ct_list_parse_bundle(service, clist_d); - } - } - else - { - ret = ct_list_parse_bundle(service, clist_d); - } - - if (UG_MODE_FULLVIEW == mode) - base = phone_create_base_layout(parent, true); - else - base = phone_create_base_layout(parent, false); - - clist_d->base_ab = -1; - - if (-2 == ret) - { - Evas_Object *popup; - popup = elm_popup_add(base); - evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, - EVAS_HINT_EXPAND); - elm_object_text_set(popup, S_(CT_SYS_POP_FILE_NOT_FOUND)); - elm_popup_timeout_set(popup, 1.5); - evas_object_show(popup); - evas_object_smart_callback_add(popup, "timeout", ctui_list_ug_hide_cb, - clist_d->ug); - return base; - } - p_retvm_if(-1 == ret, NULL, "ct_list_parse_bundle() Failed"); - - bg = phone_create_bg(base); - if (NULL == bg) - { - ERR("phone_create_bg() return NULL"); - evas_object_del(base); - err = contacts_disconnect2(); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_disconnect2() Failed(%d)", err); - return NULL; - } - - if (clist_d->ug_request == CT_UG_REQUEST_SELECT_GROUP - || clist_d->ug_request == CT_UG_REQUEST_SELECT_GROUP_ADD_TO_HOME) - { - Evas_Object *layout = phone_create_group_view_ug(clist_d->ug, base, - clist_d->ug_request); - phone_group_set_navi(layout); - } - else if (FALSE == create_list_view(base, clist_d)) - { - evas_object_del(base); - err = contacts_disconnect2(); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_disconnect2() Failed(%d)", err); - } - else - { - if (CT_UG_REQUEST_CHECK == clist_d->ug_request - || CT_UG_REQUEST_CHECK_FOR_NUMBER == clist_d->ug_request - || CT_UG_REQUEST_CHECK_FOR_EMAIL == clist_d->ug_request - || CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL - == clist_d->ug_request) - ctui_list_edit_mode_start(clist_d); - else - ctui_list_navi_set(CT_LIST_MODE_DEFAULT, clist_d); - } - - return base; -} - -static void list_on_message(ui_gadget_h ug, service_h msg, service_h service, - void *priv) -{ - PH_TRACE; -} - -static void list_on_pause(ui_gadget_h ug, service_h service, void *priv) -{ - PH_TRACE; - int err = CONTACTS_ERROR_NONE; - ct_list_data *clist_d = (ct_list_data *) priv; - err = contacts_setting_get_name_display_order(&(clist_d->order_display)); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_setting_get_name_display_order() Failed(%d)", err); - clist_d->is_background = true; -} - -static void list_on_resume(ui_gadget_h ug, service_h service, void *priv) -{ - PH_TRACE; - ct_list_data *clist_d = (ct_list_data *) priv; - ct_detail_data *cdetail_d; - int err = CONTACTS_ERROR_NONE; - contacts_name_display_order_e order_display; - - clist_d->is_background = false; - - err = contacts_setting_get_name_display_order(&order_display); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_setting_get_name_display_order() Failed(%d)", err); - - if (clist_d->order_display != order_display) - { - ctui_list_genlist_update(clist_d); - cdetail_d = (ct_detail_data *) evas_object_data_get(clist_d->navi, "cdetail_d"); - if (cdetail_d) - ctui_detail_genlist_update(cdetail_d); - } - if (clist_d->update_timer) - { - ecore_timer_del(clist_d->update_timer); - clist_d->update_timer = NULL; - ctui_list_genlist_update(clist_d); - } -} - -static void list_on_event(ui_gadget_h ug, enum ug_event event, - service_h service, void *priv) -{ - PH_TRACE; - ct_list_data *clist_d = (ct_list_data *) priv; - - switch (event) - { - case UG_EVENT_ROTATE_PORTRAIT: - case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN: - break; - case UG_EVENT_ROTATE_LANDSCAPE: - case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN: - break; - case UG_EVENT_LANG_CHANGE: - ctui_list_view_language_changed(clist_d->navi); - break; - default: - break; - } -} - -static void list_on_destroy(ui_gadget_h ug, service_h service, void *priv) -{ - PH_TRACE; - int err = CONTACTS_ERROR_NONE; - ct_list_data *clist_d = (ct_list_data *) priv; - p_retm_if(NULL == priv, "The parameter is invalid(priv=%p)", priv); - p_retm_if(NULL == ug, "The parameter is invalid(ug=%p)", ug); - - free(clist_d->ug_data); - - if (clist_d->ug) - { - evas_object_del((Evas_Object *) ug_get_layout(ug)); - } - - err = contacts_disconnect2(); - p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_disconnect2() Failed(%d)", - err); -} - -extern "C" API int UG_MODULE_INIT(struct ug_module_ops *ops) -{ - PH_TRACE; - ct_list_data *clist_d; - - p_retvm_if(!ops, -1, "ops is NULL"); - - clist_d = (ct_list_data *) calloc(1, sizeof(ct_list_data)); - p_retvm_if(!clist_d, -1, "UG data is NULL, Not enough memory"); - - ops->create = list_on_create; - ops->start = NULL; - ops->pause = list_on_pause; - ops->resume = list_on_resume; - ops->destroy = list_on_destroy; - ops->message = list_on_message; - ops->event = list_on_event; - ops->key_event = NULL; - ops->priv = clist_d; - ops->opt = UG_OPT_INDICATOR_ENABLE; - - return 0; -} - -extern "C" API void UG_MODULE_EXIT(struct ug_module_ops *ops) -{ - PH_TRACE; - p_retm_if(!ops, "ops is NULL"); - - free(ops->priv); - ops->priv = NULL; -} - -// Setting - export,import / Group - Message,Email,Share,ChatOn -API Evas_Object* ctui_create_list_select_view(Evas_Object *navi, - ct_select_result_cb result_cb, - void *result_cb_data, - int list_op, - int id_ab, - int id_grp, - int cnt_max) -{ - PH_TRACE; - PH_DBG("list_op = %d, id_ab = %d, id_grp = %d", list_op, id_ab, id_grp); - - ct_list_data *clist_d = (ct_list_data *) calloc(1, sizeof(ct_list_data)); - p_retvm_if(!clist_d, NULL, "clist_d is NULL, Not enough memory"); - - clist_d->navi = navi; - clist_d->select_result_cb = result_cb; - clist_d->select_result_cb_data = result_cb_data; - clist_d->list_op = list_op; - clist_d->base_ab = id_ab; - clist_d->base_grp = id_grp; - - if (cnt_max > 0) - { - clist_d->cnt_max_check = cnt_max; - } - - switch (list_op) - { - case CT_GET_LIST_ALL_PERSON_HAD_NUMBER: - case CT_GET_LIST_PERSON_HAD_NUMBER_OF_ADDRBOOK_ID: - case CT_GET_LIST_PERSON_HAD_NUMBER_OF_GROUP_ID: - case CT_GET_LIST_PERSON_NOT_ASSIGNED_HAD_NUMBER_OF_ADDRBOOK_ID: - clist_d->ug_request = CT_UG_REQUEST_CHECK_FOR_NUMBER; - break; - case CT_GET_LIST_ALL_PERSON_HAD_EMAIL: - case CT_GET_LIST_PERSON_HAD_EMAIL_OF_ADDRBOOK_ID: - case CT_GET_LIST_PERSON_HAD_EMAIL_OF_GROUP_ID: - case CT_GET_LIST_PERSON_NOT_ASSIGNED_HAD_EMAIL_OF_ADDRBOOK_ID: - clist_d->ug_request = CT_UG_REQUEST_CHECK_FOR_EMAIL; - break; - case CT_GET_LIST_ALL_PERSON_HAD_NUMBER_OR_EMAIL: - case CT_GET_LIST_PERSON_HAD_NUMBER_OR_EMAIL_OF_ADDRBOOK_ID: - case CT_GET_LIST_PERSON_HAD_NUMBER_OR_EMAIL_OF_GROUP_ID: - case CT_GET_LIST_PERSON_NOT_ASSIGNED_HAD_NUMBER_OR_EMAIL_OF_ADDRBOOK_ID: - clist_d->ug_request = CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL; - break; - default: - clist_d->ug_request = CT_UG_REQUEST_CHECK; - break; - } - - ct_list_get_contacts(clist_d, &clist_d->list); - clist_d->base_layout = ct_list_create_contact_view(clist_d); - - ct_list_get_title(clist_d, list_op, id_ab, id_grp); - - if (clist_d->sub_title) - { - clist_d->navi_item = elm_naviframe_item_push(clist_d->navi, - clist_d->title, NULL, NULL, clist_d->base_layout, NULL); - elm_object_item_part_text_set(clist_d->navi_item, "subtitle", - clist_d->sub_title); - } - else - { - clist_d->navi_item = elm_naviframe_item_push(clist_d->navi, - clist_d->title, NULL, NULL, clist_d->base_layout, NULL); - } - - ctui_list_edit_mode_start(clist_d); - - return clist_d->navi; -} - -API void ctui_create_favorite_list_select_view(Evas_Object *win, - Evas_Object *navi, - Eina_List *list) -{ - PH_TRACE; - char buf[PH_TEXT_SHORT_LEN]; - ct_list_data *clist_d = (ct_list_data *) calloc(1, sizeof(ct_list_data)); - p_retm_if(!clist_d, "clist_d is NULL, Not enough memory"); - - clist_d->win = win; - clist_d->navi = navi; - clist_d->contact_add_cb = ct_list_add_contacts_to_favorite; - clist_d->ug_request = CT_UG_REQUEST_CHECK; - clist_d->list = list; - clist_d->base_layout = ct_list_create_contact_view(clist_d); - clist_d->title = strdup(T_(CT_GET_TEXT_BASE_OP, CTTEXT_ADD_TO_FAVOURITES)); - clist_d->cnt_list_total = eina_list_count(list); - clist_d->base_ab = -1; - - snprintf(buf, sizeof(buf), "%s (%d)", clist_d->title, - clist_d->cnt_list_total); - - clist_d->navi_item = elm_naviframe_item_push(clist_d->navi, buf, NULL, NULL, - clist_d->base_layout, NULL); - ctui_list_edit_mode_start(clist_d); - evas_object_data_set(clist_d->navi, "favor_list_d", clist_d); -} - -API Elm_Object_Item *ctui_create_gadd_list_select_view(Evas_Object *win, - Evas_Object *navi, - int group_id, - int ab_id, - Eina_List **list, - bool save_contacts) -{ - PH_TRACE; - char buf[PH_TEXT_SHORT_LEN]; - - ct_list_data *clist_d = (ct_list_data *) calloc(1, sizeof(ct_list_data)); - p_retvm_if(!clist_d, NULL, "clist_d is NULL, Not enough memory"); - - clist_d->win = win; - clist_d->navi = navi; - if (save_contacts) - { - clist_d->contact_add_cb = ct_list_add_contacts_to_group; - } - else - { - clist_d->contact_add_cb = ct_list_add_contacts; - } - clist_d->view_id = CT_LIST_MULTI_ADD_MEMBER; - clist_d->list_op = CT_GET_LIST_PERSON_OF_ADDRBOOK_ID; - clist_d->ug_request = CT_UG_REQUEST_CHECK; - clist_d->base_grp = group_id; - clist_d->base_ab = ab_id; - clist_d->list_grp_person = list; - ct_list_get_contacts(clist_d, &clist_d->list); - clist_d->base_layout = ct_list_create_contact_view(clist_d); - clist_d->title = strdup(T_(CT_GET_TEXT_BASIC, CTTEXT_SELECT_CONTACTS)); - snprintf(buf, sizeof(buf), "%s (%d)", clist_d->title, - clist_d->cnt_list_total); - - clist_d->navi_item = elm_naviframe_item_push(clist_d->navi, buf, NULL, NULL, - clist_d->base_layout, NULL); - ctui_list_edit_mode_start(clist_d); - evas_object_data_set(clist_d->navi, "gadd_list_d", clist_d); - - return clist_d->navi_item; -} - -API void ctui_list_update_group_list_without_progressbar(Evas_Object *navi, - int group_id, - Eina_List *add_list, - Eina_List *remove_list) -{ - PH_TRACE; - p_retm_if(!navi, "parameter navi is NULL"); - ct_list_data *clist_d = (ct_list_data *) calloc(1, sizeof(ct_list_data)); - p_retm_if(!clist_d, "clist_d is NULL, Not enough memory"); - - clist_d->navi = navi; - clist_d->base_grp = group_id; - clist_d->list_grp_person = &add_list; - clist_d->list_check_info = remove_list; - - if (eina_list_count(add_list) > 0) - { - ct_list_add_contacts_to_group_without_progressbar(clist_d); - } - - Eina_List *l_d = NULL; - void *v_person_info_d = NULL; - EINA_LIST_FOREACH(clist_d->list_check_info, l_d, v_person_info_d) - { - ct_person_list *person_info_d = (ct_person_list *) v_person_info_d; - if (person_info_d) - { - Eina_List *l = NULL; - void *v_person_info = NULL; - EINA_LIST_FOREACH(*clist_d->list_grp_person, l, v_person_info) - { - ct_person_list *person_info = (ct_person_list *) v_person_info; - if (person_info) - { - if (person_info_d->id == person_info->id) - { - clist_d->list_check_info = eina_list_remove(clist_d->list_check_info, person_info_d); - } - } - } - } - } - if (eina_list_count(clist_d->list_check_info) > 0) - { - list_edit_delete_persons_without_progressbar(clist_d); - } - - if (clist_d->update_delete_list) - { - contacts_db_update_records_async(clist_d->update_delete_list, - list_edit_delete_persons_without_progressbar_cb, clist_d); - } - else if (clist_d->update_add_list) - { - contacts_db_update_records_async(clist_d->update_add_list, - ct_list_add_contacts_to_group_without_progressbar_cb, clist_d); - } - else - { - phone_show_tickernoti(S_(CT_SYS_POP_SUCCESS)); - elm_naviframe_item_pop(clist_d->navi); - } -} - -API Evas_Object* ctui_create_vcard_list_select_view(Evas_Object *navi, - Eina_List *list, - const char *path, - ct_select_result_cb result_cb, - void *result_cb_data) -{ - PH_TRACE; - char buf[PH_TEXT_SHORT_LEN]; - - ct_list_data *clist_d = (ct_list_data *) calloc(1, sizeof(ct_list_data)); - p_retvm_if(!clist_d, NULL, "clist_d is NULL, Not enough memory"); - - clist_d->navi = navi; - clist_d->list = list; - clist_d->cnt_list_total = eina_list_count(list); - clist_d->vcard_path = path; - clist_d->select_result_cb = result_cb; - clist_d->select_result_cb_data = result_cb_data; - clist_d->list_op = CT_GET_LIST_VCARD; - clist_d->ug_request = CT_UG_REQUEST_CHECK; - clist_d->base_ab = -1; - - clist_d->base_layout = ct_list_create_contact_view(clist_d); - clist_d->title = strdup(T_(CT_GET_TEXT_BASIC, CTTEXT_VCARD_CONTACTS)); - snprintf(buf, sizeof(buf), "%s (%d)", clist_d->title, - clist_d->cnt_list_total); - - clist_d->navi_item = elm_naviframe_item_push(clist_d->navi, buf, NULL, NULL, - clist_d->base_layout, NULL); - ctui_list_edit_mode_start(clist_d); - - evas_object_data_set(clist_d->navi, "clist_d", clist_d); - return clist_d->navi; -} - -// Show contact list view from vcf file -API Evas_Object* ctui_create_vcard_list_view(Evas_Object *win, Eina_List *list, - const char *path) -{ - PH_TRACE; - ct_list_data *clist_d = (ct_list_data *) calloc(1, sizeof(ct_list_data)); - p_retvm_if(!clist_d, NULL, "clist_d is NULL, Not enough memory"); - - clist_d->win = win; - clist_d->list = list; - clist_d->cnt_list_total = eina_list_count(list); - clist_d->vcard_path = path; - clist_d->base_ab = -1; - - Evas_Object *conform = elm_conformant_add(win); - p_retvm_if(NULL == conform, NULL, "elm_conformant_add() Failed"); - evas_object_show(conform); - - Evas_Object *base = phone_create_base_layout(win, true); - if (base) - { - clist_d->list_op = CT_GET_LIST_VCARD; - Evas_Object *navi = list_create_vcard_list_view(base, clist_d); - - evas_object_data_set(win, "naviframe", (void *) navi); - - Evas_Object *bg = phone_create_bg(base); - if (NULL == bg) - { - ERR("phone_create_bg() return NULL"); - evas_object_del(base); - free(clist_d); - return NULL; - } - - evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, - EVAS_HINT_EXPAND); - evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND, - EVAS_HINT_EXPAND); - elm_win_resize_object_add(win, base); - elm_win_resize_object_add(win, conform); - elm_object_content_set(conform, base); - evas_object_show(base); - evas_object_show(conform); - evas_object_data_set(clist_d->navi, "clist_d", clist_d); - - return base; - } - else - { - free(clist_d); - return NULL; - } -} - -API Evas_Object* ctui_create_phone_list_view(const ph_view_info *view_info) -{ - PH_TRACE; - ct_list_data *clist_d = (ct_list_data *) calloc(1, sizeof(ct_list_data)); - p_retvm_if(!clist_d, NULL, "clist_d is NULL, Not enough memory"); - - clist_d->ug = view_info->ug; - clist_d->win = view_info->win; - clist_d->navi = view_info->navi; - clist_d->tab_mode = CT_LIST_IN_MULTI_TAB; - clist_d->navi_item = elm_naviframe_bottom_item_get(view_info->navi); - - switch (view_info->ug_request) - { - case PH_UG_REQUEST_CHECK_FOR_EMAIL: - case PH_UG_REQUEST_SELECT_EMAIL: - clist_d->list_op = CT_GET_LIST_ALL_PERSON_HAD_EMAIL; - break; - case PH_UG_REQUEST_CHECK_FOR_NUMBER: - case PH_UG_REQUEST_SELECT_NUMBER: - clist_d->list_op = CT_GET_LIST_ALL_PERSON_HAD_NUMBER; - break; - case PH_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL: - case PH_UG_REQUEST_SELECT_NUMBER_OR_EMAIL: - clist_d->list_op = CT_GET_LIST_ALL_PERSON_HAD_NUMBER_OR_EMAIL; - break; - default: - clist_d->list_op = CT_GET_LIST_ALL_PERSON; - break; - } - - clist_d->base_ab = ctui_get_view_mode(); - if (clist_d->base_ab > -1) - { - clist_d->list_op = CT_GET_LIST_PERSON_OF_ADDRBOOK_ID; - } - else - clist_d->base_ab = -1; - - clist_d->ug_request = view_info->ug_request; - clist_d->ug_data = view_info->ug_data; - clist_d->cnt_max_check = view_info->ug_cnt_max; - - ct_list_init_account_data(clist_d); - - ct_list_get_contacts(clist_d, &clist_d->list); - clist_d->base_layout = ct_list_create_contact_view(clist_d); - evas_object_data_set(clist_d->navi, "clist_d", clist_d); - - return clist_d->base_layout; -} - -API void ctui_create_list_single_select_view(Evas_Object *win, - Evas_Object *navi, Evas_Smart_Cb sel_cb, void *cb_data, int id_caller) -{ - PH_TRACE; - ct_list_data *clist_d; - char buf[PH_TEXT_MAX_LEN + 1]; - - clist_d = (ct_list_data *) calloc(1, sizeof(ct_list_data)); - clist_d->list_op = CT_GET_LIST_ALL_PERSON; - clist_d->selected_person_id = id_caller; - clist_d->navi = navi; - clist_d->win = win; - clist_d->gl_sel = sel_cb; - clist_d->gl_sel_data = cb_data; - - ct_list_init_account_data(clist_d); - ct_list_get_contacts(clist_d, &clist_d->list); - list_create_itcs(clist_d); - clist_d->base_layout = ct_list_create_contact_layout(clist_d); - - FREEandSTRDUP(clist_d->title, T_(CT_GET_TEXT_BASIC, CTTEXT_ALL_CONTACTS)); - snprintf(buf, sizeof(buf), "%s (%d)", clist_d->title, - clist_d->cnt_list_total); - clist_d->navi_item = elm_naviframe_item_push(clist_d->navi, buf, NULL, NULL, - clist_d->base_layout, NULL); -} - -API void ctui_list_view_resume(Evas_Object *navi) -{ - PH_TRACE; - ct_list_data *clist_d = (ct_list_data *) evas_object_data_get(navi, "clist_d"); - p_retm_if(NULL == clist_d, "evas_object_data_get() return NULL"); - - clist_d->is_background = false; - - contacts_name_display_order_e order_display; - int err = contacts_setting_get_name_display_order(&order_display); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_setting_get_name_display_order() Failed(%d)", err); - - if (clist_d->order_display != order_display) - ctui_list_genlist_update(clist_d); - - if (clist_d->update_timer) - { - ecore_timer_del(clist_d->update_timer); - clist_d->update_timer = NULL; - ctui_list_genlist_update(clist_d); - } -} - -API void ctui_list_set_background(Evas_Object *obj, bool is_background) -{ - PH_TRACE; - ct_list_data *clist_d; - clist_d = (ct_list_data *) evas_object_data_get(obj, "clist_d"); - p_retm_if(NULL == clist_d, "log data is null"); - - clist_d->is_background = is_background; - if (clist_d->update_timer) - { - ecore_timer_del(clist_d->update_timer); - clist_d->update_timer = NULL; - ctui_list_lazy_update(_contacts_person._uri, clist_d); - } -} - -API void ctui_list_view_pause(Evas_Object *navi) -{ - PH_TRACE; - int err = CONTACTS_ERROR_NONE; - ct_list_data *clist_d = (ct_list_data *) evas_object_data_get(navi, "clist_d"); - p_retm_if(NULL == clist_d, "evas_object_data_get() return NULL"); - - err = contacts_setting_get_name_display_order(&(clist_d->order_display)); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_setting_get_name_display_order() Failed(%d)", err); - -} - diff --git a/lib/list/ct-list-utils.cpp b/lib/list/ct-list-utils.cpp deleted file mode 100755 index f26359c..0000000 --- a/lib/list/ct-list-utils.cpp +++ /dev/null @@ -1,1153 +0,0 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.1 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * 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 <errno.h> -#include <fcntl.h> -#include <ui-gadget-module.h> -#include "phone.h" -#include "ct-detail.h" -#include "ct-list.h" -#include "ct-list-contact-view.h" -#include "ct-list-utils.h" - -static const char *NAVI_ITEM_POP = "navi_it_pop"; - -int ct_list_parse_bundle(service_h service, ct_list_data* clist_d) -{ - PH_TRACE; - char* val = NULL; - - if (service) - { - service_get_extra_data(service, CT_UG_BUNDLE_TYPE, &val); - if (val) - clist_d->ug_request = atoi(val); - PH_DBG("type = %d", clist_d->ug_request); - free(val); - - switch (clist_d->ug_request) - { - case CT_UG_REQUEST_SELECT_GROUP: - case CT_UG_REQUEST_SELECT_GROUP_ADD_TO_HOME: - return 0; - case CT_UG_REQUEST_LIST: - case CT_UG_REQUEST_LIST_WITH_BACK: - case CT_UG_REQUEST_SELECT_PERSON: - case CT_UG_REQUEST_SHARE_CONTACT_INFO: - case CT_UG_REQUEST_SELECT_VCARD: - val = NULL; - service_get_extra_data(service, CT_UG_BUNDLE_ACCOUNTID, &val); - if (val) - { - clist_d->list_op = CT_GET_LIST_PERSON_OF_ADDRBOOK_ID; - clist_d->base_ab = atoi(val); - free(val); - } - - break; - case CT_UG_REQUEST_SELECT_NUMBER: - case CT_UG_REQUEST_SELECT_CONTACT_ADD_TO_HOME: - val = NULL; - service_get_extra_data(service, CT_UG_BUNDLE_ACCOUNTID, &val); - if (val) - { - clist_d->list_op = - CT_GET_LIST_PERSON_HAD_NUMBER_OF_ADDRBOOK_ID; - clist_d->base_ab = atoi(val); - free(val); - } - else - { - clist_d->list_op = CT_GET_LIST_ALL_PERSON_HAD_NUMBER; - } - break; - case CT_UG_REQUEST_SELECT_EMAIL: - val = NULL; - service_get_extra_data(service, CT_UG_BUNDLE_ACCOUNTID, &val); - if (val) - { - clist_d->list_op = - CT_GET_LIST_PERSON_HAD_EMAIL_OF_ADDRBOOK_ID; - clist_d->base_ab = atoi(val); - free(val); - } - else - { - clist_d->list_op = CT_GET_LIST_ALL_PERSON_HAD_EMAIL; - } - break; - case CT_UG_REQUEST_SELECT_NUMBER_OR_EMAIL: - val = NULL; - service_get_extra_data(service, CT_UG_BUNDLE_ACCOUNTID, &val); - if (val) - { - clist_d->list_op = - CT_GET_LIST_PERSON_HAD_NUMBER_OR_EMAIL_OF_ADDRBOOK_ID; - clist_d->base_ab = atoi(val); - free(val); - } - else - { - clist_d->list_op = - CT_GET_LIST_ALL_PERSON_HAD_NUMBER_OR_EMAIL; - } - break; - case CT_UG_REQUEST_UPDATE_CONTACT: - val = NULL; - service_get_extra_data(service, CT_UG_BUNDLE_ACCOUNTID, &val); - if (val) - { - clist_d->list_op = CT_GET_LIST_PERSON_OF_ADDRBOOK_ID; - clist_d->base_ab = atoi(val); - free(val); - } - service_get_extra_data(service, CT_UG_BUNDLE_NUM, - &clist_d->ug_data); - if (clist_d->ug_data) - break; - service_get_extra_data(service, CT_UG_BUNDLE_EMAIL, - &clist_d->ug_data); - if (clist_d->ug_data) - break; - service_get_extra_data(service, CT_UG_BUNDLE_WEB, - &clist_d->ug_data); - if (clist_d->ug_data) - break; - break; - case CT_UG_REQUEST_UPDATE_WITH_NUM: - service_get_extra_data(service, CT_UG_BUNDLE_NUM, - &clist_d->ug_data); - val = NULL; - service_get_extra_data(service, CT_UG_BUNDLE_ACCOUNTID, &val); - if (val) - { - clist_d->base_ab = atoi(val); - free(val); - } - clist_d->list_op = CT_GET_LIST_PERSON_OF_WRITABLE_ADDRBOOK_ID; - break; - case CT_UG_REQUEST_UPDATE_WITH_EMAIL: - service_get_extra_data(service, CT_UG_BUNDLE_EMAIL, - &clist_d->ug_data); - val = NULL; - service_get_extra_data(service, CT_UG_BUNDLE_ACCOUNTID, &val); - if (val) - { - clist_d->base_ab = atoi(val); - free(val); - } - clist_d->list_op = CT_GET_LIST_PERSON_OF_WRITABLE_ADDRBOOK_ID; - break; - case CT_UG_REQUEST_UPDATE_WITH_WEB: - service_get_extra_data(service, CT_UG_BUNDLE_WEB, - &clist_d->ug_data); - val = NULL; - service_get_extra_data(service, CT_UG_BUNDLE_ACCOUNTID, &val); - if (val) - { - clist_d->base_ab = atoi(val); - free(val); - } - clist_d->list_op = CT_GET_LIST_PERSON_OF_WRITABLE_ADDRBOOK_ID; - break; - case CT_UG_REQUEST_CHECK: - val = NULL; - service_get_extra_data(service, CT_UG_BUNDLE_ACCOUNTID, &val); - if (val) - { - clist_d->list_op = CT_GET_LIST_PERSON_OF_ADDRBOOK_ID; - clist_d->base_ab = atoi(val); - free(val); - } - else - { - service_get_extra_data(service, CT_UG_BUNDLE_MAX, &val); - if (val) - { - clist_d->cnt_max_check = atoi(val); - free(val); - } - } - break; - case CT_UG_REQUEST_CHECK_FOR_NUMBER: - val = NULL; - service_get_extra_data(service, CT_UG_BUNDLE_ACCOUNTID, &val); - if (val) - { - clist_d->list_op = - CT_GET_LIST_PERSON_HAD_NUMBER_OF_ADDRBOOK_ID; - clist_d->base_ab = atoi(val); - free(val); - } - else - { - clist_d->list_op = CT_GET_LIST_ALL_PERSON_HAD_NUMBER; - service_get_extra_data(service, CT_UG_BUNDLE_MAX, &val); - if (val) - clist_d->cnt_max_check = atoi(val); - free(val); - } - break; - case CT_UG_REQUEST_CHECK_FOR_EMAIL: - val = NULL; - service_get_extra_data(service, CT_UG_BUNDLE_ACCOUNTID, &val); - if (val) - { - clist_d->list_op = - CT_GET_LIST_PERSON_HAD_EMAIL_OF_ADDRBOOK_ID; - clist_d->base_ab = atoi(val); - free(val); - } - else - { - clist_d->list_op = CT_GET_LIST_ALL_PERSON_HAD_EMAIL; - service_get_extra_data(service, CT_UG_BUNDLE_MAX, &val); - if (val) - clist_d->cnt_max_check = atoi(val); - free(val); - } - break; - case CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL: - val = NULL; - service_get_extra_data(service, CT_UG_BUNDLE_ACCOUNTID, &val); - if (val) - { - clist_d->list_op = - CT_GET_LIST_PERSON_HAD_NUMBER_OR_EMAIL_OF_ADDRBOOK_ID; - clist_d->base_ab = atoi(val); - free(val); - } - else - { - clist_d->list_op = - CT_GET_LIST_ALL_PERSON_HAD_NUMBER_OR_EMAIL; - service_get_extra_data(service, CT_UG_BUNDLE_MAX, &val); - if (val) - clist_d->cnt_max_check = atoi(val); - free(val); - } - break; - break; - case PH_UG_REQUEST_SET_WITH_IMG: - case PH_UG_REQUEST_SET_WITH_RINGTONE: - case CT_UG_REQUEST_SAVE_IMG: - case CT_UG_REQUEST_SAVE_RINGTONE: - service_get_extra_data(service, CT_UG_BUNDLE_PATH, - &clist_d->ug_data); - if (CT_UG_REQUEST_SAVE_IMG == clist_d->ug_request) - clist_d->list_op = - CT_GET_LIST_PERSON_OF_WRITABLE_ADDRBOOK_ID; - if (-1 == access(clist_d->ug_data, R_OK)) - { - ERR("Invalid filepath(%s)", clist_d->ug_data); - return -2; - } - break; - default: - ERR("Invalid request(%d)", clist_d->ug_request); - return -1; - } - } - return 0; -} - -static void list_img_crop_result_for_add(ui_gadget_h ug, service_h service, - void *data) -{ - PH_TRACE; - contacts_record_h record_image = NULL; - int err = CONTACTS_ERROR_NONE; - ct_detail_data *cdetail_d = (ct_detail_data *) data; - - p_retm_if(NULL == ug || NULL == data, "ug or data is NULL"); - - if (service) - { - char *normal = NULL; - char *full = NULL; - - service_get_extra_data(service, "crop_image_path", &normal); - p_retm_if(!normal, "return value is NULL.\n"); - - service_get_extra_data(service, "image_path", &full); - record_image = ctui_get_record_image(cdetail_d->contact); - - err = contacts_record_set_str(record_image, _contacts_image.path, - normal); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_record_set_str() Failed(%d)", err); - - free(normal); - free(full); - } - cdetail_d->only_input = true; - ctui_create_input_view(cdetail_d); -} - -static void list_destory_detail_child_ug(ui_gadget_h ug, void *priv) -{ - PH_TRACE; - ct_detail_data *cdetail_d = (ct_detail_data *) priv; - p_retm_if(NULL == ug, "ug is NULL"); - ug_destroy(ug); - - p_retm_if(NULL == priv, "priv is NULL"); - cdetail_d->child_ug = NULL; -} - -void ct_list_destroy_child_ug(void *data) -{ - PH_TRACE; - ct_list_data *clist_d = (ct_list_data*) data; - clist_d->child_ug = NULL; -} - -API void ctui_list_update_with_data(ph_view_info *view_info, void *data, - int person_id, int grp_id, int ab_id) -{ - PH_TRACE; - ct_detail_data *cdetail_d; - int err = CONTACTS_ERROR_NONE; - contacts_record_h record = NULL; - struct ug_cbs cbs = { 0 }; - - cdetail_d = (ct_detail_data *) calloc(1, sizeof(ct_detail_data)); - p_retm_if(!cdetail_d, "cdetail_d is NULL, Not enough memory"); - - cdetail_d->win = view_info->win; - cdetail_d->navi = view_info->navi; - cdetail_d->ug = view_info->ug; - cdetail_d->prev_navi_item = elm_naviframe_top_item_get(view_info->navi); - cdetail_d->prev_view_data = data; - cdetail_d->person_id = person_id; - cdetail_d->base_grp = grp_id; - cdetail_d->base_ab = ab_id; - cdetail_d->ug_request = view_info->ug_request; - - if (person_id) - { - Eina_List *list_contact; - err = contacts_db_get_record(_contacts_person._uri, person_id, - &(cdetail_d->person)); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_db_get_record() Failed(%d)", err); - - list_contact = ctui_person_get_writable_contact_list(person_id); - if (NULL == list_contact) - { - err = contacts_record_create(_contacts_contact._uri, - &(cdetail_d->contact)); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_record_create() Failed(%d)", err); - } - else - { - err = contacts_record_clone((contacts_record_h) list_contact->data, - &(cdetail_d->contact)); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_record_clone() Failed(%d)", err); - ctui_free_record_list(list_contact); - } - } - - if (NULL == cdetail_d->contact) - { - err = contacts_record_create(_contacts_contact._uri, - &(cdetail_d->contact)); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_record_create() Failed(%d)", err); - } - - switch (view_info->ug_request) - { - //case PH_UG_REQUEST_SET_WITH_NUM: - case CT_UG_REQUEST_UPDATE_WITH_NUM: - err = contacts_record_create(_contacts_number._uri, &record); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_record_create() Failed(%d)", err); - - err = contacts_record_set_str(record, _contacts_number.number, - view_info->ug_data); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_record_set_str() Failed(%d)", err); - - err = contacts_record_set_int(record, _contacts_number.type, - CONTACTS_NUMBER_TYPE_CELL); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_record_set_int() Failed(%d)", err); - - err = contacts_record_add_child_record(cdetail_d->contact, - _contacts_contact.number, record); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_record_add_child_record() Failed(%d)", err); - break; - //case PH_UG_REQUEST_SET_WITH_EMAIL: - case CT_UG_REQUEST_UPDATE_WITH_EMAIL: - err = contacts_record_create(_contacts_email._uri, &record); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_record_create() Failed(%d)", err); - - err = contacts_record_set_str(record, _contacts_email.email, - view_info->ug_data); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_record_set_str() Failed(%d)", err); - - err = contacts_record_add_child_record(cdetail_d->contact, - _contacts_contact.email, record); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_record_add_child_record() Failed(%d)", err); - break; - //case PH_UG_REQUEST_SET_WITH_WEB: - case CT_UG_REQUEST_UPDATE_WITH_WEB: - err = contacts_record_create(_contacts_url._uri, &record); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_record_create() Failed(%d)", err); - - err = contacts_record_set_str(record, _contacts_url.url, - view_info->ug_data); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_record_set_str() Failed(%d)", err); - - err = contacts_record_add_child_record(cdetail_d->contact, - _contacts_contact.url, record); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_record_add_child_record() Failed(%d)", err); - break; - case CT_UG_REQUEST_UPDATE_CONTACT: - break; - case PH_UG_REQUEST_SET_WITH_IMG: - case CT_UG_REQUEST_SAVE_IMG: //only handle for add - cbs.result_cb = list_img_crop_result_for_add; - cbs.destroy_cb = list_destory_detail_child_ug; - cbs.priv = cdetail_d; - cdetail_d->child_ug = phone_image_crop_ug(cdetail_d->ug, - view_info->ug_data, &cbs); - return; - case PH_UG_REQUEST_SET_WITH_RINGTONE: - case CT_UG_REQUEST_SAVE_RINGTONE: //only handle for add - err = contacts_record_set_str(cdetail_d->contact, - _contacts_contact.ringtone_path, view_info->ug_data); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_record_set_str() Failed(%d)", err); - break; - default: - ERR("Invalid type(%d)", view_info->ug_request); - break; - } - cdetail_d->only_input = true; - ctui_create_input_view(cdetail_d); -} - -void ct_list_call(void *data, Evas_Object *obj, void *event_info) -{ - PH_TRACE; - ct_list_data *clist_d; - ct_person_list *person_info = (ct_person_list *) data; - p_retm_if(NULL == person_info, "parameter(person_info) is NULL"); - p_retm_if(NULL == person_info->number || '\0' == *person_info->number, - "number is NULL"); - phone_launch_voice_call(person_info->id, person_info->number); - - clist_d = (ct_list_data *) evas_object_data_get(obj, "clist_d"); - if (clist_d) - ctui_list_set_unsweep(clist_d); -} - -void ct_list_msg(void *data, Evas_Object *obj, void *event_info) -{ - PH_TRACE; - ct_list_data *clist_d; - ct_person_list *person_info = (ct_person_list *) data; - - p_retm_if(NULL == data, "parameter(person_info) is NULL"); - p_retm_if(NULL == person_info->number || '\0' == *person_info->number, - "number is NULL"); - - clist_d = (ct_list_data *) evas_object_data_get(obj, "clist_d"); - p_retm_if(NULL == clist_d, "evas_object_data_get() return NULL"); - - clist_d->child_ug = ctui_msg_ug(clist_d->ug, person_info->number, - NULL, ct_list_destroy_child_ug, clist_d); - - ctui_list_set_unsweep(clist_d); -} - -void ct_list_popup_hide_cb(void *data, Evas_Object *obj, void *event_info) -{ - PH_TRACE; - ct_list_data *clist_d; - - clist_d = (ct_list_data *) evas_object_data_get((Evas_Object *) data, "clist_d"); - p_retm_if(NULL == clist_d, "evas_object_data_get(clist_d) return NULL"); - evas_object_del(clist_d->popup); - clist_d->popup = NULL; -} - -static void list_sweep_delete_contact(void *data, Evas_Object *obj, - void *event_info) -{ - PH_TRACE; - int err = CONTACTS_ERROR_NONE; - ct_list_data *clist_d; - contacts_record_h record = NULL; - int contact_id = 0; - - PH_DBG("##### [TSP_TEST] list->sweep delete start#####"); - - clist_d = (ct_list_data *) evas_object_data_get(obj, "clist_d"); - p_retm_if(NULL == clist_d, "evas_object_data_get() return NULL"); - evas_object_del(clist_d->popup); - clist_d->popup = NULL; - - evas_object_data_set(clist_d->navi, "ct_list_update_ui", (void *) 1); - - err = contacts_db_get_record(_contacts_person._uri, (int) data, &record); - p_retm_if(err != CONTACTS_ERROR_NONE, "contacts_db_get_record() fail"); - err = contacts_record_get_int(record, _contacts_person.display_contact_id, - &contact_id); - p_retm_if(err != CONTACTS_ERROR_NONE, "contacts_record_get_int() fail"); - err = contacts_db_delete_record(_contacts_person._uri, (int) data); - if (CONTACTS_ERROR_NONE == err) - phone_show_tickernoti(S_(PH_SYS_POP_DELETED)); - else - phone_show_tickernoti(S_(PH_SYS_POP_FAILED)); -} - -void ct_list_sweep_del_cb(void *data, Evas_Object *obj, void *event_info) -{ - PH_TRACE; - int id; - ct_list_data *clist_d; - Evas_Object *btn; - - clist_d = (ct_list_data *) evas_object_data_get(obj, "clist_d"); - p_retm_if(NULL == clist_d, "evas_object_data_get() return NULL"); - - id = (int) data; - btn = phone_create_confirm_popup(&clist_d->popup, clist_d->win, - S_(PH_SYS_POP_DELETE_Q), list_sweep_delete_contact, - (void *) id); - evas_object_data_set(btn, "clist_d", clist_d); - - ctui_list_set_unsweep(clist_d); -} - -void ct_list_get_title(ct_list_data *clist_d, int list_op, int id_ab, - int id_grp) -{ - PH_TRACE; - char *title = NULL; - int err = CONTACTS_ERROR_NONE; - contacts_record_h record = NULL; - - // TODO: Fixme - switch (list_op) - { - case CT_GET_LIST_ALL_PERSON: - case CT_GET_LIST_PERSON_OF_WRITABLE_ADDRBOOK_ID: - case CT_GET_LIST_ALL_PERSON_HAD_EMAIL: - case CT_GET_LIST_ALL_PERSON_HAD_NUMBER: - { - char buf[PH_TEXT_SHORT_LEN]; - snprintf(buf, sizeof(buf), "%s (%d)", - T_(CT_GET_TEXT_BASIC, CTTEXT_ALL_CONTACTS), - clist_d->cnt_list_total); - clist_d->title = strdup(buf); - } - break; - case CT_GET_LIST_PERSON_OF_ADDRBOOK_ID: - case CT_GET_LIST_PERSON_HAD_NUMBER_OF_ADDRBOOK_ID: - case CT_GET_LIST_PERSON_HAD_EMAIL_OF_ADDRBOOK_ID: - if (0 < id_ab) - { - char temp[PH_TEXT_MAX_LEN]; - temp[0] = '\0'; - ctui_get_addressbook_name(id_ab, temp, sizeof(temp)); - if (*temp) - title = strdup(temp); - } - else - title = strdup(T_(CT_GET_TEXT_BASIC, CTTEXT_PHONE)); - clist_d->sub_title = title; - clist_d->title = strdup(T_(CT_GET_TEXT_BASIC, CTTEXT_ALL_CONTACTS)); - break; - case CT_GET_LIST_PERSON_OF_GROUP_ID: - case CT_GET_LIST_PERSON_HAD_NUMBER_OF_GROUP_ID: - case CT_GET_LIST_PERSON_HAD_EMAIL_OF_GROUP_ID: - err = contacts_db_get_record(_contacts_group._uri, id_grp, &record); - p_retm_if(CONTACTS_ERROR_NONE != err, - "contacts_db_record_get() Failed(%d)", err); - - clist_d->title = SAFE_STRDUP(phone_get_group_name(record)); - - err = contacts_record_destroy(record, true); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_record_destroy() Failed(%d)", err); - - if (0 < id_ab) - { - char temp[PH_TEXT_MAX_LEN]; - temp[0] = '\0'; - ctui_get_addressbook_name(id_ab, temp, sizeof(temp)); - if (*temp) - title = strdup(temp); - } - else - title = strdup(T_(CT_GET_TEXT_BASIC, CTTEXT_PHONE)); - clist_d->sub_title = title; - break; - case CT_GET_LIST_PERSON_NOT_ASSIGNED_OF_ADDRBOOK_ID: - case CT_GET_LIST_PERSON_NOT_ASSIGNED_HAD_NUMBER_OF_ADDRBOOK_ID: - case CT_GET_LIST_PERSON_NOT_ASSIGNED_HAD_EMAIL_OF_ADDRBOOK_ID: - clist_d->title = strdup(T_(CT_GET_TEXT_BASIC, CTTEXT_NOT_ASSIGNED)); - if (0 < id_ab) - { - char temp[PH_TEXT_MAX_LEN]; - temp[0] = '\0'; - ctui_get_addressbook_name(id_ab, temp, sizeof(temp)); - if (*temp) - title = strdup(temp); - } - else - title = strdup(T_(CT_GET_TEXT_BASIC, CTTEXT_PHONE)); - clist_d->sub_title = title; - break; - - } -} - -static void __list_add_contacts_to_favorite(ct_list_data *clist_d); - -static void __list_add_contacts_to_favorite_cb(int err, void *data) -{ - PH_TRACE; - ct_list_data *clist_d = (ct_list_data *) data; - ph_progress_info *p_info = NULL; - - p_retm_if(NULL == clist_d, "Invalid parameter(clist_d is NULL)"); - p_info = clist_d->p_info; - p_retm_if(NULL == p_info, "Invalid parameter(p_info is NULL)"); - - if (p_info->update_list) - { - contacts_list_destroy(p_info->update_list, true); - p_info->update_list = NULL; - } - - if (CONTACTS_ERROR_NONE != err || p_info->alive == false) - { - if (p_info->popup) - { - evas_object_del(p_info->popup); - p_info->popup = NULL; - } - phone_show_tickernoti(S_(PH_SYS_POP_FAILED)); - free(p_info); - clist_d->p_info = NULL; - clist_d->updating = false; - elm_naviframe_item_pop_to((Elm_Object_Item *) - evas_object_data_get(clist_d->navi, NAVI_ITEM_POP)); - return; - } - else if (p_info->cnt == p_info->cnt_checked_total) - { - if (p_info->popup) - { - evas_object_del(p_info->popup); - p_info->popup = NULL; - } - phone_show_tickernoti(S_(CT_SYS_POP_SUCCESS)); - free(p_info); - clist_d->p_info = NULL; - elm_naviframe_item_pop_to((Elm_Object_Item *) - evas_object_data_get(clist_d->navi, NAVI_ITEM_POP)); - return; - } - else - { - __list_add_contacts_to_favorite(clist_d); - } - -} - -static void __list_add_contacts_to_favorite(ct_list_data *clist_d) -{ - PH_TRACE; - const int LIST_BULK_LENGTH = 50; - int count = 0; - int base_count = 0; - double value = 0.0; - char percent_total[PH_TEXT_MAX_LEN + 1] = { 0, }; - char percent[PH_TEXT_MAX_LEN + 1] = { 0, }; - ph_progress_info *p_info = NULL; - contacts_record_h record = NULL; - contacts_list_h list = NULL; - int err = CONTACTS_ERROR_NONE; - Eina_List *l; - void *v_person_info; - - p_retm_if(NULL == clist_d, "parameter(clist_d) is NULL"); - p_info = clist_d->p_info; - p_retm_if(NULL == p_info, "parameter(p_info) is NULL"); - - err = contacts_list_create(&list); - p_retm_if(CONTACTS_ERROR_NONE != err, "contacts_list_create() Failed(%d)", - err); - - EINA_LIST_FOREACH(clist_d->list_check_info, l, v_person_info) - { - ct_person_list *person_info = (ct_person_list *) v_person_info; - if (NULL == person_info) - continue; - if (base_count < p_info->cnt) - { - base_count++; - continue; - } - - err = contacts_db_get_record(_contacts_person._uri, person_info->id, - &record); - if (CONTACTS_ERROR_NONE != err) - { - ERR("contacts_db_get_record() Failed(%d)", err); - p_info->result = FALSE; - p_info->completed = true; - break; - } - err = contacts_record_set_bool(record, _contacts_person.is_favorite, - true); - if (CONTACTS_ERROR_NONE != err) - { - ERR("contacts_record_set_bool() Failed(%d)", err); - p_info->result = FALSE; - p_info->completed = true; - break; - } - - err = contacts_list_add(list, record); - - count++; - if (LIST_BULK_LENGTH == count - || (count + p_info->cnt) == p_info->cnt_checked_total) - { - p_info->cnt += count; - break; - } - - } - value = (double) p_info->cnt / (double) p_info->cnt_checked_total; - elm_progressbar_value_set(p_info->progressbar, value); - snprintf(percent, sizeof(percent), "%d%%", - (int) (100.0 * (double) p_info->cnt - / (double) p_info->cnt_checked_total)); - snprintf(percent_total, sizeof(percent_total), "%d/%d", p_info->cnt, - p_info->cnt_checked_total); - edje_object_part_text_set(elm_layout_edje_get(p_info->layout), - "elm.text.subtext1", percent); - edje_object_part_text_set(elm_layout_edje_get(p_info->layout), - "elm.text.subtext2", percent_total); - - p_info->update_list = list; - contacts_db_update_records_async(list, __list_add_contacts_to_favorite_cb, - clist_d); -} - -void ct_list_add_contacts_to_favorite(Evas_Object *win, Evas_Object *navi, - int cnt) -{ - PH_TRACE; - ct_list_data *clist_d; - ph_progress_info *p_info; - - clist_d = (ct_list_data *) evas_object_data_get(navi, "favor_list_d"); - p_retm_if(NULL == clist_d, "evas_object_data_get return NULL"); - - p_retm_if(clist_d->p_info, "thread is running"); - - p_info = (ph_progress_info *) calloc(1, sizeof(ph_progress_info)); - p_retm_if(NULL == p_info, "calloc return NULL"); - - clist_d->p_info = p_info; - p_info->cnt_checked_total = cnt; - p_info->alive = true; - p_info->result = TRUE; - p_info->popup = phone_progressbar_popup(win, p_info, - T_(CT_GET_TEXT_BASIC, CTTEXT_ADDING_ING)); - __list_add_contacts_to_favorite(clist_d); -} - -static void __list_add_group_relation(int group_id, int person_id, - contacts_list_h list_result) -{ - PH_TRACE; - contacts_record_h record_group = NULL; - contacts_list_h list = NULL; - contacts_filter_h filter = NULL; - contacts_query_h query = NULL; - int err = CONTACTS_ERROR_NONE; - - p_retm_if(group_id <= 0, "Invalid parameter(group_id is %d)", group_id); - p_retm_if(person_id <= 0, "Invalid parameter(person_id is %d)", person_id); - p_retm_if(NULL == list_result, "Invalid parameter(list is NULL)"); - - do - { - int address_book_id = 0; - if (CONTACTS_ERROR_NONE - != (err = contacts_db_get_record(_contacts_group._uri, group_id, - &record_group))) - break; - if (CONTACTS_ERROR_NONE - != (err = contacts_record_get_int(record_group, - _contacts_group.address_book_id, &address_book_id))) - break; - - if (CONTACTS_ERROR_NONE - != (err = contacts_query_create(_contacts_contact._uri, &query))) - break; - if (CONTACTS_ERROR_NONE - != (err = contacts_filter_create(_contacts_contact._uri, - &filter))) - break; - if (CONTACTS_ERROR_NONE - != (err = contacts_filter_add_int(filter, - _contacts_contact.address_book_id, CONTACTS_MATCH_EQUAL, - address_book_id))) - break; - if (CONTACTS_ERROR_NONE - != (err = contacts_filter_add_operator(filter, - CONTACTS_FILTER_OPERATOR_AND))) - break; - if (CONTACTS_ERROR_NONE - != (err = contacts_filter_add_int(filter, - _contacts_contact.person_id, CONTACTS_MATCH_EQUAL, - person_id))) - break; - if (CONTACTS_ERROR_NONE - != (err = contacts_query_set_filter(query, filter))) - break; - if (CONTACTS_ERROR_NONE - != (err = contacts_db_get_records_with_query(query, 0, 0, &list))) - break; - - while (CONTACTS_ERROR_NONE == err) - { - contacts_record_h record = NULL; - contacts_record_h record_clone = NULL; - contacts_record_h record_group_relation = NULL; - if (CONTACTS_ERROR_NONE != (err = - contacts_list_get_current_record_p(list, &record))) - break; - if (CONTACTS_ERROR_NONE - != (err = contacts_record_clone(record, &record_clone))) - { - ERR("contacts_record_clone() Failed(%d)", err); - break; - } - if (CONTACTS_ERROR_NONE - != (err = contacts_record_create( - _contacts_group_relation._uri, - &record_group_relation))) - { - ERR("contacts_record_create() Failed(%d)", err); - break; - } - contacts_record_set_int(record_group_relation, - _contacts_group_relation.group_id, group_id); - contacts_record_add_child_record(record_clone, - _contacts_contact.group_relation, record_group_relation); - contacts_list_add(list_result, record_clone); - - err = contacts_list_next(list); - } - contacts_filter_destroy(filter); - contacts_query_destroy(query); - contacts_list_destroy(list, true); - contacts_record_destroy(record_group, true); - return; - } - while (0); - contacts_filter_destroy(filter); - contacts_query_destroy(query); - contacts_list_destroy(list, true); - contacts_record_destroy(record_group, true); - return; -} - -static void __list_add_contacts_to_group(ct_list_data *clist_d); - -static void __list_add_contacts_to_group_cb(int err, void *data) -{ - PH_TRACE; - ct_list_data *clist_d = (ct_list_data *) data; - ph_progress_info *p_info = NULL; - - p_retm_if(NULL == clist_d, "Invalid parameter(clist_d is NULL)"); - p_info = clist_d->p_info; - p_retm_if(NULL == p_info, "Invalid parameter(p_info is NULL)"); - - if (p_info->update_list) - { - contacts_list_destroy(p_info->update_list, true); - p_info->update_list = NULL; - } - - if (CONTACTS_ERROR_NONE != err || p_info->alive == false) - { - char *err_msg = NULL; - if (p_info->popup) - { - evas_object_del(p_info->popup); - p_info->popup = NULL; - } - switch (err) - { - case CONTACTS_ERROR_DB: - err_msg = (char *) T_(CT_GET_TEXT_ERR, CTTEXT_ERR_DB_LOCKED); - break; - case CONTACTS_ERROR_FILE_NO_SPACE: - err_msg = (char *) S_(CT_SYS_POP_NOT_ENOUGH_MEMORY); - break; - default: - err_msg = (char *) S_(PH_SYS_POP_FAILED); - break; - } - - phone_show_tickernoti(err_msg); - free(p_info); - clist_d->p_info = NULL; - clist_d->updating = false; - Elm_Object_Item *item = (Elm_Object_Item *) - evas_object_data_get(clist_d->navi, NAVI_ITEM_POP); - if (item) - { - elm_naviframe_item_pop_to(item); - } - else - { - elm_naviframe_item_pop(clist_d->navi); - } - return; - } - else if (p_info->cnt == p_info->cnt_checked_total) - { - if (p_info->popup) - { - evas_object_del(p_info->popup); - p_info->popup = NULL; - } - phone_show_tickernoti(S_(CT_SYS_POP_SUCCESS)); - free(p_info); - clist_d->p_info = NULL; - Elm_Object_Item *item = (Elm_Object_Item *) - evas_object_data_get(clist_d->navi, NAVI_ITEM_POP); - if (item) - { - elm_naviframe_item_pop_to(item); - } - else - { - elm_naviframe_item_pop(clist_d->navi); - } - return; - } - else - { - __list_add_contacts_to_group(clist_d); - } -} - -void ct_list_add_contacts_to_group_without_progressbar_cb(int err, void *data) -{ - PH_TRACE; - ct_list_data *clist_d = (ct_list_data *) data; - p_retm_if(NULL == clist_d, "Invalid parameter(clist_d is NULL)"); - - PH_DBG("err = %d", err); - if (CONTACTS_ERROR_NONE != err) - { - clist_d->updating = false; - phone_show_tickernoti(S_(PH_SYS_POP_FAILED)); - } - else if (clist_d->update_add_list) - { - contacts_list_destroy(clist_d->update_add_list, true); - clist_d->update_add_list = NULL; - - phone_show_tickernoti(S_(CT_SYS_POP_SUCCESS)); - } - - elm_naviframe_item_pop(clist_d->navi); -} - -void ct_list_add_contacts_to_group_without_progressbar(ct_list_data *clist_d) -{ - PH_TRACE; - p_retm_if(NULL == clist_d, "parameter(clist_d) is NULL"); - Eina_List *l = NULL; - void *v_person_info = NULL; - contacts_list_h list = NULL; - - int err = contacts_list_create(&list); - p_retm_if(CONTACTS_ERROR_NONE != err, "contacts_list_create() Failed(%d)", err); - EINA_LIST_FOREACH(*clist_d->list_grp_person, l, v_person_info) - { - ct_person_list *person_info = (ct_person_list *) v_person_info; - if (person_info) - { - if (person_info->checked) - { - PH_DBG("person_info->display = %s", person_info->display); - __list_add_group_relation(clist_d->base_grp, person_info->id, list); - } - } - } - - unsigned int count = 0; - contacts_list_get_count(list, &count); - if (count) - { - clist_d->update_add_list = list; - } - else - { - contacts_list_destroy(clist_d->update_add_list, true); - clist_d->update_add_list = NULL; - } -} - -static void __list_add_contacts_to_group(ct_list_data *clist_d) -{ - PH_TRACE; - const int LIST_BULK_LENGTH = 50; - int count = 0; - int base_count = 0; - double value = 0.0; - char percent_total[PH_TEXT_MAX_LEN + 1] = { 0, }; - char percent[PH_TEXT_MAX_LEN + 1] = { 0, }; - - contacts_list_h list = NULL; - int err = CONTACTS_ERROR_NONE; - ph_progress_info *p_info = NULL; - Eina_List *l = NULL; - void *v_person_info = NULL; - - - p_retm_if(NULL == clist_d, "parameter(clist_d) is NULL"); - p_info = clist_d->p_info; - p_retm_if(NULL == p_info, "parameter(p_info) is NULL"); - - err = contacts_list_create(&list); - p_retm_if(CONTACTS_ERROR_NONE != err, "contacts_list_create() Failed(%d)", - err); - - EINA_LIST_FOREACH(clist_d->list, l, v_person_info) - { - ct_person_list *person_info = (ct_person_list *) v_person_info; - if (NULL == person_info) - continue; - - if (person_info->checked) - { - if (base_count < p_info->cnt) - { - base_count++; - continue; - } - - __list_add_group_relation(clist_d->base_grp, person_info->id, list); - - count++; - if (LIST_BULK_LENGTH == count - || (count + p_info->cnt) == p_info->cnt_checked_total) - { - p_info->cnt += count; - break; - } - } - } - - value = (double) p_info->cnt / (double) p_info->cnt_checked_total; - elm_progressbar_value_set(p_info->progressbar, value); - snprintf(percent, sizeof(percent), "%d%%", - (int) (100.0 * (double) p_info->cnt - / (double) p_info->cnt_checked_total)); - snprintf(percent_total, sizeof(percent_total), "%d/%d", p_info->cnt, - p_info->cnt_checked_total); - edje_object_part_text_set(elm_layout_edje_get(p_info->layout), - "elm.text.subtext1", percent); - edje_object_part_text_set(elm_layout_edje_get(p_info->layout), - "elm.text.subtext2", percent_total); - - p_info->update_list = list; - contacts_db_update_records_async(list, __list_add_contacts_to_group_cb, - clist_d); -} - -void ct_list_add_contacts_to_group(Evas_Object *win, Evas_Object *navi, int cnt) -{ - PH_TRACE; - ct_list_data *clist_d; - ph_progress_info *p_info; - - clist_d = (ct_list_data *) evas_object_data_get(navi, "gadd_list_d"); - p_retm_if(NULL == clist_d, "evas_object_data_get return NULL"); - - p_retm_if(clist_d->p_info, "thread is running"); - - p_info = (ph_progress_info *) calloc(1, sizeof(ph_progress_info)); - p_retm_if(NULL == p_info, "calloc return NULL"); - - clist_d->p_info = p_info; - p_info->cnt_checked_total = cnt; - p_info->alive = true; - p_info->result = TRUE; - p_info->popup = phone_progressbar_popup(win, p_info, - T_(CT_GET_TEXT_BASIC, CTTEXT_ADDING_MEMBERS_TO_GROUP)); - __list_add_contacts_to_group(clist_d); -} - - -void ct_list_add_contacts(Evas_Object *win, Evas_Object *navi, int cnt) -{ - PH_TRACE; - p_retm_if(NULL == navi, "navi return NULL"); - ct_list_data *clist_d = (ct_list_data *) evas_object_data_get(navi, "gadd_list_d"); - p_retm_if(NULL == clist_d, "evas_object_data_get return NULL"); - - if (clist_d->list_grp_person) - { - Eina_List *l = NULL; - void *v_person_info = NULL; - EINA_LIST_FOREACH(clist_d->list, l, v_person_info) - { - ct_person_list *person_info = (ct_person_list *) v_person_info; - if (person_info) - { - if (person_info->checked) - { - PH_DBG("person_info->display = %s", person_info->display); - *clist_d->list_grp_person = eina_list_append( - *clist_d->list_grp_person, person_info); - person_info->is_in_group = true; - } - } - } - } - - elm_naviframe_item_pop_to((Elm_Object_Item *) - evas_object_data_get(navi, NAVI_ITEM_POP)); -} diff --git a/lib/list/ct-list-utils.h b/lib/list/ct-list-utils.h deleted file mode 100755 index 9dd6aa7..0000000 --- a/lib/list/ct-list-utils.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.1 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * 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. - */ - -#ifndef __CONTACTS_LIST_UTILS_H__ -#define __CONTACTS_LIST_UTILS_H__ - -/** - * Helper-like functionality used in the following managing contacts routines: - * * add specified contact to group/favorites - * * create/destroy user-gadgets for calls and messages - */ - -int ct_list_parse_bundle(service_h service, ct_list_data* clist_d); -void ct_list_call(void *data, Evas_Object *obj, void *event_info); -void ct_list_msg(void *data, Evas_Object *obj, void *event_info); -void ct_list_popup_hide_cb(void *data, Evas_Object *obj, void *event_info); -void ct_list_sweep_del_cb(void *data, Evas_Object *obj, void *event_info); -void ct_list_get_title(ct_list_data *data, int list_op, int id_ab, int id_grp); -void ct_list_add_contacts_to_group(Evas_Object *win, Evas_Object *navi, - int cnt); - -/** - * Adds group contacts to database. - * @param clist_d Contact list data. - */ -void ct_list_add_contacts_to_group_without_progressbar(ct_list_data *clist_d); - -/** - * The callback function to get the result of contacts_db_update_records_async operation. - * @param error Error code for batch operation. - * @param user_data The user data passed from the batch operation. - */ -void ct_list_add_contacts_to_group_without_progressbar_cb(int err, void *data); -/** - * Add checked contacts to group. - * @param win a window object. - * @param navi a naviframe object. - * @param cnt the number of checked contacts. - */ -void ct_list_add_contacts(Evas_Object *win, Evas_Object *navi, int cnt); - -void ct_list_add_contacts_to_favorite(Evas_Object *win, Evas_Object *navi, - int cnt); -void ct_list_destroy_child_ug(void *data); - -#endif //__CONTACTS_LIST_UTILS_H__ diff --git a/lib/list/ct-list-view-ug.cpp b/lib/list/ct-list-view-ug.cpp deleted file mode 100755 index 0b1164d..0000000 --- a/lib/list/ct-list-view-ug.cpp +++ /dev/null @@ -1,888 +0,0 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.1 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * 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 <ui-gadget-module.h> - -#include "phone.h" -#include "ct-list.h" -#include "ct-detail.h" -#include "ct-list-utils.h" -#include "ct-list-edit-view.h" -#include "ct-list-contact-view.h" -#include "phone-common.h" -#define MAX_SIZE_POPUP 300 - -static void list_ug_nums_popup_sel(void *data, Evas_Object *obj, - void *event_info) -{ - PH_TRACE; - ct_list_data *clist_d = (ct_list_data *) evas_object_data_get(obj, "clist_d"); - int person_id = (int) evas_object_data_get(obj, "person_id"); - - if (CT_UG_REQUEST_CHECK_FOR_NUMBER == clist_d->ug_request - || CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL == clist_d->ug_request) - { - Elm_Object_Item *item; - ct_person_list *person_info; - - item = (Elm_Object_Item *) evas_object_data_get(obj, "item"); - p_retm_if(NULL == item, "evas_object_data_get() return NULL"); - - person_info = (ct_person_list *) elm_object_item_data_get(item); - p_retm_if(NULL == person_info, - "elm_object_item_data_get() return NULL"); - - person_info->id_ret = (int) data; - person_info->id_ret_type = 1; - person_info->checked = !person_info->checked; - ct_list_item_checked_set(item, clist_d); - ctui_list_update_selection_info(clist_d); - ct_list_popup_hide_cb(obj, NULL, NULL); - } - else if (PH_UG_REQUEST_LAUNCH_VOICECALL == clist_d->ug_request) - { - char *num_info = (char*) elm_object_item_text_get((Elm_Object_Item *) event_info); - char *number; - strtok(num_info, " "); - number = strtok(NULL, " "); - PH_DBG("%s", number); - ct_list_popup_hide_cb(obj, NULL, NULL); - phone_launch_voice_call(person_id, number); - } - else - { - if (clist_d->service_operation) - phone_ug_return_value(clist_d->service_operation, 0, (int) data, 0, - 0); - else - phone_ug_return_id(clist_d->ug, person_id, (int) data, 0); - ug_destroy_me(clist_d->ug); - } - -} - -static void list_ug_emails_popup_sel(void *data, Evas_Object *obj, - void *event_info) -{ - PH_TRACE; - ct_list_data *clist_d = (ct_list_data *) evas_object_data_get(obj, "clist_d"); - int contact_id = (int) evas_object_data_get(obj, "person_id"); - - if (CT_UG_REQUEST_CHECK_FOR_EMAIL == clist_d->ug_request - || CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL == clist_d->ug_request) - { - Elm_Object_Item * item; - ct_person_list *person_info; - - item = (Elm_Object_Item *) evas_object_data_get(obj, "item"); - p_retm_if(NULL == item, "evas_object_data_get() return NULL"); - - person_info = (ct_person_list *) elm_object_item_data_get(item); - p_retm_if(NULL == person_info, - "elm_object_item_data_get() return NULL"); - - person_info->id_ret = (int) data; - person_info->id_ret_type = 2; - person_info->checked = !person_info->checked; - ct_list_item_checked_set(item, clist_d); - ctui_list_update_selection_info(clist_d); - ct_list_popup_hide_cb(obj, NULL, NULL); - } - else - { - if (clist_d->service_operation) - phone_ug_return_value(clist_d->service_operation, 0, 0, (int) data, - 0); - else - phone_ug_return_id(clist_d->ug, contact_id, 0, (int) data); - - ug_destroy_me(clist_d->ug); - } -} - -API Evas_Object* ctui_list_create_values_list(const char *view_uri, - Evas_Object *popup, Evas_Object *list, Eina_List *values, - void (*cb)(void *, Evas_Object *, void *)) -{ - PH_TRACE; - int id; - int val_type; - char *email_str_p; - const char *type_str; - char buf[PH_TEXT_MAX_LEN]; - Eina_List *l; - int err = CONTACTS_ERROR_NONE; - void *v_record = NULL; - - if (NULL == list) - { - list = elm_list_add(popup); - evas_object_size_hint_max_set(list, -1, MAX_SIZE_POPUP * elm_config_scale_get()); // TODO : should be revise - } - - EINA_LIST_FOREACH(values, l, v_record) - { - contacts_record_h record = (contacts_record_h) v_record; - if (NULL == record) - continue; - - if (0 == strcmp(view_uri, _contacts_email._uri)) - { - err = contacts_record_get_int(record, _contacts_email.id, &id); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_record_get_int() Failed(%d)", err); - - err = contacts_record_get_int(record, _contacts_email.type, - &val_type); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_record_get_int() Failed(%d)", err); - - type_str = - T_(CT_GET_TEXT_EMAIL_TYPE, ctui_get_email_type_index(val_type)); - - err = contacts_record_get_str_p(record, _contacts_email.email, - &email_str_p); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_record_get_str_p() Failed(%d)", err); - - snprintf(buf, sizeof(buf), "%s %s", type_str, email_str_p); - } - else - { - char num_type_str[PH_TEXT_MAX_LEN + 1]; - - err = contacts_record_get_int(record, _contacts_number.id, &id); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_record_get_int() Failed(%d)", err); - - err = contacts_record_get_int(record, _contacts_number.type, - &val_type); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_record_get_int() Failed(%d)", err); - - ctui_get_number_type_str(record, val_type, num_type_str, - sizeof(num_type_str)); - - err = contacts_record_get_str_p(record, _contacts_number.number, - &email_str_p); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_record_get_str_p() Failed(%d)", err); - - snprintf(buf, sizeof(buf), "%s %s", num_type_str, email_str_p); - } - elm_list_item_append(list, buf, NULL, NULL, cb, (void *) id); - } - - elm_list_mode_set(list, ELM_LIST_EXPAND); - return list; -} - -static Evas_Object* list_ug_create_popup_values_list(ct_list_data *clist_d, - ct_person_list *person_info) -{ - PH_TRACE; - Evas_Object *popup; - Evas_Object *list = NULL; - Evas_Object *btn; - - popup = elm_popup_add(clist_d->navi); - elm_object_style_set(popup, "min_liststyle"); - evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - - if (person_info->number_list) - list = ctui_list_create_values_list(_contacts_number._uri, popup, list, - person_info->number_list, list_ug_nums_popup_sel); - if (person_info->email_list) - list = ctui_list_create_values_list(_contacts_email._uri, popup, list, - person_info->email_list, list_ug_emails_popup_sel); - - elm_object_content_set(popup, list); - evas_object_data_set(list, "clist_d", clist_d); - evas_object_data_set(list, "person_id", (void *) person_info->id); - - btn = elm_button_add(popup); - elm_object_text_set(btn, S_(PH_SYS_POP_CLOSE)); - elm_object_part_content_set(popup, "button1", btn); - elm_object_style_set(btn, "popup_button/default"); - evas_object_smart_callback_add(btn, "clicked", ct_list_popup_hide_cb, list); - - clist_d->popup = popup; - evas_object_show(popup); - return list; -} - -static inline void list_ug_handle_select_number(ct_list_data *clist_d, - ct_person_list *person_info) -{ - PH_TRACE; - char *number_str_p = NULL; - int number_id; - Eina_List *list_contact; - int err = CONTACTS_ERROR_NONE; - contacts_record_h record = NULL; - - list_contact = ctui_person_get_contact_list(person_info->id); - p_retm_if(NULL == list_contact, - "ctui_person_get_contact_list() return NULL"); - - if (person_info->number_list == NULL) - person_info->number_list = ctui_person_get_number_list(list_contact); - - if (person_info->number_list) - { - if (1 == eina_list_count(person_info->number_list)) - { - record = (contacts_record_h) person_info->number_list->data; - if (PH_UG_REQUEST_LAUNCH_VOICECALL == clist_d->ug_request) - { - err = contacts_record_get_str_p(record, _contacts_number.number, - &number_str_p); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_record_get_str_p() Failed(%d)", err); - phone_launch_voice_call(person_info->id, number_str_p); - } - else - { - err = contacts_record_get_int(record, _contacts_number.id, - &number_id); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_record_get_int() Failed(%d)", err); - if (clist_d->service_operation) - phone_ug_return_value(clist_d->service_operation, 0, - number_id, 0, 0); - else - phone_ug_return_id(clist_d->ug, person_info->id, number_id, - 0); - ug_destroy_me(clist_d->ug); - } - } - else - list_ug_create_popup_values_list(clist_d, person_info); - } - else - { - phone_show_popup(clist_d->navi, T_(CT_GET_TEXT_ERR, CTTEXT_NO_NUMBER), - 1.5); - } - ctui_free_record_list(list_contact); -} - -static inline void list_ug_handle_select_email(ct_list_data *clist_d, - ct_person_list *person_info) -{ - PH_TRACE; - int email_id; - Eina_List *list_contact; - int err = CONTACTS_ERROR_NONE; - contacts_record_h record = NULL; - - list_contact = ctui_person_get_contact_list(person_info->id); - p_retm_if(NULL == list_contact, - "ctui_person_get_contact_list() return NULL"); - - if (person_info->email_list == NULL) - person_info->email_list = ctui_person_get_email_list(list_contact); - if (person_info->email_list) - { - if (1 == eina_list_count(person_info->email_list)) - { - record = (contacts_record_h) person_info->email_list->data; - err = contacts_record_get_int(record, _contacts_email.id, - &email_id); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_record_get_int() Failed(%d)", err); - if (clist_d->service_operation) - phone_ug_return_value(clist_d->service_operation, 0, 0, - email_id, 0); - else - phone_ug_return_id(clist_d->ug, person_info->id, 0, email_id); - ug_destroy_me(clist_d->ug); - } - else - list_ug_create_popup_values_list(clist_d, person_info); - } - else - { - phone_show_popup(clist_d->navi, T_(CT_GET_TEXT_ERR, CTTEXT_NO_EMAIL), - 1.5); - } - ctui_free_record_list(list_contact); -} - -static inline void list_ug_handle_select_number_or_email(ct_list_data *clist_d, - ct_person_list *person_info) -{ - PH_TRACE; - int number_id; - int email_id; - int number_list_count = 0; - int email_list_count = 0; - Eina_List *list_contact; - int err = CONTACTS_ERROR_NONE; - contacts_record_h record = NULL; - - list_contact = ctui_person_get_contact_list(person_info->id); - p_retm_if(NULL == list_contact, - "ctui_person_get_contact_list() return NULL"); - - if (NULL == person_info->number_list) - person_info->number_list = ctui_person_get_number_list(list_contact); - if (NULL == person_info->email_list) - person_info->email_list = ctui_person_get_email_list(list_contact); - - if (person_info->number_list) - number_list_count = eina_list_count(person_info->number_list); - if (person_info->email_list) - email_list_count = eina_list_count(person_info->email_list); - - if (number_list_count == 0 && email_list_count == 0) - { - phone_show_popup(clist_d->navi, T_(CT_GET_TEXT_ERR, CTTEXT_NO_EMAIL), - 1.5); - } - else if (number_list_count == 1 && email_list_count == 0) - { - record = (contacts_record_h) person_info->number_list->data; - err = contacts_record_get_int(record, _contacts_number.id, &number_id); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_record_get_int() Failed(%d)", err); - if (clist_d->service_operation) - phone_ug_return_value(clist_d->service_operation, 0, number_id, 0, - 0); - else - phone_ug_return_id(clist_d->ug, person_info->id, number_id, 0); - ug_destroy_me(clist_d->ug); - } - else if (number_list_count == 0 && email_list_count == 1) - { - record = (contacts_record_h) person_info->email_list->data; - err = contacts_record_get_int(record, _contacts_email.id, &email_id); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_record_get_int() Failed(%d)", err); - if (clist_d->service_operation) - phone_ug_return_value(clist_d->service_operation, 0, 0, email_id, - 0); - else - phone_ug_return_id(clist_d->ug, person_info->id, 0, email_id); - ug_destroy_me(clist_d->ug); - } - else - { - list_ug_create_popup_values_list(clist_d, person_info); - } - ctui_free_record_list(list_contact); -} - -static inline void ct_list_ug_handle_select_vcard(ct_list_data *clist_d, - int person_id) -{ - PH_TRACE; - bool result = false; - char vcard_path[PH_TEXT_MAX_LEN + 1]; - - result = ctui_list_make_vcard(person_id, vcard_path, sizeof(vcard_path)); - PH_DBG("%d, %s", person_id, vcard_path); - if (result == true) - { - if (clist_d->service_operation) - phone_ug_operation_return_vcard(clist_d->service_operation, - person_id, vcard_path); - else - phone_ug_return_vcard(clist_d->ug, person_id, vcard_path); - ug_destroy_me(clist_d->ug); - } - else - { - phone_show_popup(clist_d->navi, T_(CT_GET_TEXT_ERR, CTTEXT_NO_CONTACTS), - 1.5); - } -} - -static void list_ug_img_crop_result(ui_gadget_h ug, service_h service, - void *data) -{ - PH_TRACE; - Eina_List *list_writable_contact; - ct_list_data *clist_d = (ct_list_data *) data; - - p_retm_if(NULL == ug || NULL == data, "ug or data is NULL"); - - if (service) - { - char *normal = NULL; - char *full = NULL; - void *data; - Eina_List *l; - contacts_record_h record = NULL; - contacts_record_h record_image = NULL; - int err = CONTACTS_ERROR_NONE; - - service_get_extra_data(service, "crop_image_path", &normal); - p_retm_if(NULL == normal, "return value is NULL."); - service_get_extra_data(service, "image_path", &full); - - list_writable_contact = NULL; - list_writable_contact = ctui_person_get_writable_contact_list( - clist_d->selected_person_id); - - if (list_writable_contact) - { - EINA_LIST_FOREACH(list_writable_contact, l, data) - { - record = (contacts_record_h) data; - if (NULL == record) - continue; - - record_image = ctui_get_record_image(record); - if (NULL == record_image) - { - ERR("ctui_get_record_image() Failed(%d)", err); - break; - } - - err = contacts_record_set_str(record_image, - _contacts_image.path, normal); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_record_set_str() Failed(%d)", err); - - err = contacts_db_update_record(record); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_db_update_record() Failed(%d)", err); - } - ctui_free_record_list(list_writable_contact); - } - - free(normal); - free(full); - } -} - -void ct_list_ug_handle_check_for_number(Elm_Object_Item *item, - ct_list_data *clist_d) -{ - PH_TRACE; - ct_person_list *person_info; - Eina_List *list_contact; - Evas_Object *list_nums; - Eina_Bool all_check; - int err = CONTACTS_ERROR_NONE; - contacts_record_h record = NULL; - - person_info = (ct_person_list *) elm_object_item_data_get(item); - p_retm_if(NULL == person_info, "elm_object_item_data_get() return NULL"); - - list_contact = ctui_person_get_contact_list(person_info->id); - p_retm_if(NULL == list_contact, - "ctui_person_get_contact_list() return NULL"); - - if (NULL == person_info->number_list) - person_info->number_list = ctui_person_get_number_list(list_contact); - - if (NULL == person_info->number_list) - { - Evas_Object *check; - ERR("ctui_person_get_number_list() return NULL"); - ctui_free_record_list(list_contact); - - phone_show_popup(clist_d->navi, T_(CT_GET_TEXT_ERR, CTTEXT_NO_NUMBER), - 1.5); - - check = elm_object_part_content_get(clist_d->select_all_layout, - "elm.icon"); - p_retm_if(NULL == check, "elm_object_part_content_get() return NULL"); - - if (clist_d->cnt_list_total == clist_d->cnt_checked) - all_check = EINA_TRUE; - else - all_check = EINA_FALSE; - - elm_check_state_set(check, all_check); - elm_genlist_item_update(item); - return; - } - - if (1 == eina_list_count(person_info->number_list)) - { - record = (contacts_record_h) person_info->number_list->data; - person_info->id_ret_type = 1; - err = contacts_record_get_int(record, _contacts_number.id, - &(person_info->id_ret)); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_record_get_int() Failed(%d)", err); - person_info->checked = !person_info->checked; - ct_list_item_checked_set(item, clist_d); - ctui_list_update_selection_info(clist_d); - } - else - { - list_nums = list_ug_create_popup_values_list(clist_d, person_info); - if (list_nums) - evas_object_data_set(list_nums, "item", item); - } - ctui_free_record_list(list_contact); -} - -void ct_list_ug_handle_check_for_email(Elm_Object_Item *item, - ct_list_data *clist_d) -{ - PH_TRACE; - Eina_List *list_contact; - Evas_Object *list_emails; - ct_person_list *person_info; - Eina_Bool all_check; - int err = CONTACTS_ERROR_NONE; - contacts_record_h record = NULL; - - person_info = (ct_person_list *) elm_object_item_data_get(item); - p_retm_if(NULL == person_info, "elm_object_item_data_get() return NULL"); - - list_contact = ctui_person_get_contact_list(person_info->id); - p_retm_if(NULL == list_contact, - "ctui_person_get_contact_list() return NULL"); - - if (NULL == person_info->email_list) - person_info->email_list = ctui_person_get_email_list(list_contact); - - if (NULL == person_info->email_list) - { - Evas_Object *check; - ERR("ctui_person_get_email_list() return NULL"); - ctui_free_record_list(list_contact); - - phone_show_popup(clist_d->navi, T_(CT_GET_TEXT_ERR, CTTEXT_NO_EMAIL), - 1.5); - - check = elm_object_part_content_get(clist_d->select_all_layout, - "elm.icon"); - p_retm_if(NULL == check, "elm_object_part_content_get() return NULL"); - - if (clist_d->cnt_list_total == clist_d->cnt_checked) - all_check = EINA_TRUE; - else - all_check = EINA_FALSE; - - elm_check_state_set(check, all_check); - elm_genlist_item_update(item); - return; - } - - if (1 == eina_list_count(person_info->email_list)) - { - record = (contacts_record_h) person_info->email_list->data; - person_info->id_ret_type = 2; - err = contacts_record_get_int(record, _contacts_email.id, - &(person_info->id_ret)); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_record_get_int() Failed(%d)", err); - person_info->checked = !person_info->checked; - ct_list_item_checked_set(item, clist_d); - ctui_list_update_selection_info(clist_d); - } - else - { - list_emails = list_ug_create_popup_values_list(clist_d, person_info); - if (list_emails) - evas_object_data_set(list_emails, "item", item); - } - ctui_free_record_list(list_contact); -} - -void ct_list_ug_handle_check_for_number_or_email(Elm_Object_Item *item, - ct_list_data *clist_d) -{ - PH_TRACE; - int number_list_count = 0; - int email_list_count = 0; - Eina_List *list_contact; - Evas_Object *list; - ct_person_list *person_info; - Eina_Bool all_check; - int err = CONTACTS_ERROR_NONE; - contacts_record_h record = NULL; - - person_info = (ct_person_list *) elm_object_item_data_get(item); - p_retm_if(NULL == person_info, "elm_object_item_data_get() return NULL"); - - list_contact = ctui_person_get_contact_list(person_info->id); - p_retm_if(NULL == list_contact, - "ctui_person_get_contact_list() return NULL"); - - if (NULL == person_info->email_list) - person_info->email_list = ctui_person_get_email_list(list_contact); - if (NULL == person_info->number_list) - person_info->number_list = ctui_person_get_number_list(list_contact); - - if (person_info->number_list) - number_list_count = eina_list_count(person_info->number_list); - - if (person_info->email_list) - email_list_count = eina_list_count(person_info->email_list); - - if (0 == number_list_count && 0 == email_list_count) - { - Evas_Object *check; - ERR("ctui_person_get_email_list() return NULL"); - ctui_free_record_list(list_contact); - - phone_show_popup(clist_d->navi, T_(CT_GET_TEXT_ERR, CTTEXT_NO_EMAIL), - 1.5); - - check = elm_object_part_content_get(clist_d->select_all_layout, - "elm.icon"); - p_retm_if(NULL == check, "elm_object_part_content_get() return NULL"); - - if (clist_d->cnt_list_total == clist_d->cnt_checked) - all_check = EINA_TRUE; - else - all_check = EINA_FALSE; - - elm_check_state_set(check, all_check); - elm_genlist_item_update(item); - return; - } - - if (1 == number_list_count && 0 == email_list_count) - { - record = (contacts_record_h) person_info->number_list->data; - err = contacts_record_get_int(record, _contacts_number.id, - &(person_info->id_ret)); - DBG("person_info->number_list->data = %i",person_info->id_ret); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_record_get_int() Failed(%d)", err); - person_info->id_ret_type = 1; - person_info->checked = !person_info->checked; - ct_list_item_checked_set(item, clist_d); - ctui_list_update_selection_info(clist_d); - } - else if (0 == number_list_count && 1 == email_list_count) - { - record = (contacts_record_h) person_info->email_list->data; - err = contacts_record_get_int(record, _contacts_email.id, - &(person_info->id_ret)); - DBG("person_info->number_list->data = %i",person_info->id_ret); - p_warn_if(CONTACTS_ERROR_NONE != err, - "contacts_record_get_int() Failed(%d)", err); - person_info->id_ret_type = 2; - person_info->checked = !person_info->checked; - ct_list_item_checked_set(item, clist_d); - ctui_list_update_selection_info(clist_d); - } - else - { - list = list_ug_create_popup_values_list(clist_d, person_info); - if (list) - evas_object_data_set(list, "item", item); - } - - ctui_free_record_list(list_contact); -} - -static void list_destory_child_ug(ui_gadget_h ug, void *priv) -{ - PH_TRACE; - ct_list_data *clist_d = (ct_list_data *) priv; - p_retm_if(NULL == ug, "ug is NULL"); - ug_destroy(ug); - - p_retm_if(NULL == priv, "priv is NULL"); - clist_d->child_ug = NULL; - if (clist_d->ug) - ug_destroy_me(clist_d->ug); -} - -void ct_list_ug_gl_sel(void *data, Evas_Object *obj, void *event_info) -{ - PH_TRACE; - assert(data); - assert(event_info); - if (NULL != data && NULL != event_info) - { - ct_list_data *clist_d = static_cast<ct_list_data*>(data); - Elm_Object_Item *lastItem = clist_d->last_sweep_item; - - bool isSweepedItemSelected = false; - - if (NULL != lastItem) - { - elm_genlist_item_selected_set(lastItem, EINA_FALSE); - elm_genlist_item_decorate_mode_set(lastItem, "slide", EINA_FALSE); - elm_genlist_item_select_mode_set(lastItem, ELM_OBJECT_SELECT_MODE_DEFAULT); - if (clist_d->fast_index) - { - evas_object_show(clist_d->fast_index); - elm_object_disabled_set(clist_d->fast_index, EINA_FALSE); - } - } - - Elm_Object_Item *item = NULL; - item = static_cast<Elm_Object_Item*>(event_info); - if (NULL != item) - { - elm_genlist_item_selected_set(item, EINA_FALSE); - elm_genlist_item_decorate_mode_set(item, "slide", EINA_FALSE); - if (lastItem == item) - { - isSweepedItemSelected = true; - } - } - clist_d->last_sweep_item = NULL; - - if (!isSweepedItemSelected) - { - int err = CONTACTS_ERROR_NONE; - int ret; - const char *err_msg; - contacts_record_h record = NULL; - struct ug_cbs cbs = { 0 }; - ct_person_list *person_info; - ph_view_info *view_info; - Evas_Object *popup; - - PH_DBG("##### [TSP_TEST] list->detail start #####"); - - if (CT_GET_LIST_VCARD == clist_d->list_op && CT_UG_REQUEST_CHECK != clist_d->ug_request) - { - Evas_Object *content; - - p_retm_if(NULL == clist_d->vcard_path, "vcard_path is NULL"); - - person_info = (ct_person_list *) elm_object_item_data_get(item); - p_retm_if(NULL == person_info, "elm_object_item_data_get() returns NULL"); - - clist_d->idx_vcard = elm_genlist_item_index_get(item); - - content = ctui_contacts_viewer(clist_d->win, clist_d->navi, clist_d->idx_vcard, clist_d->vcard_path); - if (NULL == content) - { - ERR("ctui_contacts_viewer() return NULL"); - elm_exit(); - } - return; - } - - if (CT_LIST_MODE_EDIT == clist_d->list_mode) - { - person_info = (ct_person_list *) elm_object_item_data_get(item); - p_retm_if(NULL == person_info, "elm_object_item_data_get() returns NULL"); - - if (person_info->checked) - { - person_info->checked = !person_info->checked; - ct_list_item_checked_set(item, clist_d); - ctui_list_update_selection_info(clist_d); - return; - } - - if (CT_UG_REQUEST_CHECK_FOR_NUMBER == clist_d->ug_request) - ct_list_ug_handle_check_for_number(item, clist_d); - else if (CT_UG_REQUEST_CHECK_FOR_EMAIL == clist_d->ug_request) - ct_list_ug_handle_check_for_email(item, clist_d); - else if (CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL == clist_d->ug_request) - ct_list_ug_handle_check_for_number_or_email(item, clist_d); - else - { - person_info->checked = !person_info->checked; - ct_list_item_checked_set(item, clist_d); - ctui_list_update_selection_info(clist_d); - } - - return; - } - - person_info = (ct_person_list *) elm_object_item_data_get(item); - p_retm_if(NULL == person_info, "elm_object_item_data_get() returns NULL"); - - PH_DBG("clist_d->ug_request = %d", clist_d->ug_request); - switch (clist_d->ug_request) - { - case CT_UG_REQUEST_LIST: - case CT_UG_REQUEST_LIST_WITH_BACK: - ret = ctui_create_detail_view(clist_d, person_info); - p_warn_if(ret < 0, "ctui_create_detail_view() Failed"); - break; - case CT_UG_REQUEST_SELECT_PERSON: - if (clist_d->ug) - { - if (clist_d->service_operation) - phone_ug_return_value(clist_d->service_operation, person_info->id, 0, 0, 0); - else - phone_ug_return_id(clist_d->ug, person_info->id, 0, 0); - ug_destroy_me(clist_d->ug); - } - break; - case CT_UG_REQUEST_SELECT_NUMBER: - case PH_UG_REQUEST_LAUNCH_VOICECALL: - case CT_UG_REQUEST_SELECT_CONTACT_ADD_TO_HOME: - list_ug_handle_select_number(clist_d, person_info); - break; - case CT_UG_REQUEST_SELECT_EMAIL: - list_ug_handle_select_email(clist_d, person_info); - break; - case CT_UG_REQUEST_SELECT_NUMBER_OR_EMAIL: - list_ug_handle_select_number_or_email(clist_d, person_info); - break; - case CT_UG_REQUEST_SELECT_VCARD: - ct_list_ug_handle_select_vcard(clist_d, person_info->id); - break; - case CT_UG_REQUEST_SHARE_CONTACT_INFO: - ctui_create_share_info_ug_layout(clist_d->navi, person_info->id, clist_d->ug); - break; - case CT_UG_REQUEST_UPDATE_CONTACT: - case CT_UG_REQUEST_UPDATE_WITH_NUM: - case CT_UG_REQUEST_UPDATE_WITH_EMAIL: - case CT_UG_REQUEST_UPDATE_WITH_WEB: - view_info = (ph_view_info *) calloc(1, sizeof(ph_view_info)); - phone_set_view_info(view_info, clist_d->win, clist_d->navi, clist_d->ug, clist_d->ug_request, clist_d->cnt_max_check, clist_d->ug_data); - ctui_list_update_with_data(view_info, clist_d, person_info->id, clist_d->base_grp, clist_d->base_ab); - free(view_info); - break; - case PH_UG_REQUEST_SET_WITH_IMG: - case CT_UG_REQUEST_SAVE_IMG: - clist_d->selected_person_id = person_info->id; - - cbs.result_cb = list_ug_img_crop_result; - cbs.destroy_cb = list_destory_child_ug; - cbs.priv = clist_d; - clist_d->child_ug = phone_image_crop_ug(clist_d->ug, clist_d->ug_data, &cbs); - break; - case PH_UG_REQUEST_SET_WITH_RINGTONE: - case CT_UG_REQUEST_SAVE_RINGTONE: - err = contacts_db_get_record(_contacts_person._uri, person_info->id, &record); - p_retm_if(CONTACTS_ERROR_NONE != err, "contacts_db_get_record() Failed(%d)", err); - - err = contacts_record_set_str(record, _contacts_person.ringtone_path, clist_d->ug_data); - p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_set_str() Failed(%d)", err); - - err = contacts_db_update_record(record); - if (CONTACTS_ERROR_NONE != err) - { - ERR("contacts_db_update_record() Failed(%d)", err); - ctui_create_contacts_error_popup(clist_d->navi, err); - } - else - { - err_msg = S_(CT_SYS_POP_SUCCESS); - popup = phone_show_popup(clist_d->navi, err_msg, 1.5); - evas_object_smart_callback_add(popup, "timeout", ctui_list_ug_hide_cb, clist_d->ug); - } - break; - default: - ERR("Invalid ug_request(%d)", clist_d->ug_request); - break; - } - } - } -} diff --git a/lib/list/ct-list-view-ug.h b/lib/list/ct-list-view-ug.h deleted file mode 100755 index 551c7dc..0000000 --- a/lib/list/ct-list-view-ug.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.1 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * 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. - */ - -/** - * A module responsible for filtering contacts-list (e.g list only contacts with email), and handling "onContactSelected" events. - */ -#ifndef __CONTACTS_LIST_VIEW_UG_H__ -#define __CONTACTS_LIST_VIEW_UG_H__ - -void ct_list_ug_gl_sel(void *data, Evas_Object *obj, void *event_info); -void ct_list_ug_handle_check_for_email(Elm_Object_Item *item, - ct_list_data *clist_d); -void ct_list_ug_handle_check_for_number(Elm_Object_Item *item, - ct_list_data *clist_d); -void ct_list_ug_handle_check_for_number_or_email(Elm_Object_Item *item, - ct_list_data *clist_d); - -#endif //__CONTACTS_LIST_VIEW_UG_H__ diff --git a/lib/list/include/ct-list.h b/lib/list/include/ct-list.h deleted file mode 100755 index 66c80ff..0000000 --- a/lib/list/include/ct-list.h +++ /dev/null @@ -1,320 +0,0 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.1 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * 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. - */ - -/** - * ct-list is an UI-control responsible for drawing and handling list-specific event of - * contacts-application (some kind of "sub-application" used by "host" contacts-app). - */ - -#ifndef __CONTACTS_LIST_H__ -#define __CONTACTS_LIST_H__ - -#include "phone-common.h" - -#define CT_LIST_MAX_SEARCH_STR 1024 -#define CT_LIST_ICON_SIZE 70 -#define CT_LIST_ACCOUNT_CNT_MAX 3 - -enum -{ // this order affects to set list_op in ctui_list_create_contact_view_with_info - CT_GET_LIST_ALL_PERSON = 0, - CT_GET_LIST_PERSON_OF_ADDRBOOK_ID = 1, - CT_GET_LIST_PERSON_HAD_NUMBER_OF_ADDRBOOK_ID = 2, - CT_GET_LIST_PERSON_HAD_EMAIL_OF_ADDRBOOK_ID = 3, - CT_GET_LIST_PERSON_HAD_NUMBER_OR_EMAIL_OF_ADDRBOOK_ID = 4, - CT_GET_LIST_PERSON_OF_WRITABLE_ADDRBOOK_ID = 5, - - CT_GET_LIST_PERSON_OF_GROUP_ID = 10, - CT_GET_LIST_PERSON_HAD_NUMBER_OF_GROUP_ID = 11, - CT_GET_LIST_PERSON_HAD_EMAIL_OF_GROUP_ID = 12, - CT_GET_LIST_PERSON_HAD_NUMBER_OR_EMAIL_OF_GROUP_ID = 13, - - CT_GET_LIST_PERSON_NOT_ASSIGNED_OF_ADDRBOOK_ID = 14, - CT_GET_LIST_PERSON_NOT_ASSIGNED_HAD_NUMBER_OF_ADDRBOOK_ID = 15, - CT_GET_LIST_PERSON_NOT_ASSIGNED_HAD_EMAIL_OF_ADDRBOOK_ID = 16, - CT_GET_LIST_PERSON_NOT_ASSIGNED_HAD_NUMBER_OR_EMAIL_OF_ADDRBOOK_ID = 17, - - CT_GET_LIST_ALL_PERSON_HAD_NUMBER = 20, - CT_GET_LIST_ALL_PERSON_HAD_EMAIL = 21, - CT_GET_LIST_ALL_PERSON_HAD_NUMBER_OR_EMAIL = 22, - CT_GET_LIST_VCARD = 23, -}; - -enum -{ - CT_LIST_ITEM_NO_NUMBER, - CT_LIST_ITEM, - CT_LIST_ITEM_SEARCH_NO_NUMBER, - CT_LIST_ITEM_SEARCH, - CT_LIST_ITEM_COUNT, -}; - -enum -{ - CT_LIST_SINGLE_VIEW, - CT_LIST_IN_MULTI_TAB, -}; - -enum -{ - CT_LIST_MODE_DEFAULT, - CT_LIST_MODE_EDIT, -}; - -typedef struct -{ - int id_ab; - int id_grp; - int count; - int mode; - bool is_read_only; - char *name; - char *img; - char *img_list[6]; - Eina_Bool selected; - Elm_Object_Item *item; -} ct_group_list; - -/** - * Creates and initialises select-list of contacts according to specified filter. - * @param navi a navi-frame object. - * @param result_cb is a callback that fills the ui-list. - * @param result_cb_data a data with data-list inside passed into result_cb. - * @param list_op is a code of filtering to be applied to list inside result_cb_data (e.g. "fill list only with the contacts with email specified"). - * @param id_ab passed to ct_list_data::base_ab. - * @param id_grp is group-id, passed to ct_list_data::base_grp. - * @param cnt_max passed to ct_list_data::cnt_max_check. - * @return navi-frame of newly created instance of ct_list_data (TODO: do we really need to return the input parameter?). - * @see ct_list_data. - */ -Evas_Object* ctui_create_list_select_view( - Evas_Object *navi, - ct_select_result_cb result_cb, - void *result_cb_data, - int list_op, - int id_ab, - int id_grp, - int cnt_max); - -/** - * Creates and initialises instance of ct_list_data. Also pushes new item to navi-frame object and attaches there data of newly created contact. - * @param win a window with list-control on it. - * @param navi is a naviframe-object. - * @param group_id is an id of group new contacts will be assigned to. - * @param ab_id passed to ct_list_data::base_ab - * @param list is a group members list - * @param save_contacts if true: the contacts list will be saved to the group database - * @return navi-item of newly created instance of ct_list_data. - * @see ct_list_data - */ -Elm_Object_Item *ctui_create_gadd_list_select_view( - Evas_Object *win, - Evas_Object *navi, - int group_id, - int ab_id, - Eina_List **list, - bool save_contacts); - -/** - * Updates group list in database. - * @param navi a navi-frame object. - * @param group_id an id of group which will be updated. - * @param add_list a list of contacts which will be added. - * @param remove_list a list of contacts which will be deleted. - */ -void ctui_list_update_group_list_without_progressbar(Evas_Object *navi, - int group_id, - Eina_List *add_list, - Eina_List *remove_list); - -/** - * Creates select-list of favourites contacts. - * @param win a window with list-control on it. - * @param navi is a navi-frame object that will contain list-elements. - * @param list is a contacts-container. - */ -void ctui_create_favorite_list_select_view( - Evas_Object *win, - Evas_Object *navi, - Eina_List *list); - -/** - * Creates vcard-based contact select-list view to importing contacts from vcf file. - * @param navi is a navi-frame object that will contain list-elements. - * @param list is a contacts-container. - * @param path is a path to vcf-file. - * @param result_cb a callback that fills the ui-list. - * @param result_cb_data a data with data-list inside passed into result_cb. - * @return navi-frame object of newly created instance of ct_list_data. - */ -Evas_Object* ctui_create_vcard_list_select_view( - Evas_Object *navi, - Eina_List *list, - const char *path, - ct_select_result_cb result_cb, - void *result_cb_data); - - -/** - * @param win a window with list-control on it. - * @param list is a contacts-container. - * @param path is a path to vcf-file. - * @return created layout-object or NULL in case of error. - */ -Evas_Object* ctui_create_vcard_list_view( - Evas_Object *win, - Eina_List *list, - const char *path); - -/** - * Creates phone list-view based on specified ph_view_info structure. - * @param view_info view-info structure. - * @return list-view's layout. - */ -Evas_Object* ctui_create_phone_list_view(const ph_view_info *view_info); - -/** - * Creates contact list for single contact select. - * @param win a window with list-control on it. - * @param navi is a navi-frame object that will contain list-elements. - * @param sel_cb function to be called when contact was selected - * @param cb_data data to pass to sel_cb - * @param id_caller person id to exclude from contact list - */ -void ctui_create_list_single_select_view(Evas_Object *win, - Evas_Object *navi, Evas_Smart_Cb sel_cb, void *cb_data, int id_caller); - -/** - * Re-fills the existing contact-list. Function destroys current update-timer if it was specified before. - * @param data is an instance of ct_list_data(contact-list data structure). - * @return ECORE_CALLBACK_CANCEL (always, for some reason). - */ -Eina_Bool ctui_list_genlist_update(void *data); - -/** - * A callback that handle onClick event of toolbar-button. Is used within create\update contact routines. -* @param data is an instance of ct_list_data(contact-list data structure). -* @param obj not used -* @param event_info not used - */ -void ctui_list_new_btn_clicked_cb(void *data, - Evas_Object *obj, - void *event_info); - -/** - * Draws contact-list view according to one of specified modes. - * @param mode specifies how the contact-list will be looking(CT_LIST_MODE_EDIT - edit view or CT_LIST_MODE_DEFAULT for default view) - * @param clist_d is the contact-list data structure. - */ -void ctui_list_navi_set( - int mode, - ct_list_data *clist_d); -/** - * Clears contact-list view. -* @param clist_d is the contact-list data structure. - */ -void ctui_list_view_reset(ct_list_data *clist_d); - -/** - * Is used when user switches back contacts-application. - * @param navi is a navi-frame object that will contain list-elements. - */ -void ctui_list_view_resume(Evas_Object *navi); - -/** - * Is used when user switches to other application leaving contacts-application inactive. - * @param navi is a navi-frame object that will contain list-elements. - */ -void ctui_list_view_pause(Evas_Object *navi); - -/** - * Is used in handling language-changing event. - * @param navi is a navi-frame object that will contain list-elements. - */ -void ctui_list_view_language_changed(Evas_Object *navi); - -Evas_Object* ctui_list_create_contact_view_with_info( - ph_view_info *view_info, - int list_op, - ct_group_list *info); - -/** - * Fills search-bar of specified contact-list with specified text. Function does nothing if search-bar is hidden. - * @param clist_d is a contact-list data-structure(contains pointer to search-bar object). - * @param text a text to put into search-bar. - */ -void ctui_list_set_search_text( - ct_list_data *clist_d, - const char *text); - -void ctui_list_edit_mode_start(ct_list_data *clist_d); - -void ctui_list_set_selectall(ct_list_data *clist_d); - -void ctui_list_update_with_data( - ph_view_info *view_info, - void *data, - int id, - int grp_id, - int ab_id); - -Evas_Object* ctui_list_create_values_list( - const char *view_uri, - Evas_Object *popup, - Evas_Object *list, - Eina_List *values, - void (*cb)(void *, Evas_Object *, void *)); - -#define CT_MAX_ADDRBOOK 200 - -void ct_list_init_account_data(ct_list_data *clist_d); - -void ct_list_get_addrbook_icon_path( - ct_list_data *clist_d, - int id_ab, - char *dest, - int dest_len); - -int ct_list_get_contacts( - ct_list_data *clist_d, - Eina_List **list); - -char* ct_list_gl_label_get( - void *data, - Evas_Object *obj, - const char *part); - -char* ct_list_count_gl_label_get( - void *data, - Evas_Object *obj, - const char *part); - -Evas_Object* ct_list_create_contact_layout(ct_list_data *clist_d); - -void ctui_create_group_input_view( - Evas_Object *win, - Evas_Object *navi, - ct_group_list *info, - ct_group_input_result_cb result_cb, - void *cb_data); - -void ctui_list_set_background( - Evas_Object *obj, - bool is_background); - -void list_create_itcs(ct_list_data *clist_d); - -#endif //__CONTACTS_LIST_H__ |