2012/08/21: tizen 2.0 beta
[apps/home/call-setting.git] / src / cst-more-call-setting.c
1 /*\r
2  * Copyright 2012  Samsung Electronics Co., Ltd\r
3  *\r
4  * Licensed under the Flora License, Version 1.0 (the "License");\r
5  * you may not use this file except in compliance with the License.\r
6  * You may obtain a copy of the License at\r
7  *\r
8  * http://www.tizenopensource.org/license\r
9  *\r
10  * Unless required by applicable law or agreed to in writing, software\r
11  * distributed under the License is distributed on an "AS IS" BASIS,\r
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  * See the License for the specific language governing permissions and\r
14  * limitations under the License.\r
15  */\r
16 \r
17 #include <vconf.h>\r
18 #include "cst-common.h"\r
19 #include "cst-common-string.h"\r
20 #include "cst-more-call-setting.h"\r
21 #include "cst-widget.h"\r
22 #include "cst-util.h"\r
23 #include "cst-barring.h"\r
24 #include "cst-waiting.h"\r
25 #include "cst-status-tone.h"\r
26 #include "cst-prefix-dial.h"\r
27 \r
28 static Elm_Genlist_Item_Class *itc_1text = NULL;\r
29 static Elm_Genlist_Item_Class *itc_2text_expand = NULL;\r
30 static Elm_Genlist_Item_Class *itc_sub_expand = NULL;\r
31 static Elm_Genlist_Item_Class *itc_help = NULL;\r
32 static Elm_Genlist_Item_Class *itc_2text = NULL;\r
33 \r
34 static void __cst_on_click_expanded(void *data, Evas *evas, Evas_Object *obj, void *event_info);\r
35 \r
36 static CstGlItemDisplayInfo_t list_more_call_setting[] = {\r
37         {1, CST_STR_SHOW_MY_CALLER_ID, ELM_GENLIST_ITEM_TREE, CST_GL_ITEM_EXPANDABLE, __cst_on_click_expanded},\r
38         {1, CST_STR_CALL_BARRING, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_TEXT, _cst_on_click_call_barring},\r
39         {1, CST_STR_CALL_WAITING, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_TEXT, _cst_on_click_call_waiting},\r
40         {1, CST_STR_DURING_CALL_NOTIFY_ME, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_HELP_TEXT, NULL},\r
41         {1, CST_STR_CALL_STATUS_TONES, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_TEXT, _cst_on_click_call_status_tone},\r
42         {1, CST_STR_EDIT_SOUND_SETTINGS_DURING_CALL, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_HELP_TEXT, NULL},\r
43         {1, CST_STR_ALERTS_ON_CALL, ELM_GENLIST_ITEM_TREE, CST_GL_ITEM_EXPANDABLE, __cst_on_click_expanded},\r
44         {1, CST_STR_AUTO_AREA_CODE, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_SUB_TEXT, _cst_on_click_prefix_dialling},\r
45         {1, CST_STR_AUTOMATICALLY_ADD_AREA_CODE_TO_NUMBER_DISPLAY_PANEL, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_HELP_TEXT, NULL},\r
46         {1, -1, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_NONE, NULL},\r
47 };\r
48 \r
49 static CstGlItemDisplayInfo_t list_dep2_show_my_number[] = {\r
50         {2, CST_STR_BY_NETWORK, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_RADIO_1TEXT, (void *)CST_CLI_BY_NETWORK},\r
51         {2, CST_STR_SHOW, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_RADIO_1TEXT, (void *)CST_CLI_SHOW},\r
52         {2, CST_STR_HIDE, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_RADIO_1TEXT, (void *)CST_CLI_HIDE},\r
53         {2, -1, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_NONE, NULL},\r
54 };\r
55 \r
56 static CstGlItemDisplayInfo_t list_dep2_alerts_on_call[] = {\r
57         {2, CST_STR_OFF, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_RADIO_1TEXT, (void *)CST_ALERTS_ON_CALL_OFF},\r
58         {2, CST_STR_SOUND, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_RADIO_1TEXT, (void *)CST_ALERTS_ON_CALL_SOUND},\r
59         {2, CST_STR_VIBRATION, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_RADIO_1TEXT, (void *)CST_ALERTS_ON_CALL_VIBRATION},\r
60         {2, -1, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_NONE, NULL},\r
61 };\r
62 \r
63 static char *__cst_gl_label_get_more_cst(void *data, Evas_Object *obj, const char *part)\r
64 {\r
65         retv_if(NULL == data, NULL);\r
66         CstGlItemData_t *item_data = (CstGlItemData_t *)data;\r
67 \r
68         if ((strcmp(part, "elm.text") == 0) ||\r
69                 (strcmp(part, "elm.text.1") == 0)) {\r
70                 if (list_more_call_setting[item_data->index].str_id != -1)\r
71                         return strdup(T_(list_more_call_setting[item_data->index].str_id));\r
72         } else if (!strcmp(part, "elm.text.2")) {\r
73                 if (list_more_call_setting[item_data->index].str_id == CST_STR_AUTO_AREA_CODE) {\r
74                         int value = 0;\r
75                         _cst_vconf_get_bool(VCONFKEY_CISSAPPL_PREFIX_DIAL_BOOL, &value);\r
76                         if (value)\r
77                                 return strdup(_cst_get_prefix_dialling_list(CST_ITEM_1));\r
78                         else\r
79                                 return strdup(T_(CST_STR_OFF));\r
80                 }\r
81         }\r
82         return NULL;\r
83 }\r
84 \r
85 static void __cst_gl_del_more_cst(void *data, Evas_Object *obj)\r
86 {\r
87         CstGlItemData_t *item_data = (CstGlItemData_t *)data;\r
88         if (item_data)\r
89                 free(item_data);\r
90         return;\r
91 }\r
92 \r
93 static void __cst_gl_sel_more_cst(void *data, Evas_Object *obj, void *event_info)\r
94 {\r
95         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);\r
96         Elm_Object_Item *it = (Elm_Object_Item *)event_info;\r
97         CstGlItemData_t *item_data = (CstGlItemData_t *)elm_object_item_data_get(it);\r
98         CstUgData_t *ugd = (CstUgData_t *)item_data->ugd;\r
99 \r
100         if (list_more_call_setting[item_data->index].func) {\r
101                 if (list_more_call_setting[item_data->index].style == CST_GL_ITEM_1TEXT_ONOFF)\r
102                         list_more_call_setting[item_data->index].func((void *)item_data, NULL, obj, event_info);\r
103                 else\r
104                         list_more_call_setting[item_data->index].func((void *)ugd, NULL, obj, event_info);\r
105         }\r
106         return;\r
107 }\r
108 \r
109 static char *__cst_gl_label_get_expandable(void *data, Evas_Object *obj, const char *part)\r
110 {\r
111         retv_if(NULL == data, NULL);\r
112         CstGlItemData_t *item_data = (CstGlItemData_t *)data;\r
113         if (!strcmp(part, "elm.text.1")) {\r
114                 if (list_more_call_setting[item_data->index].str_id != -1)\r
115                         return strdup(T_(list_more_call_setting[item_data->index].str_id));\r
116         } else if (!strcmp(part, "elm.text.2")) {\r
117                 int value = 0;\r
118                 if (CST_STR_SHOW_MY_CALLER_ID == list_more_call_setting[item_data->index].str_id) {\r
119                         _cst_vconf_get_int(VCONFKEY_CISSAPPL_SHOW_MY_NUMBER_INT, &value);\r
120                         if (list_dep2_show_my_number[value].str_id != -1)\r
121                                 return strdup(T_(list_dep2_show_my_number[value].str_id));\r
122                 } else {\r
123                         _cst_vconf_get_int(VCONFKEY_CISSAPPL_ALERT_ON_CALL_INT, &value);\r
124                         if (list_dep2_alerts_on_call[value].str_id != -1)\r
125                                 return strdup(T_(list_dep2_alerts_on_call[value].str_id));\r
126                 }\r
127         }\r
128         return NULL;\r
129 }\r
130 \r
131 static void __cst_gl_sel_show_my_number(void *data, Evas_Object *obj, void *event_info)\r
132 {\r
133         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);\r
134         ret_if(NULL == data);\r
135         CstGlItemData_t *item_data = (CstGlItemData_t *)data;\r
136         CstUgData_t *ugd = (CstUgData_t *)item_data->ugd;\r
137         _cst_vconf_set_int(VCONFKEY_CISSAPPL_SHOW_MY_NUMBER_INT,\r
138                 (int)list_dep2_show_my_number[item_data->index].func);\r
139         if (ugd->rdg_show_my_number) {\r
140                 elm_radio_value_set(ugd->rdg_show_my_number,\r
141                         (int)list_dep2_show_my_number[item_data->index].func);\r
142                 elm_genlist_item_update(item_data->parent_gl_item);\r
143         }\r
144         return;\r
145 }\r
146 \r
147 static char *__cst_gl_label_get_sub_exp(void *data, Evas_Object *obj, const char *part)\r
148 {\r
149         retv_if(NULL == data, NULL);\r
150         CstGlItemData_t *item_data = (CstGlItemData_t *)data;\r
151         CstGlItemData_t *parent_item_data = (CstGlItemData_t *)elm_object_item_data_get(item_data->parent_gl_item);\r
152         if (strcmp(part, "elm.text") == 0) {\r
153                 if (CST_STR_SHOW_MY_CALLER_ID == list_more_call_setting[parent_item_data->index].str_id) {\r
154                         return strdup(T_(list_dep2_show_my_number[item_data->index].str_id));\r
155                 } else if (CST_STR_ALERTS_ON_CALL == list_more_call_setting[parent_item_data->index].str_id) {\r
156                         return strdup(T_(list_dep2_alerts_on_call[item_data->index].str_id));\r
157                 } else {\r
158                         DBG("Unknown parent");\r
159                         return NULL;\r
160                 }\r
161         }\r
162         return NULL;\r
163 }\r
164 \r
165 static Evas_Object *__cst_gl_icon_get_sub_exp(void *data, Evas_Object *obj, const char *part)\r
166 {\r
167         retv_if(NULL == data, NULL);\r
168         CstGlItemData_t *item_data = (CstGlItemData_t *)data;\r
169         CstUgData_t *ugd = (CstUgData_t *)item_data->ugd;\r
170         retv_if(NULL == ugd, NULL);\r
171         CstGlItemData_t *parent_item_data = (CstGlItemData_t *)elm_object_item_data_get(item_data->parent_gl_item);\r
172 \r
173         if (!strcmp(part, "elm.icon")) {\r
174                 Evas_Object *radio;\r
175                 if (CST_STR_SHOW_MY_CALLER_ID == list_more_call_setting[parent_item_data->index].str_id) {\r
176                         if (NULL == ugd->rdg_show_my_number) {\r
177                                 ugd->rdg_show_my_number = elm_radio_add(obj);\r
178                                 elm_radio_value_set(ugd->rdg_show_my_number, -1);\r
179                         }\r
180 \r
181                         radio = _cst_create_radio_icon(obj, ugd->rdg_show_my_number,\r
182                                 (int)list_dep2_show_my_number[item_data->index].func, 0,\r
183                                 VCONFKEY_CISSAPPL_SHOW_MY_NUMBER_INT);\r
184                 } else if (CST_STR_ALERTS_ON_CALL == list_more_call_setting[parent_item_data->index].str_id) {\r
185                         if (NULL == ugd->rdg_alerts_on_call) {\r
186                                 ugd->rdg_show_my_number = elm_radio_add(obj);\r
187                                 elm_radio_value_set(ugd->rdg_alerts_on_call, -1);\r
188                         }\r
189 \r
190                         radio = _cst_create_radio_icon(obj, ugd->rdg_alerts_on_call,\r
191                                 (int)list_dep2_alerts_on_call[item_data->index].func, 0,\r
192                                 VCONFKEY_CISSAPPL_ALERT_ON_CALL_INT);\r
193                 } else {\r
194                         DBG("Unknown parent");\r
195                         return NULL;\r
196                 }\r
197                 return radio;\r
198         }\r
199         return NULL;\r
200 }\r
201 \r
202 static void __cst_gl_sel_alerts_on_call(void *data, Evas_Object *obj, void *event_info)\r
203 {\r
204         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);\r
205         ret_if(NULL == data);\r
206         CstGlItemData_t *item_data = (CstGlItemData_t *)data;\r
207         CstUgData_t *ugd = (CstUgData_t *)item_data->ugd;\r
208         ret_if(NULL == ugd);\r
209         _cst_vconf_set_int(VCONFKEY_CISSAPPL_ALERT_ON_CALL_INT,\r
210                 (int)list_dep2_alerts_on_call[item_data->index].func);\r
211         if (ugd->rdg_alerts_on_call) {\r
212                 elm_radio_value_set(ugd->rdg_alerts_on_call,\r
213                         (int)list_dep2_alerts_on_call[item_data->index].func);\r
214                 elm_genlist_item_update(item_data->parent_gl_item);\r
215         }\r
216         return;\r
217 }\r
218 \r
219 static void __cst_gl_con(void *data, Evas_Object *obj, void *event_info)\r
220 {\r
221         ENTER(__cst_gl_con);\r
222         Elm_Object_Item *item = event_info;\r
223         elm_genlist_item_subitems_clear(item);\r
224 }\r
225 \r
226 static void __cst_gl_exp_req(void *data, Evas_Object *obj, void *event_info)\r
227 {\r
228         ENTER(__cst_gl_exp_req);\r
229 \r
230         ret_if(NULL == data);\r
231 \r
232         Elm_Object_Item *item = event_info;\r
233         elm_genlist_item_expanded_set(item, 1);\r
234 }\r
235 \r
236 static void __cst_gl_con_req(void *data, Evas_Object *obj, void *event_info)\r
237 {\r
238         ENTER(__cst_gl_con_req);\r
239         Elm_Object_Item *item = (Elm_Object_Item *)event_info;\r
240         elm_genlist_item_expanded_set(item, 0);\r
241 }\r
242 \r
243 static void __cst_gl_exp(void *data, Evas_Object *obj, void *event_info)\r
244 {\r
245         ENTER(__cst_gl_exp);\r
246         ret_if(NULL == data);\r
247         CstUgData_t *ugd = (CstUgData_t *)data;\r
248         Elm_Object_Item *it = (Elm_Object_Item *)event_info;\r
249         ret_if(NULL == it);\r
250         CstGlItemData_t *parent_item_data1 = (CstGlItemData_t *)elm_object_item_data_get(it);\r
251         Evas_Object *genlist = elm_object_item_widget_get(it);\r
252         ret_if(NULL == parent_item_data1);\r
253         ret_if(NULL == genlist);\r
254 \r
255         CstGlItemData_t *sub_item_data;\r
256 \r
257         int i = 0;\r
258 \r
259         if (CST_STR_SHOW_MY_CALLER_ID == list_more_call_setting[parent_item_data1->index].str_id) {\r
260                 ugd->rdg_show_my_number = NULL;\r
261                 ugd->rdg_show_my_number = elm_radio_add(genlist);\r
262                 elm_radio_value_set(ugd->rdg_show_my_number, -1);\r
263                 for (i = 0; list_dep2_show_my_number[i].style != CST_GL_ITEM_NONE; ++i) {\r
264                         sub_item_data = (CstGlItemData_t *)calloc(1, sizeof(CstGlItemData_t));\r
265                         ret_if(sub_item_data == NULL);\r
266                         sub_item_data->index = i;\r
267                         sub_item_data->ugd = ugd;\r
268                         sub_item_data->parent_gl_item = it;\r
269                         elm_genlist_item_append(genlist, itc_sub_expand,\r
270                                 (void *)sub_item_data, it,\r
271                                 list_dep2_show_my_number[i].flags,\r
272                                 __cst_gl_sel_show_my_number, sub_item_data);\r
273                 }\r
274         } else if (CST_STR_ALERTS_ON_CALL == list_more_call_setting[parent_item_data1->index].str_id) {\r
275                 ugd->rdg_alerts_on_call = NULL;\r
276                 ugd->rdg_alerts_on_call = elm_radio_add(genlist);\r
277                 elm_radio_value_set(ugd->rdg_alerts_on_call, -1);\r
278                 for (i = 0; list_dep2_alerts_on_call[i].style != CST_GL_ITEM_NONE; ++i) {\r
279                         sub_item_data = (CstGlItemData_t *)calloc(1, sizeof(CstGlItemData_t));\r
280                         ret_if(sub_item_data == NULL);\r
281                         sub_item_data->index = i;\r
282                         sub_item_data->ugd = ugd;\r
283                         sub_item_data->parent_gl_item = it;\r
284                         elm_genlist_item_append(genlist, itc_sub_expand,\r
285                                 (void *)sub_item_data, it, list_dep2_alerts_on_call[i].flags,\r
286                                 __cst_gl_sel_alerts_on_call, sub_item_data);\r
287                 }\r
288         }\r
289 }\r
290 \r
291 static void __cst_on_click_expanded(void *data, Evas *evas, Evas_Object *obj, void *event_info)\r
292 {\r
293         ENTER(__cst_on_click_expanded);\r
294         ret_if(NULL == data);\r
295         Elm_Object_Item *item = (Elm_Object_Item *)event_info;\r
296         if (elm_genlist_item_expanded_get(item)) {\r
297                 __cst_gl_con_req(data, obj, event_info);\r
298                 __cst_gl_con(data, obj, event_info);\r
299         } else {\r
300                 __cst_gl_exp_req(data, obj, event_info);\r
301                 __cst_gl_exp(data, obj, event_info);\r
302         }\r
303 }\r
304 \r
305 static void __cst_navifr_updated_cb(void *data, Evas_Object *obj, void *event_info)\r
306 {\r
307         ret_if(NULL == data);\r
308         Elm_Object_Item *item = (Elm_Object_Item *)data;\r
309         elm_genlist_item_expanded_set(item, 0);\r
310         elm_genlist_item_subitems_clear(item);\r
311 }\r
312 \r
313 static void __cst_set_genlist_item_styles_more_cst(void)\r
314 {\r
315         ENTER(__cst_set_genlist_item_styles_more_cst);\r
316         if (!itc_1text)\r
317                 itc_1text = elm_genlist_item_class_new();\r
318         if (!itc_2text_expand)\r
319                 itc_2text_expand = elm_genlist_item_class_new();\r
320         if (!itc_sub_expand)\r
321                 itc_sub_expand = elm_genlist_item_class_new();\r
322         if (!itc_help)\r
323                 itc_help = elm_genlist_item_class_new();\r
324         if (!itc_2text)\r
325                 itc_2text = elm_genlist_item_class_new();\r
326 \r
327         itc_1text->item_style = "dialogue/1text";\r
328         itc_1text->func.text_get = __cst_gl_label_get_more_cst;\r
329         itc_1text->func.content_get = NULL;\r
330         itc_1text->func.state_get = NULL;\r
331         itc_1text->func.del = __cst_gl_del_more_cst;\r
332         itc_2text_expand->item_style = "dialogue/2text.3/expandable";\r
333         itc_2text_expand->func.text_get = __cst_gl_label_get_expandable;\r
334         itc_2text_expand->func.content_get = NULL;\r
335         itc_2text_expand->func.state_get = NULL;\r
336         itc_2text_expand->func.del = __cst_gl_del_more_cst;\r
337 \r
338         itc_help->item_style = "multiline/1text";\r
339         itc_help->func.text_get = __cst_gl_label_get_more_cst;\r
340         itc_help->func.content_get = NULL;\r
341         itc_help->func.state_get = NULL;\r
342         itc_help->func.del = __cst_gl_del_more_cst;\r
343 \r
344         itc_sub_expand->item_style = "dialogue/1text.1icon/expandable2";\r
345         itc_sub_expand->func.text_get = __cst_gl_label_get_sub_exp;\r
346         itc_sub_expand->func.content_get = __cst_gl_icon_get_sub_exp;\r
347         itc_sub_expand->func.state_get = NULL;\r
348         itc_sub_expand->func.del = __cst_gl_del_more_cst;\r
349 \r
350         itc_2text->item_style = "dialogue/2text.3";\r
351         itc_2text->func.text_get = __cst_gl_label_get_more_cst;\r
352         itc_2text->func.content_get = NULL;\r
353         itc_2text->func.state_get = NULL;\r
354         itc_2text->func.del = __cst_gl_del_more_cst;\r
355 }\r
356 \r
357 static Evas_Object *__cst_create_genlist_more_cst(void *data)\r
358 {\r
359         ENTER(__cst_create_genlist_more_cst);\r
360         retv_if(NULL == data, NULL);\r
361         CstUgData_t *ugd = (CstUgData_t *)data;\r
362         CstGlItemData_t *item_data;\r
363         Evas_Object *genlist;\r
364         int i;\r
365 \r
366         genlist = elm_genlist_add(ugd->nf);\r
367         retv_if(NULL == genlist, NULL);\r
368         elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);\r
369         elm_object_style_set(genlist, "dialogue");\r
370 \r
371         _cst_create_genlist_separator(genlist, EINA_FALSE);\r
372         for (i = 0; list_more_call_setting[i].style != CST_GL_ITEM_NONE; ++i) {\r
373                 item_data = (CstGlItemData_t *)calloc(1, sizeof(CstGlItemData_t));\r
374                 retv_if(NULL == item_data, NULL);\r
375 \r
376                 item_data->index = i;\r
377                 item_data->ugd = ugd;\r
378                 if (list_more_call_setting[i].style == CST_GL_ITEM_TEXT) {\r
379                         item_data->gl_item = elm_genlist_item_append(genlist, itc_1text,\r
380                                 (void *)item_data, NULL, list_more_call_setting[i].flags,\r
381                                 __cst_gl_sel_more_cst, ugd);\r
382                 } else if (list_more_call_setting[i].style == CST_GL_ITEM_EXPANDABLE) {\r
383                         item_data->gl_item = elm_genlist_item_append(genlist, itc_2text_expand,\r
384                                 (void *)item_data, NULL, list_more_call_setting[i].flags,\r
385                                 __cst_gl_sel_more_cst, ugd);\r
386                         evas_object_smart_callback_add(ugd->nf, "transition,finished",\r
387                                 __cst_navifr_updated_cb, item_data->gl_item);\r
388                 } else if (list_more_call_setting[i].style == CST_GL_ITEM_HELP_TEXT) {\r
389                         item_data->gl_item = elm_genlist_item_append(genlist, itc_help,\r
390                                 (void *)item_data, NULL, list_more_call_setting[i].flags,\r
391                                 NULL, NULL);\r
392                         elm_genlist_item_select_mode_set(item_data->gl_item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);\r
393                         _cst_create_genlist_underline(genlist);\r
394                 } else if (list_more_call_setting[i].style == CST_GL_ITEM_SUB_TEXT) {\r
395                         item_data->gl_item = elm_genlist_item_append(genlist, itc_2text,
396                                 (void *)item_data, NULL, list_more_call_setting[i].flags,\r
397                                 __cst_gl_sel_more_cst, ugd);\r
398                         ugd->vm_gl_item = item_data->gl_item;
399                 } else {\r
400                         DBG("No style");\r
401                         free(item_data);\r
402                         item_data = NULL;\r
403                         return NULL;\r
404                 }\r
405         }\r
406         _cst_create_genlist_separator_no_line(genlist);\r
407 \r
408         return genlist;\r
409 }\r
410 \r
411 void _cst_on_click_more_call_setting(void *data, Evas *evas, Evas_Object *obj, void *event_info)\r
412 {\r
413         ENTER(_cst_on_click_more_call_setting);\r
414         ret_if(NULL == data);\r
415         CstUgData_t *ugd = (CstUgData_t *)data;\r
416 \r
417         __cst_set_genlist_item_styles_more_cst();\r
418         Evas_Object *genlist = __cst_create_genlist_more_cst(ugd);\r
419 \r
420         elm_naviframe_item_push(ugd->nf, T_(CST_STR_MORE_CALL_SETTINGS),\r
421                 NULL, NULL, genlist, NULL);\r
422 \r
423         LEAVE();\r
424 }\r
425 \r