0eeb65239d598d73c929eabf7feec1ca08a0b185
[apps/home/call-setting.git] / src / cst-call-setting.c
1 /*
2   * Copyright 2012  Samsung Electronics Co., Ltd
3   *
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
7   *
8   * http://www.tizenopensource.org/license
9   *
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.
15   */
16
17 #include "cst-common.h"
18 #include "cst-common-string.h"
19 #include "cst-call-setting.h"
20 #include "cst-widget.h"
21 #include "cst-tapi-request.h"
22 #include "cst-status-tone.h"
23 #include "cst-forwarding.h"
24 #include "cst-barring.h"
25 #include "cst-prefix-dial.h"
26 #include "cst-waiting.h"
27 #include "cst-util.h"
28 #include <ui-gadget-module.h>
29 #include <Elementary.h>
30 #include <vconf.h>
31
32 static Elm_Genlist_Item_Class *itc_1text = NULL;
33 static Elm_Genlist_Item_Class *itc_1text_1icon = NULL;
34 static Elm_Genlist_Item_Class *itc_2text_expand = NULL;
35 static Elm_Genlist_Item_Class *itc_title = NULL;
36 static Elm_Genlist_Item_Class *itc_sub_expand = NULL;
37 static Elm_Genlist_Item_Class *itc_help = NULL;
38 static void __cst_on_click_expanded(void *data, Evas *evas, Evas_Object *obj, void *event_info);
39 static void __cst_on_click_auto_redial(void *data, Evas *evas, Evas_Object *obj, void *event_info);
40
41 static CstGlItemDisplayInfo_t list_dep1[] = {
42         {1, CST_STR_SHOW_MY_NUMBER, ELM_GENLIST_ITEM_TREE, CST_GL_ITEM_EXPANDABLE, __cst_on_click_expanded},
43         {1, CST_STR_PREFIX_DIALLING, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_TEXT, _cst_on_click_prefix_dialling},
44         {1, CST_STR_CALL_STATUS_TONES, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_TEXT, _cst_on_click_call_status_tone},
45         {1, CST_STR_EDIT_SOUND_SETTINGS_DURING_CALL, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_HELP_TEXT, NULL},
46         {1, CST_STR_ALERTS_ON_CALL, ELM_GENLIST_ITEM_TREE, CST_GL_ITEM_EXPANDABLE, __cst_on_click_expanded},
47
48         {1, CST_STR_CALL, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_DG_TITLE, NULL},
49 /*      {1, CST_STR_CALL_FORWARDING, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_TEXT, _cst_on_click_call_forwarding},
50         {1, CST_STR_CALL_BARRING, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_TEXT, _cst_on_click_call_barring},
51 */      {1, CST_STR_CALL_WAITING, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_TEXT, _cst_on_click_call_waiting},
52 /*      {1, CST_STR_AUTO_REDIAL, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_1TEXT_ONOFF, __cst_on_click_auto_redial},
53         {1, CST_STR_DO_NOT_REDIAL_IF_CALL_IS_UNABLE, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_HELP_TEXT, NULL},
54 */
55
56         {1, -1, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_NONE, NULL},
57 };
58
59 static CstGlItemDisplayInfo_t list_dep2_show_my_number[] = {
60         {2, CST_STR_BY_NETWORK, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_RADIO_1TEXT, (void *)CST_CLI_BY_NETWORK},
61         {2, CST_STR_SHOW, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_RADIO_1TEXT, (void *)CST_CLI_SHOW},
62         {2, CST_STR_HIDE, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_RADIO_1TEXT, (void *)CST_CLI_HIDE},
63         {2, -1, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_NONE, NULL},
64 };
65
66 static CstGlItemDisplayInfo_t list_dep2_alerts_on_call[] = {
67         {2, CST_STR_OFF, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_RADIO_1TEXT, (void *)CST_ALERTS_ON_CALL_OFF},
68         {2, CST_STR_SOUND, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_RADIO_1TEXT, (void *)CST_ALERTS_ON_CALL_SOUND},
69         {2, CST_STR_VIBRATION, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_RADIO_1TEXT, (void *)CST_ALERTS_ON_CALL_VIBRATION},
70         {2, -1, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_NONE, NULL},
71 };
72
73 static char *__cst_gl_label_get_phone(void *data, Evas_Object *obj, const char *part)
74 {
75         retv_if(NULL == data, NULL);
76         CstGlItemData_t *item_data = (CstGlItemData_t *)data;
77
78         if ((strcmp(part, "elm.text") == 0) ||
79                 (strcmp(part, "elm.text.1") == 0)) {
80                 return strdup(T_(list_dep1[item_data->index].str_id));
81         }
82         return NULL;
83 }
84
85 static char *__cst_gl_label_get_expandable(void *data, Evas_Object *obj, const char *part)
86 {
87         retv_if(NULL == data, NULL);
88         CstGlItemData_t *item_data = (CstGlItemData_t *)data;
89         if (!strcmp(part, "elm.text.1")) {
90                 return strdup(T_(list_dep1[item_data->index].str_id));
91         } else if (!strcmp(part, "elm.text.2")) {
92                 int value = 0;
93                 if (CST_STR_SHOW_MY_NUMBER == list_dep1[item_data->index].str_id) {
94                         _cst_vconf_get_int(VCONFKEY_CISSAPPL_SHOW_MY_NUMBER_INT, &value);
95                         return strdup(T_(list_dep2_show_my_number[value].str_id));
96                 } else {
97                         _cst_vconf_get_int(VCONFKEY_CISSAPPL_ALERT_ON_CALL_INT, &value);
98                         return strdup(T_(list_dep2_alerts_on_call[value].str_id));
99                 }
100         }
101         return NULL;
102 }
103
104 static void __cst_gl_del_phone(void *data, Evas_Object *obj)
105 {
106         CstGlItemData_t *item_data = (CstGlItemData_t *)data;
107         if (item_data)
108                 free(item_data);
109         return;
110 }
111
112 static void __cst_on_click_auto_redial(void *data, Evas *evas, Evas_Object *obj, void *event_info)
113 {
114         ret_if(NULL == data);
115         CstGlItemData_t *item_data = (CstGlItemData_t *)data;
116         Eina_Bool check_state = elm_check_state_get(item_data->eo_check);
117         _cst_vconf_set_bool(VCONFKEY_CISSAPPL_VOICE_AUTO_REDIAL_BOOL, !check_state);
118         _cst_vconf_set_bool(VCONFKEY_CISSAPPL_VIDEO_AUTO_REDIAL_BOOL, !check_state);
119         elm_genlist_item_update(item_data->gl_item);
120 }
121
122 static void __cst_gl_sel_phone(void *data, Evas_Object *obj, void *event_info)
123 {
124         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
125         Elm_Object_Item *it = (Elm_Object_Item *)event_info;
126         CstGlItemData_t *item_data = (CstGlItemData_t *)elm_object_item_data_get(it);
127         CstUgData_t *ugd = (CstUgData_t *)item_data->ugd;
128
129         if (list_dep1[item_data->index].func)
130                 if (list_dep1[item_data->index].style == CST_GL_ITEM_1TEXT_ONOFF ||
131                         list_dep1[item_data->index].style == CST_GL_ITEM_1TEXT_ONOFF_PROGRESS)
132                         list_dep1[item_data->index].func((void *)item_data, NULL, obj, event_info);
133                 else
134                         list_dep1[item_data->index].func((void *)ugd, NULL, obj, event_info);
135         return;
136 }
137
138 static void __cst_on_changed_auto_redial_check(void *data, Evas_Object *obj, void *event_info)
139 {
140         ENTER(__cst_on_changed_auto_redial_check);
141         Eina_Bool check_state = elm_check_state_get(obj);
142
143         _cst_vconf_set_bool(VCONFKEY_CISSAPPL_VOICE_AUTO_REDIAL_BOOL, check_state);
144         _cst_vconf_set_bool(VCONFKEY_CISSAPPL_VIDEO_AUTO_REDIAL_BOOL, check_state);
145 }
146
147 static Evas_Object *__cst_gl_icon_get_phone(void *data, Evas_Object *obj, const char *part)
148 {
149         retv_if(NULL == data, NULL);
150         CstGlItemData_t *item_data = (CstGlItemData_t *)data;
151
152         if (!strcmp(part, "elm.icon")) {
153                 if (list_dep1[item_data->index].style == CST_GL_ITEM_1TEXT_ONOFF) {
154                         if (CST_STR_AUTO_REDIAL == list_dep1[item_data->index].str_id) {
155                                 int value = 0;
156                                 _cst_vconf_get_bool(VCONFKEY_CISSAPPL_VOICE_AUTO_REDIAL_BOOL, &value);
157                                 item_data->eo_check = _cst_create_onoff_button(obj, value,
158                                         __cst_on_changed_auto_redial_check, item_data);
159                         }
160                 }
161                 return item_data->eo_check;
162         }
163         return NULL;
164 }
165
166 static void __cst_gl_sel_show_my_number(void *data, Evas_Object *obj, void *event_info)
167 {
168         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
169         ret_if(NULL == data);
170         CstGlItemData_t *item_data = (CstGlItemData_t *)data;
171         CstUgData_t *ugd = (CstUgData_t *)item_data->ugd;
172         _cst_vconf_set_int(VCONFKEY_CISSAPPL_SHOW_MY_NUMBER_INT,
173                 (int)list_dep2_show_my_number[item_data->index].func);
174         if (ugd->rdg_show_my_number) {
175                 elm_radio_value_set(ugd->rdg_show_my_number,
176                         (int)list_dep2_show_my_number[item_data->index].func);
177                 elm_genlist_item_update(item_data->parent_gl_item);
178         }
179         return;
180 }
181
182 static char *__cst_gl_label_get_sub_exp(void *data, Evas_Object *obj, const char *part)
183 {
184         retv_if(NULL == data, NULL);
185         CstGlItemData_t *item_data = (CstGlItemData_t *)data;
186         CstGlItemData_t *parent_item_data = (CstGlItemData_t *)elm_object_item_data_get(item_data->parent_gl_item);
187
188         if (strcmp(part, "elm.text") == 0) {
189                 if (CST_STR_SHOW_MY_NUMBER == list_dep1[parent_item_data->index].str_id) {
190                         return strdup(T_(list_dep2_show_my_number[item_data->index].str_id));
191                 } else if (CST_STR_ALERTS_ON_CALL == list_dep1[parent_item_data->index].str_id) {
192                         return strdup(T_(list_dep2_alerts_on_call[item_data->index].str_id));
193                 } else {
194                         DBG("Unknown parent");
195                         return NULL;
196                 }
197         }
198         return NULL;
199 }
200
201 static Evas_Object *__cst_gl_icon_get_sub_exp(void *data, Evas_Object *obj, const char *part)
202 {
203         retv_if(NULL == data, NULL);
204         CstGlItemData_t *item_data = (CstGlItemData_t *)data;
205         CstUgData_t *ugd = (CstUgData_t *)item_data->ugd;
206         retv_if(NULL == ugd, NULL);
207         CstGlItemData_t *parent_item_data = (CstGlItemData_t *)elm_object_item_data_get(item_data->parent_gl_item);
208
209         if (!strcmp(part, "elm.icon")) {
210                 Evas_Object *radio;
211                 if (CST_STR_SHOW_MY_NUMBER == list_dep1[parent_item_data->index].str_id) {
212                         if (NULL == ugd->rdg_show_my_number) {
213                                 ugd->rdg_show_my_number = elm_radio_add(obj);
214                                 elm_radio_value_set(ugd->rdg_show_my_number, - 1);
215                         }
216
217                         radio = _cst_create_radio_icon(obj, ugd->rdg_show_my_number,
218                                 (int)list_dep2_show_my_number[item_data->index].func, 0,
219                                 VCONFKEY_CISSAPPL_SHOW_MY_NUMBER_INT);
220                 } else if (CST_STR_ALERTS_ON_CALL == list_dep1[parent_item_data->index].str_id) {
221                         if (NULL == ugd->rdg_alerts_on_call) {
222                                 ugd->rdg_show_my_number = elm_radio_add(obj);
223                                 elm_radio_value_set(ugd->rdg_alerts_on_call, - 1);
224                         }
225
226                         radio = _cst_create_radio_icon(obj, ugd->rdg_alerts_on_call,
227                                 (int)list_dep2_alerts_on_call[item_data->index].func, 0,
228                                 VCONFKEY_CISSAPPL_ALERT_ON_CALL_INT);
229                 } else {
230                         DBG("Unknown parent");
231                         return NULL;
232                 }
233                 return radio;
234         }
235         return NULL;
236 }
237
238 static void __cst_gl_sel_alerts_on_call(void *data, Evas_Object *obj, void *event_info)
239 {
240         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
241         ret_if(NULL == data);
242         CstGlItemData_t *item_data = (CstGlItemData_t *)data;
243         CstUgData_t *ugd = (CstUgData_t *)item_data->ugd;
244         ret_if(NULL == ugd);
245         _cst_vconf_set_int(VCONFKEY_CISSAPPL_ALERT_ON_CALL_INT,
246                 (int)list_dep2_alerts_on_call[item_data->index].func);
247         if (ugd->rdg_alerts_on_call) {
248                 elm_radio_value_set(ugd->rdg_alerts_on_call,
249                         (int)list_dep2_alerts_on_call[item_data->index].func);
250                 elm_genlist_item_update(item_data->parent_gl_item);
251         }
252         return;
253 }
254
255 static void __cst_gl_con(void *data, Evas_Object *obj, void *event_info)
256 {
257         ENTER(__cst_gl_con);
258         Elm_Object_Item *item = event_info;
259         elm_genlist_item_subitems_clear(item);
260 }
261
262 static void __cst_gl_exp_req(void *data, Evas_Object *obj, void *event_info)
263 {
264         ENTER(__cst_gl_exp_req);
265
266         ret_if(NULL == data);
267         CstUgData_t *ugd = (CstUgData_t *)data;
268
269         Elm_Object_Item *item = event_info;
270         elm_genlist_item_expanded_set(item, 1);
271 }
272
273 static void __cst_gl_con_req(void *data, Evas_Object *obj, void *event_info)
274 {
275         ENTER(__cst_gl_con_req);
276         Elm_Object_Item *item = (Elm_Object_Item *)event_info;
277         elm_genlist_item_expanded_set(item, 0);
278 }
279
280 static void __cst_gl_exp(void *data, Evas_Object *obj, void *event_info)
281 {
282         ENTER(__cst_gl_exp);
283         ret_if(NULL == data);
284         CstUgData_t *ugd = (CstUgData_t *)data;
285         Elm_Object_Item *it = (Elm_Object_Item *)event_info;
286         ret_if(NULL == it);
287         CstGlItemData_t *parent_item_data1 = (CstGlItemData_t *)elm_object_item_data_get(it);
288         Evas_Object *genlist = elm_object_item_widget_get(it);
289         ret_if(NULL == parent_item_data1);
290         ret_if(NULL == genlist);
291
292         CstGlItemData_t *sub_item_data;
293
294         int i = 0;
295
296         if (CST_STR_SHOW_MY_NUMBER == list_dep1[parent_item_data1->index].str_id) {
297                 ugd->rdg_show_my_number = NULL;
298                 ugd->rdg_show_my_number = elm_radio_add(genlist);
299                 elm_radio_value_set(ugd->rdg_show_my_number, -1);
300                 for (i = 0; list_dep2_show_my_number[i].style != CST_GL_ITEM_NONE; ++i) {
301                         sub_item_data = (CstGlItemData_t *)calloc(1, sizeof(CstGlItemData_t));
302                         ret_if(sub_item_data == NULL);
303                         sub_item_data->index = i;
304                         sub_item_data->ugd = ugd;
305                         sub_item_data->parent_gl_item = it;
306                         elm_genlist_item_append(genlist, itc_sub_expand,
307                                 (void *)sub_item_data, it,
308                                 list_dep2_show_my_number[i].flags,
309                                 __cst_gl_sel_show_my_number, sub_item_data);
310                 }
311         } else if (CST_STR_ALERTS_ON_CALL == list_dep1[parent_item_data1->index].str_id) {
312                 ugd->rdg_alerts_on_call = NULL;
313                 ugd->rdg_alerts_on_call = elm_radio_add(genlist);
314                 elm_radio_value_set(ugd->rdg_alerts_on_call, -1);
315                 for (i = 0; list_dep2_alerts_on_call[i].style != CST_GL_ITEM_NONE; ++i) {
316                         sub_item_data = (CstGlItemData_t *)calloc(1, sizeof(CstGlItemData_t));
317                         ret_if(sub_item_data == NULL);
318                         sub_item_data->index = i;
319                         sub_item_data->ugd = ugd;
320                         sub_item_data->parent_gl_item = it;
321                         elm_genlist_item_append(genlist, itc_sub_expand,
322                                 (void *)sub_item_data, it, list_dep2_alerts_on_call[i].flags,
323                                 __cst_gl_sel_alerts_on_call, sub_item_data);
324                 }
325         }
326 }
327
328 static void __cst_on_click_expanded(void *data, Evas *evas, Evas_Object *obj, void *event_info)
329 {
330         ENTER(__cst_on_click_expanded);
331         ret_if(NULL == data);
332         Elm_Object_Item *item = (Elm_Object_Item *)event_info;
333         if (elm_genlist_item_expanded_get(item)) {
334                 __cst_gl_con_req(data, obj, event_info);
335                 __cst_gl_con(data, obj, event_info);
336         } else {
337                 __cst_gl_exp_req(data, obj, event_info);
338                 __cst_gl_exp(data, obj, event_info);
339         }
340 }
341
342 static void __cst_on_clicked_back_btn(void *data, Evas_Object *obj, void *event_info)
343 {
344         ENTER(__cst_on_clicked_back_btn);
345         CstUgData_t *ugd = (CstUgData_t *)data;
346         ret_if(NULL == ugd);
347         ug_destroy_me(ugd->ug);
348 }
349
350 static void __cst_navifr_updated_cb(void *data, Evas_Object *obj, void *event_info)
351 {
352         ret_if(NULL == data);
353         Elm_Object_Item *item = (Elm_Object_Item *)data;
354         elm_genlist_item_expanded_set(item, 0);
355         elm_genlist_item_subitems_clear(item);
356 }
357
358 static void __cst_set_genlist_item_styles_phone(void)
359 {
360         ENTER(__cst_set_genlist_item_styles_phone);
361
362         if (!itc_1text)
363                 itc_1text = elm_genlist_item_class_new();
364         if (!itc_1text_1icon)
365                 itc_1text_1icon = elm_genlist_item_class_new();
366         if (!itc_2text_expand)
367                 itc_2text_expand = elm_genlist_item_class_new();
368         if (!itc_title)
369                 itc_title = elm_genlist_item_class_new();
370         if (!itc_help)
371                 itc_help = elm_genlist_item_class_new();
372         if (!itc_sub_expand)
373                 itc_sub_expand = elm_genlist_item_class_new();
374         
375         itc_1text->item_style = "dialogue/1text";
376         itc_1text->func.text_get = __cst_gl_label_get_phone;
377         itc_1text->func.content_get = NULL;
378         itc_1text->func.state_get = NULL;
379         itc_1text->func.del = __cst_gl_del_phone;
380
381         itc_1text_1icon->item_style = "dialogue/1text.1icon";
382         itc_1text_1icon->func.text_get = __cst_gl_label_get_phone;
383         itc_1text_1icon->func.content_get = __cst_gl_icon_get_phone;
384         itc_1text_1icon->func.state_get = NULL;
385         itc_1text_1icon->func.del = __cst_gl_del_phone;
386
387         itc_2text_expand->item_style = "dialogue/2text.3/expandable";
388         itc_2text_expand->func.text_get = __cst_gl_label_get_expandable;
389         itc_2text_expand->func.content_get = NULL;
390         itc_2text_expand->func.state_get = NULL;
391         itc_2text_expand->func.del = __cst_gl_del_phone;
392
393         itc_title->item_style = "dialogue/title";
394         itc_title->func.text_get = __cst_gl_label_get_phone;
395         itc_title->func.content_get = NULL;
396         itc_title->func.state_get = NULL;
397         itc_title->func.del = __cst_gl_del_phone;
398
399         itc_help->item_style = "multiline/1text";
400         itc_help->func.text_get = __cst_gl_label_get_phone;
401         itc_help->func.content_get = NULL;
402         itc_help->func.state_get = NULL;
403         itc_help->func.del = __cst_gl_del_phone;
404
405         itc_sub_expand->item_style = "dialogue/1text.1icon/expandable2";
406         itc_sub_expand->func.text_get = __cst_gl_label_get_sub_exp;
407         itc_sub_expand->func.content_get = __cst_gl_icon_get_sub_exp;
408         itc_sub_expand->func.state_get = NULL;
409         itc_sub_expand->func.del = __cst_gl_del_phone;
410 }
411
412 static Evas_Object *__cst_create_genlist_phone(void *data)
413 {
414         ENTER(__cst_create_genlist_phone);
415         ret_if(NULL == data);
416         CstUgData_t *ugd = (CstUgData_t *)data;
417         CstGlItemData_t *item_data;
418         Evas_Object *genlist;
419         int i;
420
421         genlist = elm_genlist_add(ugd->nf);
422         ret_if(NULL == genlist);
423         elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
424
425         _cst_create_genlist_seperator(genlist, EINA_FALSE);
426         for (i = 0; list_dep1[i].style != CST_GL_ITEM_NONE; ++i) {
427                 item_data = (CstGlItemData_t *)calloc(1, sizeof(CstGlItemData_t));
428                 ret_if(item_data == NULL);
429
430                 item_data->index = i;
431                 item_data->ugd = ugd;
432                 if (list_dep1[i].style == CST_GL_ITEM_TEXT) {
433                         item_data->gl_item = elm_genlist_item_append(genlist, itc_1text,
434                                 (void *)item_data, NULL, list_dep1[i].flags,
435                                 __cst_gl_sel_phone, ugd);
436                 } else if (list_dep1[i].style == CST_GL_ITEM_IMG_1TEXT) {
437                         item_data->gl_item = elm_genlist_item_append(genlist, itc_1text_1icon,
438                                 (void *)item_data, NULL, list_dep1[i].flags,
439                                 __cst_gl_sel_phone, ugd);
440                 } else if (list_dep1[i].style == CST_GL_ITEM_1TEXT_ONOFF) {
441                         item_data->gl_item = elm_genlist_item_append(genlist, itc_1text_1icon,
442                                 (void *)item_data, NULL, list_dep1[i].flags,
443                                 __cst_gl_sel_phone, ugd);
444                 } else if (list_dep1[i].style == CST_GL_ITEM_RADIO_1TEXT) {
445                         item_data->gl_item = elm_genlist_item_append(genlist, itc_1text_1icon,
446                                 (void *)item_data, NULL, list_dep1[i].flags,
447                                 __cst_gl_sel_phone, ugd);
448                 } else if (list_dep1[i].style == CST_GL_ITEM_EXPANDABLE) {
449                         item_data->gl_item = elm_genlist_item_append(genlist, itc_2text_expand,
450                                 (void *)item_data, NULL, list_dep1[i].flags,
451                                 __cst_gl_sel_phone, ugd);
452                         evas_object_smart_callback_add(ugd->nf, "transition,finished",
453                                 __cst_navifr_updated_cb, item_data->gl_item);
454                 } else if (list_dep1[i].style == CST_GL_ITEM_DG_TITLE) {
455                         item_data->gl_item = elm_genlist_item_append(genlist, itc_title,
456                                 (void *)item_data, NULL, list_dep1[i].flags,
457                                 NULL, NULL);
458                         elm_genlist_item_select_mode_set(item_data->gl_item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
459                 } else if (list_dep1[i].style == CST_GL_ITEM_HELP_TEXT) {
460                         item_data->gl_item = elm_genlist_item_append(genlist, itc_help,
461                                 (void *)item_data, NULL, list_dep1[i].flags,
462                                 NULL, NULL);
463                         elm_genlist_item_select_mode_set(item_data->gl_item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
464                         _cst_create_genlist_underline(genlist);
465                 } else {
466                         DBG("No style");
467                         free(item_data);
468                         item_data = NULL;
469                         return;
470                 }
471         }
472         return genlist;
473 }
474 void _cst_create_call_setting(void *data)
475 {
476         ENTER(_cst_create_call_setting);
477         ret_if(NULL == data);
478         CstUgData_t *ugd = (CstUgData_t *)data;
479
480         __cst_set_genlist_item_styles_phone();
481         Evas_Object *genlist = __cst_create_genlist_phone(ugd);
482         Evas_Object *back_btn = elm_button_add(ugd->nf);
483         evas_object_smart_callback_add(back_btn, "clicked",
484                 __cst_on_clicked_back_btn, ugd);
485
486         elm_naviframe_item_push(ugd->nf, T_(CST_STR_PHONE),
487                 back_btn, NULL, genlist, NULL);
488         elm_object_style_set(back_btn, "naviframe/back_btn/default");
489
490         LEAVE();
491 }