2 * Copyright 2012 Samsung Electronics Co., Ltd
4 * Licensed under the Flora License, Version 1.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://floralicense.org/license/
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
20 #include "ct-input-utils.h"
21 #include "ct-detail-utils.h"
22 #include "ct-group-assign-view.h"
24 static Elm_Genlist_Item_Class grp_itc;
26 int selected_radio_index;
28 }ct_selected_radio_info;
31 Evas_Object *navi_content;
33 Evas_Object *radio_main;
35 contacts_record_h contact_record;
36 Eina_List *selected_radio_info;
38 ct_assign_result_cb assign_cb;
40 Eina_List *list_contact_id;
42 int id_person; //for entry detail view
43 int id_addressbook; //for entry iuput view
44 }ct_assign_group_data;
47 Evas_Object *radio_main;
55 Elm_Object_Item *item;
58 static void grp_assign_notify_update(ct_assign_group_data *cgassign_d)
60 ct_assign_list *info = NULL;
61 Elm_Object_Item *item;
63 p_retm_if(NULL == cgassign_d, "ct_assign_group_data(cgassign_d) is null");
65 item = elm_genlist_first_item_get(cgassign_d->genlist);
67 info = elm_object_item_data_get(item);
70 item = elm_genlist_item_next_get(item);
74 char buf[PH_TEXT_SHORT_LEN];
75 snprintf(buf, sizeof(buf), "%s (%d)", S_(PH_SYS_POP_SELECTED), count);
76 phone_show_notify(cgassign_d->navi_content, buf);
79 phone_show_notify(cgassign_d->navi_content, T_(CT_GET_TEXT_BASE_OP, CTTEXT_SELECT_GROUP));
82 static void grp_assign_gl_del(void *data, Evas_Object *obj)
84 ct_assign_list *info = data;
85 p_retm_if(NULL == data, "data is NULL");
91 static char* grp_assign_gl_label_get(void *data, Evas_Object *obj,
94 ct_assign_list *info = data;
95 p_retvm_if(NULL == data, NULL, "The parameter(data) is NULL");
97 if (!strcmp(part, "elm.text") && info->name)
98 return strdup(info->name);
102 static void grp_assign_check_btn_cb(void *data, Evas_Object *obj, void *event_info)
104 ct_assign_group_data *cgassign_d;
105 ct_assign_list *info = data;
106 p_retm_if(NULL == data, "The parameter(data) is NULL");
108 if (EINA_TRUE == elm_check_state_get(obj))
109 info->selected = true;
111 info->selected = false;
112 cgassign_d = evas_object_data_get(elm_object_item_widget_get(info->item), "cgassign_d");
113 p_retm_if(NULL == cgassign_d, "evas_object_data_get() return NULL");
114 grp_assign_notify_update(cgassign_d);
117 static Evas_Object* grp_assign_gl_icon_get(void *data, Evas_Object *obj,
120 ct_assign_list *gl = data;
121 p_retvm_if(NULL == data, NULL, "The parameter(data) is NULL");
123 if (!strcmp(part, "elm.icon")) {
125 Evas_Object *radio = elm_radio_add(obj);
126 elm_radio_state_value_set(radio, gl->radio_index);
127 elm_radio_group_add(radio, gl->radio_main);
129 elm_radio_value_set(gl->radio_main, gl->radio_index);
130 evas_object_smart_callback_add(radio, "changed", grp_assign_check_btn_cb, data);
134 Evas_Object *btn = elm_check_add(obj);
135 elm_check_state_set(btn, gl->selected);
136 evas_object_propagate_events_set(btn, EINA_FALSE);
137 evas_object_smart_callback_add(btn, "changed", grp_assign_check_btn_cb, data);
143 static void grp_person_assign_done_cb(void *data, Evas_Object *obj, void *event_info)
151 unsigned int relation_count = 0;
153 char display[PH_TEXT_MAX_LEN];
155 contacts_record_h grouprel_record = NULL;
156 contacts_record_h contact_record = NULL;
157 Elm_Object_Item *item;
158 ct_assign_group_data *cgassign_d = data;
161 //remove relation field
163 EINA_LIST_FOREACH(cgassign_d->list_contact_id, l, eina_data) {
164 contact_id = (int)eina_data;
165 err = contacts_db_get_record(_contacts_contact._uri, contact_id, &contact_record );
166 if(CONTACTS_ERROR_NONE != err){
167 PH_DBG("contacts_db_get_record() is Failed(%d)", err);
170 err = contacts_record_get_child_record_count(contact_record,_contacts_contact.group_relation,&relation_count);
171 p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_get_child_record_count() Failed(%d)", err);
173 for (i = relation_count-1; i >= 0; i--) {
174 err = contacts_record_get_child_record_at_p(contact_record, _contacts_contact.group_relation, i, &grouprel_record);
175 p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_get_child_record_at_p() Failed(%d)", err);
177 err = contacts_record_get_int(grouprel_record,_contacts_group_relation.group_id,&group_id);
178 p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_get_int() Failed(%d)", err);
179 err = contacts_record_get_int(grouprel_record,_contacts_group_relation.contact_id,&contact_id);
180 p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_get_int() Failed(%d)", err);
182 PH_DBG("remove relation group_id=%d, contact_id=%d", group_id,contact_id);
183 err = contacts_group_remove_contact(group_id,contact_id);
184 p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_group_remove_contact() Failed(%d)", err);
188 if (NULL == cgassign_d->genlist) {
189 if (cgassign_d->assign_cb)
190 cgassign_d->assign_cb(cgassign_d->assign_cb_data);
191 elm_naviframe_item_pop(cgassign_d->navi);
195 item = elm_genlist_first_item_get(cgassign_d->genlist);
197 ct_assign_list *info = NULL;
198 info = elm_object_item_data_get(item);
199 if(info->group_index == true){
200 item = elm_genlist_item_next_get(item);
203 ct_selected_radio_info *radio_info;
204 PH_DBG("contact_id = %d ",info->contact_id);
205 PH_DBG("info->selected = %d, info->grp_id = %d ",info->selected,info->grp_id);
206 if(info->selected == true){
207 err = contacts_group_add_contact(info->grp_id, info->contact_id);
208 p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_group_add_contact() Failed(%d)", err);
210 item = elm_genlist_item_next_get(item);
213 if (cgassign_d->assign_cb)
214 cgassign_d->assign_cb(cgassign_d->assign_cb_data);
216 phone_hide_notify(cgassign_d->navi_content);
217 elm_naviframe_item_pop(cgassign_d->navi);
220 static void grp_assign_done_cb(void *data, Evas_Object *obj, void *event_info)
223 Elm_Object_Item *item;
224 char display[PH_TEXT_MAX_LEN];
225 ct_assign_group_data *cgassign_d = data;
227 int group_id,contact_id = 0;
229 contacts_record_h grouprel_record = NULL;
232 //remove relation field
233 unsigned int relation_count = 0;
234 err = contacts_record_get_child_record_count(cgassign_d->contact_record, _contacts_contact.group_relation, &relation_count);
235 p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_get_child_record_count() Failed(%d)", err);
236 for (i = relation_count-1; i >= 0; i--) {
237 err = contacts_record_get_child_record_at_p(cgassign_d->contact_record, _contacts_contact.group_relation, i, &grouprel_record);
238 p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_get_child_record_at_p() Failed(%d)", err);
240 err = contacts_record_get_int(grouprel_record, _contacts_group_relation.group_id, &group_id);
241 p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_get_int() Failed(%d)", err);
242 err = contacts_record_get_int(grouprel_record, _contacts_group_relation.contact_id, &contact_id);
243 p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_get_int() Failed(%d)", err);
245 err = contacts_record_remove_child_record(cgassign_d->contact_record, _contacts_contact.group_relation, grouprel_record);
246 p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_remove_child_record() Failed(%d)", err);
248 err = contacts_record_destroy(grouprel_record, true);
249 p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_destroy() Failed(%d)", err);
252 if (NULL == cgassign_d->genlist) {
253 if (cgassign_d->assign_cb)
254 cgassign_d->assign_cb(cgassign_d->assign_cb_data);
255 elm_naviframe_item_pop(cgassign_d->navi);
259 item = elm_genlist_first_item_get(cgassign_d->genlist);
262 ct_assign_list *info = elm_object_item_data_get(item);
263 if(info->group_index == true){
264 item = elm_genlist_item_next_get(item);
267 PH_DBG("info->selected = %d, info->grp_id = %d ",info->selected,info->grp_id);
268 if(info->selected == true){
269 err = contacts_record_create(_contacts_group_relation._uri, &grouprel_record);
270 p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_create() Failed(%d)", err);
272 err = contacts_record_set_int(grouprel_record,_contacts_group_relation.group_id,info->grp_id);
273 p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_set_int() Failed(%d)", err);
275 err = contacts_record_add_child_record(cgassign_d->contact_record, _contacts_contact.group_relation, grouprel_record);
276 p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_add_child_record() Failed(%d)", err);
278 item = elm_genlist_item_next_get(item);
280 if (cgassign_d->assign_cb)
281 cgassign_d->assign_cb(cgassign_d->assign_cb_data);
283 phone_hide_notify(cgassign_d->navi_content);
284 elm_naviframe_item_pop(cgassign_d->navi);
288 static inline void grp_assign_back_cb(void *data, Evas_Object *obj, void *event_info)
290 ct_assign_group_data *cgassign_d = data;
292 if (cgassign_d->assign_cb)
293 cgassign_d->assign_cb(cgassign_d->assign_cb_data);
295 phone_hide_notify(cgassign_d->navi_content);
296 elm_naviframe_item_pop(cgassign_d->navi);
299 static void grp_assign_gl_sel(void *data, Evas_Object *obj, void *event_info)
301 ct_assign_group_data *cgassign_d = data;
302 ct_assign_list *info;
303 Elm_Object_Item *item = event_info;
304 p_retm_if(NULL == data, "data is NULL");
305 info = elm_object_item_data_get(item);
306 p_retm_if(NULL == info, "elm_object_item_data_get() return NULL");
307 ct_selected_radio_info *radio_info;
309 if(info->radio_list){
310 EINA_LIST_FOREACH(cgassign_d->selected_radio_info,l,radio_info){
311 if(radio_info->contact_id == info->contact_id)
312 radio_info->selected_radio_index = info->radio_index;
314 PH_DBG("selected_radio_index = %d",info->radio_index);
315 elm_genlist_item_selected_set(item, EINA_FALSE);
316 elm_genlist_item_update(item);
317 elm_radio_value_set(info->radio_main, info->radio_index);
320 info->selected = !info->selected;
321 elm_genlist_item_selected_set(item, EINA_FALSE);
322 elm_genlist_item_update(item);
324 grp_assign_notify_update(cgassign_d);
327 static void grp_assign_fill_genlist(ct_assign_group_data *cgassign_d, contacts_list_h list_groups, int contact_id)
330 contacts_record_h grouprel_record = NULL;
331 contacts_error_e err;
333 unsigned int relation_count = 0;
337 char *system_id = NULL;
339 grp_itc.item_style = "1text.1icon.2";
340 grp_itc.func.text_get = grp_assign_gl_label_get;
341 grp_itc.func.content_get = grp_assign_gl_icon_get;
342 grp_itc.func.state_get = NULL;
343 grp_itc.func.del = grp_assign_gl_del;
346 gl = calloc(1, sizeof(ct_assign_list));
348 err = phone_cts_get_int_from_list(list_groups, _contacts_group.id, &(gl->grp_id));
349 p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_get_int() Failed(%d)", err);
350 PH_DBG("id=%d",gl->grp_id);
351 gl->contact_id = contact_id;
353 err = phone_cts_get_str_from_list(list_groups, _contacts_group.extra_data, &system_id);
354 p_warn_if(CONTACTS_ERROR_NONE != err, "phone_cts_get_str_from_list() Failed(%d)", err);
355 if (NULL != system_id) {
356 if (strcmp(system_id,"friends")==0)
357 gl->name = SAFE_STRDUP(T_(CT_GET_TEXT_BASIC, CTTEXT_FRIENDS));
358 else if (strcmp(system_id,"family")==0)
359 gl->name = SAFE_STRDUP(T_(CT_GET_TEXT_BASIC, CTTEXT_FAMILY));
360 else if (strcmp(system_id,"coworkers")==0)
361 gl->name = SAFE_STRDUP(T_(CT_GET_TEXT_BASIC, CTTEXT_CO_WORKERS));
363 gl->name = SAFE_STRDUP(T_(CT_GET_TEXT_ERR, CTTEXT_NONAME));
366 err = phone_cts_get_str_from_list(list_groups, _contacts_group.name, &(gl->name));
367 p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_get_str() Failed(%d)", err);
368 PH_DBG("name=%s",gl->name);
371 if(cgassign_d->contact_record) {
372 err = contacts_record_get_child_record_count(cgassign_d->contact_record, _contacts_contact.group_relation, &relation_count);
373 p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_get_child_record_count() Failed(%d)", err);
374 for (i = relation_count-1; i >= 0; i--) {
375 err = contacts_record_get_child_record_at_p(cgassign_d->contact_record, _contacts_contact.group_relation, i, &grouprel_record);
376 p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_get_child_record_at_p() Failed(%d)", err);
377 err = contacts_record_get_int(grouprel_record, _contacts_group_relation.group_id, &group_id);
378 p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_get_int() Failed(%d)", err);
379 if (group_id == gl->grp_id) {
384 gl->item = elm_genlist_item_append(cgassign_d->genlist, &grp_itc, gl, NULL, ELM_GENLIST_ITEM_NONE, grp_assign_gl_sel, cgassign_d);
385 }while (CONTACTS_ERROR_NONE == contacts_list_next(list_groups));
387 static char *_account_group_label_get(void *data, Evas_Object *obj, const char *part)
389 ct_assign_list *gl = data;
390 if (0 == strcmp(part, "elm.text"))
391 return strdup(gl->name);
395 static Elm_Genlist_Item_Class group_index =
397 .item_style = "grouptitle",
398 .func.text_get = _account_group_label_get,
400 static void grp_person_assign_fill_layout(ct_assign_group_data *cgassign_d)
403 unsigned int count = 0;
404 contacts_error_e err;
405 contacts_record_h contacts_record;
406 contacts_record_h addressbook_record;
407 contacts_list_h group_list;
410 int address_book_id = -1;
411 Elm_Object_Item *item;
414 char temp[PH_TEXT_MAX_LEN+1] ={0,};
418 if (NULL == cgassign_d->genlist) {
419 cgassign_d->genlist = elm_genlist_add(cgassign_d->navi_content);
420 elm_object_part_content_set(cgassign_d->navi_content, "contents", cgassign_d->genlist);
421 evas_object_data_set(cgassign_d->genlist, "cgassign_d", cgassign_d);
424 EINA_LIST_FOREACH(cgassign_d->list_contact_id, l, data) {
425 contact_id = (int)data;
427 err = contacts_db_get_record(_contacts_contact._uri, contact_id, &contacts_record);
428 p_retm_if(CONTACTS_ERROR_NONE != err, "contacts_db_get_record() is Failed(%d)", err);
430 err = contacts_record_get_int(contacts_record, _contacts_contact.address_book_id, &address_book_id);
431 p_retm_if(CONTACTS_ERROR_NONE != err, "contacts_record_get_int() is Failed(%d)", err);
433 err = contacts_record_get_str_p(contacts_record, _contacts_contact.display_name, &contact_name);
434 p_retm_if(CONTACTS_ERROR_NONE != err, "contacts_record_get_str_p() is Failed(%d)", err);
436 err = phone_cts_get_list(_contacts_group._uri, _contacts_group.address_book_id, address_book_id, &group_list);
437 p_retm_if(CONTACTS_ERROR_NONE != err, "phone_cts_get_list() is Failed(%d)", err);
439 err = contacts_list_get_count(group_list, &count);
440 p_retm_if(CONTACTS_ERROR_NONE != err, "contacts_list_get_count() Failed(%d)", err);
443 err = contacts_db_get_record(_contacts_address_book._uri, address_book_id, &addressbook_record);
444 p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_db_get_record() Failed(%d)", err);
445 contacts_record_get_str_p(addressbook_record, _contacts_address_book.name, &address_name);
446 snprintf(temp, PH_TEXT_MAX_LEN, "%s_%s", address_name, contact_name);
447 gl = calloc(1, sizeof(ct_assign_list));
448 gl->name = strdup(temp);
449 gl->group_index = true;
450 item = elm_genlist_item_append(cgassign_d->genlist, &group_index, gl , NULL, ELM_GENLIST_ITEM_GROUP, NULL, NULL);
451 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
452 cgassign_d->contact_record = contacts_record;
453 grp_assign_fill_genlist(cgassign_d, group_list, contact_id);
454 err = contacts_record_destroy(addressbook_record, true);
455 p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_list_destroy() Failed(%d)", err);
457 err = contacts_list_destroy(group_list, true);
458 p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_list_destroy() Failed(%d)", err);
460 grp_assign_notify_update(cgassign_d);
461 evas_object_show(cgassign_d->genlist);
465 noc = phone_create_nocontents(cgassign_d->navi_content, T_(CT_GET_TEXT_ERR, CTTEXT_NO_GROUP));
466 p_retm_if(NULL == noc, "phone_create_nocontents() return NULL");
467 elm_object_part_content_set(cgassign_d->navi_content, "contents", noc);
468 evas_object_show(noc);
469 cgassign_d->genlist = NULL;
473 static void grp_assign_fill_layout(const char *view_uri, void *data)
476 unsigned int count = 0;
477 contacts_error_e err;
478 contacts_list_h list;
480 ct_assign_group_data *cgassign_d = data;
482 err = phone_cts_get_list(_contacts_group._uri, _contacts_group.address_book_id, cgassign_d->id_addressbook, &list);
483 p_retm_if(CONTACTS_ERROR_NONE != err, "phone_cts_get_list() is Failed(%d)", err);
485 err = contacts_list_get_count(list, &count);
486 p_retm_if(CONTACTS_ERROR_NONE != err, "contacts_list_get_count() Failed(%d)", err);
489 if (NULL == cgassign_d->genlist) {
490 cgassign_d->genlist = elm_genlist_add(cgassign_d->navi_content);
491 elm_object_part_content_set(cgassign_d->navi_content, "contents", cgassign_d->genlist);
492 evas_object_data_set(cgassign_d->genlist, "cgassign_d", cgassign_d);
495 elm_genlist_clear(cgassign_d->genlist);
496 contact_id = (int)eina_list_nth(cgassign_d->list_contact_id,0);//number of contac id is only one at input view
497 grp_assign_fill_genlist(cgassign_d, list,contact_id);
498 grp_assign_notify_update(cgassign_d);
499 evas_object_show(cgassign_d->genlist);
503 noc = phone_create_nocontents(cgassign_d->navi_content, T_(CT_GET_TEXT_ERR, CTTEXT_NO_GROUP));
504 p_retm_if(NULL == noc, "phone_create_nocontents() return NULL");
505 elm_object_part_content_set(cgassign_d->navi_content, "contents", noc);
506 evas_object_show(noc);
507 cgassign_d->genlist = NULL;
509 err = contacts_list_destroy(list, true);
510 p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_list_destroy() Failed(%d)", err);
513 static void grp_assign_view_delete_cb(void *data, Evas *e, Evas_Object *obj,
518 ct_selected_radio_info *info;
519 ct_assign_group_data *cgassign_d = data;
520 ret = contacts_db_remove_changed_cb(_contacts_group._uri, grp_assign_fill_layout, cgassign_d);
521 p_warn_if(CONTACTS_ERROR_NONE, "contacts_db_remove_changed_cb() Failed(%d)", ret);
526 EINA_LIST_FOREACH(cgassign_d->selected_radio_info, l, info)
527 if (info) free(info);
529 eina_list_free(cgassign_d->selected_radio_info);
534 static void grp_assign_create_layout(ct_assign_group_data *cgassign_d)
539 Elm_Object_Item *navi_item;
541 base = phone_create_base_layout(cgassign_d->navi, false);
543 layout = elm_layout_add(base);
544 elm_object_part_content_set(base, "elm.swallow.content", layout);
546 p_retm_if(NULL == layout, "elm_layout_add return NULL");
547 elm_layout_file_set(layout, SELECTION_INFO_EDJ, "selectioninfo_layout");
549 cgassign_d->navi_content = layout;
551 evas_object_show(layout);
553 if(cgassign_d->id_person > 0)
554 grp_person_assign_fill_layout(cgassign_d);
556 grp_assign_fill_layout(_contacts_group._uri, cgassign_d);
559 navi_item = elm_naviframe_item_push(cgassign_d->navi,
560 T_(CT_GET_TEXT_BASE_OP, CTTEXT_SELECT_GROUP), NULL, NULL, layout, NULL);
562 if(cgassign_d->from_detailview == true) {
563 Evas_Object *toolbar_btn = phone_create_toolbar_btn(cgassign_d->navi, S_(CT_SYS_SK_DONE), grp_person_assign_done_cb, cgassign_d);
564 elm_object_style_set(toolbar_btn, "naviframe/toolbar/left");
565 elm_object_item_part_content_set(navi_item, "toolbar_button1", toolbar_btn);
568 Evas_Object *toolbar_btn = phone_create_toolbar_btn(cgassign_d->navi, S_(CT_SYS_SK_DONE), grp_assign_done_cb, cgassign_d);
569 elm_object_style_set(toolbar_btn, "naviframe/toolbar/left");
570 elm_object_item_part_content_set(navi_item, "toolbar_button1", toolbar_btn);
573 l_btn = phone_create_toolbar_btn(cgassign_d->navi, S_(PH_SYS_SK_CANCEL), grp_assign_back_cb, cgassign_d);
574 elm_object_style_set(l_btn, "naviframe/toolbar/right");
575 elm_object_item_part_content_set(navi_item, "toolbar_button2", l_btn);
577 evas_object_event_callback_add(cgassign_d->navi_content, EVAS_CALLBACK_DEL,
578 grp_assign_view_delete_cb, cgassign_d);
581 void ct_grp_assign_create_view(Evas_Object *navi, contacts_record_h contact, int id_ab, ct_assign_result_cb assign_cb, void *assign_cb_data)
586 ct_assign_group_data *cgassign_d;
588 cgassign_d = calloc(1, sizeof(ct_assign_group_data));
589 cgassign_d->navi = navi;
590 cgassign_d->contact_record = contact;
591 cgassign_d->id_addressbook = id_ab;
592 cgassign_d->assign_cb = assign_cb;
593 cgassign_d->assign_cb_data = assign_cb_data;
594 cgassign_d->from_detailview = false;
596 ret = contacts_record_get_int(contact,_contacts_contact.id,&contact_id);
597 p_warn_if(CONTACTS_ERROR_NONE, "contacts_record_get_int() Failed(%d)", ret);
599 cgassign_d->list_contact_id = eina_list_append(cgassign_d->list_contact_id,(void*)contact_id);
600 PH_DBG("id_ab = %d,contact_id = %d",id_ab, contact_id);
601 grp_assign_create_layout(cgassign_d);
603 contacts_db_add_changed_cb(_contacts_group._uri, grp_assign_fill_layout, cgassign_d);
604 p_warn_if(CONTACTS_ERROR_NONE, "contacts_db_add_changed_cb() Failed(%d)", ret);
606 void ct_person_grp_assign_create_view(Evas_Object *navi, int person_id, ct_assign_result_cb assign_cb, void *assign_cb_data)
611 ct_assign_group_data *cgassign_d;
612 contacts_list_h contact_list = NULL;
613 contacts_record_h record = NULL;
615 cgassign_d = calloc(1, sizeof(ct_assign_group_data));
616 cgassign_d->navi = navi;
617 cgassign_d->assign_cb = assign_cb;
618 cgassign_d->assign_cb_data = assign_cb_data;
619 cgassign_d->id_person = person_id;
620 cgassign_d->from_detailview = true;
622 ret = phone_cts_get_list(_contacts_simple_contact._uri,_contacts_simple_contact.person_id,person_id,&contact_list);
623 p_warn_if(CONTACTS_ERROR_NONE, "phone_cts_get_list() Failed(%d)", ret);
624 ret = contacts_list_get_current_record_p(contact_list, &record);
625 p_warn_if(CONTACTS_ERROR_NONE, "contacts_list_get_current_record_p() Failed(%d)", ret);
629 ret = contacts_record_get_int(record,_contacts_simple_contact.id,&contact_id );
630 p_warn_if(CONTACTS_ERROR_NONE, "contacts_record_get_int() Failed(%d)", ret);
631 cgassign_d->list_contact_id = eina_list_append(cgassign_d->list_contact_id,(void*)contact_id);
632 ret = contacts_list_next(contact_list);
633 p_warn_if(CONTACTS_ERROR_NONE, "contacts_list_next() Failed(%d)", ret);
634 ret = contacts_list_get_current_record_p(contact_list, &record);
635 p_warn_if(CONTACTS_ERROR_NONE, "contacts_list_get_current_record_p() Failed(%d)", ret);
637 ret = contacts_list_destroy(contact_list, true);
638 p_warn_if(CONTACTS_ERROR_NONE, "contacts_list_destroy() Failed(%d)", ret);
639 grp_assign_create_layout(cgassign_d);
641 ret = contacts_db_add_changed_cb(_contacts_group._uri,grp_assign_fill_layout,cgassign_d);
642 p_warn_if(CONTACTS_ERROR_NONE, "contacts_db_add_changed_cb() Failed(%d)", ret);