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.
18 #include <appcore-efl.h>
19 #include <Elementary.h>
23 #include "cst-common.h"
24 #include "cst-widget.h"
25 #include "cst-common-string.h"
26 #include "cst-debug.h"
27 #include "cst-reject-msg.h"
28 #include "cst-prefix-dial.h"
29 #include "cst-forwarding.h"
30 #include "cst-barring.h"
32 #include "cst-widget.h"
33 #include "cst-delete-list.h"
34 #include "cst-answering.h"
35 #include "cst-more-call-setting.h"
36 #include "cst-status-tone.h"
37 #include "cst-waiting.h"
39 static Elm_Genlist_Item_Class *itc_seperator = NULL;
40 static Elm_Genlist_Item_Class *itc_seperator_no_line = NULL;
41 static Elm_Genlist_Item_Class *itc_underline = NULL;
42 static Elm_Genlist_Item_Class *itc_1text = NULL;
43 static Elm_Genlist_Item_Class *itc_2text_expand = NULL;
44 static Elm_Genlist_Item_Class *itc_sub_expand = NULL;
45 static Elm_Genlist_Item_Class *itc_help = NULL;
46 static Elm_Genlist_Item_Class *itc_title = NULL;
47 #ifdef _CALL_SET_OPERATOR_DOCOMO
48 static Elm_Genlist_Item_Class *itc_1text_popup = NULL;
49 static Elm_Genlist_Item_Class *itc_1text_1icon = NULL;
50 static Elm_Genlist_Item_Class *itc_2text_1icon_7 = NULL;
53 static void __cst_2btn_popup_cancel_cb(void *data, Evas_Object *obj, void *event_info);
56 _cst_entry_filter_remove_markup(void *data, Evas_Object *entry, char **text)
58 ret_if(text == NULL || *text == NULL);
60 char *utf8_text = NULL;
61 char *convert_text = NULL;
63 DBG("text [%s]", *text);
65 utf8_text = elm_entry_markup_to_utf8(*text);
67 convert_text = elm_entry_utf8_to_markup(utf8_text);
70 *text = strdup(convert_text);
77 /* This callback is for showing(hiding) X marked button. */
78 static void _changed_cb(void *data, Evas_Object *obj, void *event_info)
81 if (elm_object_focus_get(data)) {
82 if (elm_entry_is_empty(obj)) {
84 elm_object_signal_emit(data, "elm,state,eraser,hide", "elm");
87 elm_object_signal_emit(data, "elm,state,eraser,show", "elm");
92 /* Focused callback will show X marked button and hide guidetext. */
93 static void _focused_cb(void *data, Evas_Object *obj, void *event_info)
96 if (!elm_entry_is_empty(obj)) {
98 elm_object_signal_emit(data, "elm,state,eraser,show", "elm");
100 elm_object_signal_emit(data, "elm,state,guidetext,hide", "elm");
103 /* Unfocused callback will show guidetext and hide X marked button. */
104 static void _unfocused_cb(void *data, Evas_Object *obj, void *event_info)
107 if (elm_entry_is_empty(obj)) {
109 elm_object_signal_emit(data, "elm,state,guidetext,show", "elm");
111 elm_object_signal_emit(data, "elm,state,eraser,hide", "elm");
114 /* When X marked button clicked, make string as empty. */
115 static void _eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
118 elm_entry_entry_set(data, "");
121 Evas_Object *_cst_create_progressbar(Evas_Object *parent)
123 ENTER(_cst_create_progressbar);
124 retv_if(NULL == parent, NULL);
125 Evas_Object *progressbar;
126 progressbar = elm_progressbar_add(parent);
127 elm_object_style_set(progressbar, "list_process");
128 evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, 0.5);
129 evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
130 evas_object_show(progressbar);
131 elm_progressbar_pulse(progressbar, EINA_TRUE);
136 static void __cst_get_error_string(int error, char *msg)
139 case CST_ERROR_INCORRECT_OPERATION:
140 snprintf(msg, 100, "%s", T_(CST_STR_INCORRECT_OPERATION));
142 case CST_ERROR_INVALID_PASSWORD:
143 snprintf(msg, 100, "%s", T_(CST_STR_INVALID_PASSWORD));
145 case CST_ERROR_PASSWORD_BLOCKED:
146 snprintf(msg, 100, "%s", T_(CST_STR_PASSWORD_BLOCKED));
148 case CST_ERROR_SERVICE_UNAVAILABLE:
149 snprintf(msg, 100, "%s", T_(CST_STR_SERVICE_UNAVAILABLE));
151 case CST_ERROR_UNKNOWN:
152 snprintf(msg, 100, "%s", T_(CST_STR_REJECTED_BY_NETWORK));
154 case CST_ERROR_ENTER_NUMBER:
155 snprintf(msg, 100, "%s", T_(CST_STR_ENTER_NUMBER));
157 case CST_ERROR_ENTER_MESSAGE:
158 snprintf(msg, 100, "%s", T_(CST_STR_ENTER_MESSAGE));
160 case CST_ERROR_SELECT_VALID_ENTRY:
161 snprintf(msg, 100, "%s", T_(CST_STR_SELECT_VALID_ENTRY));
163 case CST_ERROR_REJECTED_BY_NETWORK:
164 snprintf(msg, 100, "%s", T_(CST_STR_REJECTED_BY_NETWORK));
166 case CST_ERROR_DUPLICATE_MESSAGE:
167 snprintf(msg, 100, "%s", T_(CST_STR_ENTER_DUPLICATE_MESSAGE));
169 case CST_ERROR_INSERT_SIM_CARD:
170 snprintf(msg, 100, "%s", T_(CST_STR_INSERT_SIM_CARD));
172 case CST_ERROR_CHANGE_FLIGHT_MODE:
173 snprintf(msg, 100, "%s", T_(CST_STR_CHNAGE_FLIGHT_MODE_MESSAGE));
175 case CST_ERROR_AUL_LAUNCH_ERROR:
176 snprintf(msg, 100, "%s", T_(CST_STR_APP_NOT_INSTALLED));
179 snprintf(msg, 100, "%s", T_(CST_STR_UNKNOWN_OPERATION));
184 Evas_Object *_cst_create_error_popup(Evas_Object *parent, int error)
186 retv_if(error < 0, NULL);
189 __cst_get_error_string(error, error_msg);
190 DBG("Error message=%s", error_msg);
193 popup = elm_popup_add(parent);
194 elm_popup_timeout_set(popup, 1.5);
195 elm_object_text_set(popup, error_msg);
196 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
201 Evas_Object *_cst_create_duplicate_msg_popup(Evas_Object *parent, const char *string)
203 retv_if(string == NULL, NULL);
205 char error_msg[500] = {0, };
206 snprintf(error_msg, sizeof(error_msg), T_(CST_STR_ALREADY_IN_USE), string);
207 DBG("Error message=%s", error_msg);
210 popup = elm_popup_add(parent);
211 elm_popup_timeout_set(popup, 1.5);
212 elm_object_text_set(popup, error_msg);
213 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
218 static void __cst_2btn_popup_ok_cb(void *data, Evas_Object *obj, void *event_info)
220 ret_if(data == NULL);
221 CstGlItemData_t *item_data = (CstGlItemData_t *)data;
222 CstUgData_t *ugd = (CstUgData_t *)item_data->ugd;
224 switch (item_data->str_id) {
225 case CST_STR_UNABLE_TO_TURN_OFF_PROXIMITY:
226 _cst_vconf_set_bool(VCONFKEY_CISSAPPL_PROXIMITY_SENSOR_BOOL, EINA_FALSE);
227 _cst_vconf_set_bool(VCONFKEY_CISSAPPL_POWER_KEY_ENDS_CALL_BOOL, EINA_FALSE);
229 case CST_STR_UNABLE_TO_SET_POWER_KEY_END_CALL:
230 _cst_vconf_set_bool(VCONFKEY_CISSAPPL_POWER_KEY_ENDS_CALL_BOOL, EINA_TRUE);
231 _cst_vconf_set_bool(VCONFKEY_CISSAPPL_PROXIMITY_SENSOR_BOOL, EINA_TRUE);
234 DBG("__cst_2btn_popup_response_cb() error");
237 elm_genlist_item_update(item_data->gl_item);
238 evas_object_del(ugd->popup);
242 static void __cst_2btn_popup_cancel_cb(void *data, Evas_Object *obj, void *event_info)
244 ret_if(data == NULL);
245 CstGlItemData_t *item_data = (CstGlItemData_t *)data;
246 CstUgData_t *ugd = (CstUgData_t *)item_data->ugd;
249 evas_object_del(ugd->popup);
254 Evas_Object *_cst_create_2btn_popup(Evas_Object *parent, CstGlItemData_t *item_data)
256 retv_if((parent == NULL) || (item_data == NULL), NULL);
258 Evas_Object *popup, *btn1, *btn2;
259 popup = elm_popup_add(parent);
260 elm_object_text_set(popup, T_(item_data->str_id));
261 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
263 btn1 = elm_button_add(popup);
264 elm_object_text_set(btn1, T_(CST_STR_OK));
265 elm_object_part_content_set(popup, "button1", btn1);
266 evas_object_smart_callback_add(btn1, "clicked", __cst_2btn_popup_ok_cb, (void *)item_data);
268 btn2 = elm_button_add(popup);
269 elm_object_text_set(btn2, T_(CST_STR_POP_CANCEL));
270 elm_object_part_content_set(popup, "button2", btn2);
271 evas_object_smart_callback_add(btn2, "clicked", __cst_2btn_popup_cancel_cb, (void *)item_data);
276 Evas_Object *_cst_get_navifr_prev_btn(Evas_Object *nf)
278 ENTER(_cst_get_navifr_prev_btn);
279 Elm_Object_Item *top_it = elm_naviframe_top_item_get(nf);
280 retv_if(top_it == NULL, NULL);
281 Evas_Object *btn = elm_object_item_part_content_get(top_it, "prev_btn");
282 retv_if(btn == NULL, NULL);
287 static Evas_Object *_cst_create_toolbar_btn(Evas_Object *parent, const char *text, Evas_Smart_Cb func, void *data)
289 retv_if(NULL == parent, NULL);
290 Evas_Object *btn = elm_button_add(parent);
291 elm_object_style_set(btn, "naviframe/toolbar/default");
292 elm_object_text_set(btn, text);
293 evas_object_smart_callback_add(btn, "clicked", func, data);
294 evas_object_show(btn);
298 void _cst_create_navi_control_bar(Evas_Object *parent,
299 char *label1, const char *icon1, Evas_Smart_Cb cb1,
300 char *label2, const char *icon2, Evas_Smart_Cb cb2,
301 void *data, Elm_Object_Item *navi_it,
302 Evas_Object **c_item)
304 ENTER(_cst_create_navi_control_bar);
305 ret_if(NULL == parent);
307 ret_if(label1 == NULL);
310 elm_object_item_part_content_set(navi_it, "toolbar_button1", NULL);
311 c_item[0] = _cst_create_toolbar_btn(parent, label1, cb1, data);
312 elm_object_item_part_content_set(navi_it, "toolbar_button1", c_item[0]);
316 elm_object_item_part_content_set(navi_it, "toolbar_button2", NULL);
317 c_item[1] = _cst_create_toolbar_btn(parent, label2, cb2, data);
318 elm_object_item_part_content_set(navi_it, "toolbar_button2", c_item[1]);
322 #ifdef _CALL_SET_OLD_SEPERATOR
323 static void __cst_gl_del_seperator(void *data, Evas_Object *obj)
325 ret_if(data == NULL);
326 CstGlItemData_t *item_data = (CstGlItemData_t *)data;
334 void _cst_create_genlist_separator(Evas_Object *genlist, Eina_Bool need_item_data)
336 #ifdef _CALL_SET_OLD_SEPERATOR
337 Elm_Object_Item *item = NULL;
338 Elm_Genlist_Item_Class *itc_seperator = _cst_get_genlist_item_class(CST_ITC_SEPERATOR);
340 if (need_item_data) {
341 CstGlItemData_t *item_data;
342 itc_seperator->func.del = __cst_gl_del_seperator;
343 item_data = calloc(1, sizeof(CstGlItemData_t));
344 ret_if(NULL == item_data);
345 item_data->index = -1;
346 item = elm_genlist_item_append(genlist, itc_seperator, item_data, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
347 item_data->gl_item = item;
349 itc_seperator->func.del = NULL;
350 item = elm_genlist_item_append(genlist, itc_seperator, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
352 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
356 void _cst_create_genlist_separator_no_line(Evas_Object *genlist)
358 #ifdef _CALL_SET_OLD_SEPERATOR
359 ret_if(NULL == genlist);
360 Elm_Object_Item *item = NULL;
361 Elm_Genlist_Item_Class *itc_seperator_no_line = _cst_get_genlist_item_class(CST_ITC_SEPERATOR_NO_LINE);
363 item = elm_genlist_item_append(genlist, itc_seperator_no_line, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
364 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
368 void _cst_create_genlist_underline(Evas_Object *genlist)
370 #ifdef _CALL_SET_OLD_SEPERATOR
371 ret_if(NULL == genlist);
372 Elm_Object_Item *item = NULL;
373 Elm_Genlist_Item_Class *itc_underline = _cst_get_genlist_item_class(CST_ITC_UNDERLINE);
375 item = elm_genlist_item_append(genlist, itc_underline, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
376 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
380 Eina_Bool _cst_hide_selectinfo_cb(void *data)
382 ENTER(_cst_hide_selectinfo_cb);
383 retv_if(data == NULL, ECORE_CALLBACK_CANCEL);
385 CstUgData_t *ugd = (CstUgData_t *)data;
387 if (ugd->selectinfo != NULL) {
388 evas_object_hide(ugd->selectinfo);
389 evas_object_del(ugd->selectinfo);
391 ugd->selectinfo_layout = NULL;
392 ugd->select_backup = NULL;
393 ugd->selectinfo = NULL;
395 return ECORE_CALLBACK_CANCEL;
398 void _cst_create_selectinfo(CstUgData_t *ugd, Evas_Object *layout, const char *label)
400 ENTER(_cst_create_selectinfo);
403 if (!ugd->selectinfo) {
404 ugd->select_backup = layout;
405 ugd->selectinfo = elm_notify_add(ugd->select_backup);
406 elm_notify_align_set(ugd->selectinfo, ELM_NOTIFY_ALIGN_FILL, 1.0);
408 ugd->selectinfo_layout = elm_layout_add(ugd->select_backup);
410 elm_layout_theme_set(ugd->selectinfo_layout,
411 "standard", "selectioninfo", "center_text");
413 elm_object_content_set(ugd->selectinfo, ugd->selectinfo_layout);
417 evas_object_hide(ugd->selectinfo);
421 DBG("Input label : %s", label);
422 edje_object_part_text_set(_EDJ(ugd->selectinfo_layout), "elm.text", label);
424 evas_object_show(ugd->selectinfo);
427 void _cst_del_selectinfo(CstUgData_t *ugd)
431 if (ugd->selectinfo_layout) {
432 evas_object_del(ugd->selectinfo_layout);
434 if (ugd->selectinfo) {
435 evas_object_del(ugd->selectinfo);
438 ugd->selectinfo_layout = NULL;
439 ugd->selectinfo = NULL;
442 Evas_Object *_cst_create_onoff_button(Evas_Object *obj,
443 int state_value, Evas_Smart_Cb cb_func, void *cb_data)
445 retv_if(NULL == obj, NULL);
447 Evas_Object *icon = elm_check_add(obj);
448 elm_object_style_set(icon, "on&off");
449 elm_check_state_set(icon, state_value);
451 evas_object_smart_callback_add(icon, "changed",
454 evas_object_propagate_events_set(icon, EINA_FALSE);
459 Evas_Object *_cst_create_radio_icon(Evas_Object *obj,
460 Evas_Object *rdg, int value, int offset, const char *vconf_key)
462 retv_if(NULL == obj, NULL);
465 Evas_Object *radio = elm_radio_add(obj);
466 elm_radio_state_value_set(radio, value);
467 elm_radio_group_add(radio, rdg);
468 if (vconf_key == NULL) {
469 elm_radio_value_set(rdg, offset);
471 _cst_vconf_get_int(vconf_key, &rd_value);
472 elm_radio_value_set(rdg, (rd_value + offset));
478 Evas_Object *_cst_create_title_btn(Evas_Object *parent,
479 const char *text, Evas_Smart_Cb func, void *data)
481 retv_if(NULL == parent, NULL);
483 Evas_Object *btn = elm_button_add(parent);
487 if (strcmp(text,(char *)T_(CST_STR_CANCEL)) == 0)
488 elm_object_style_set(btn, "naviframe/back_btn/default");
490 Evas_Object *ic = NULL;
491 elm_object_style_set(btn, "naviframe/title_icon");
492 ic = elm_icon_add(parent);
493 if (strcmp(text,(char *)T_(CST_STR_SAVE)) == 0) {
494 elm_icon_file_set(ic, CST_TITLE_BTN_ICON_PLUS, NULL);
496 elm_icon_file_set(ic, CST_TITLE_BTN_ICON_EDIT, NULL);
498 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1 , 1);
499 elm_icon_resizable_set(ic, EINA_TRUE, EINA_TRUE);
500 elm_object_part_content_set(btn, "icon", ic);
502 evas_object_smart_callback_add(btn, "clicked", func, data);
506 static void __cst_trans_finished(void *data, Evas_Object *obj, void *event_info)
509 elm_naviframe_prev_btn_auto_pushed_set(obj, EINA_TRUE);
510 evas_object_smart_callback_del(obj, "transition,finished", __cst_trans_finished);
513 void _cst_remove_naviframe(Evas_Object *nf)
516 elm_naviframe_prev_btn_auto_pushed_set(nf, EINA_FALSE);
517 evas_object_smart_callback_add(nf, "transition,finished",
518 __cst_trans_finished, NULL);
521 Evas_Object *_cst_create_ime_editfield(CstUgData_t *ugd,
522 Evas_Object *parent, CstImeType_t ime_type, char *input_string)
524 retv_if((NULL == ugd || NULL == parent), NULL);
526 Ecore_IMF_Input_Panel_Layout panel_layout;
527 Evas_Object *layout = elm_layout_add(parent);
528 Elm_Entry_Filter_Limit_Size limit_filter_data;
529 Elm_Entry_Filter_Accept_Set digits_filter_data;
530 Ecore_IMF_Context *imf_context;
531 void (*input_panel_cb)() = NULL;
532 void (*entry_changed_cb)() = NULL;
533 Eina_Bool ret = EINA_FALSE;
534 #ifdef _CALL_SET_AUTO_AREA_CODE_SUPPORT
536 #endif /* _CALL_SET_AUTO_AREA_CODE_SUPPORT */
538 ret = elm_layout_file_set(layout, EDJ_NAME, CST_ELM_lAYOUT_EDITFIELD_CALLSETTING);
539 if (ret == EINA_FALSE) {
540 DBG("elm_layout_file_set() failed");
541 evas_object_del(layout);
545 ugd->dg_entry = elm_entry_add(layout);
546 elm_object_part_content_set(layout, "elm.swallow.content", ugd->dg_entry);
548 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, 0.0);
549 evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, 0.0);
551 evas_object_size_hint_weight_set(ugd->dg_entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
552 evas_object_size_hint_align_set(ugd->dg_entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
554 evas_object_smart_callback_add(ugd->dg_entry, "changed", _changed_cb, layout);
555 evas_object_smart_callback_add(ugd->dg_entry, "preedit,changed", _changed_cb, layout);
556 evas_object_smart_callback_add(ugd->dg_entry, "focused", _focused_cb, layout);
557 evas_object_smart_callback_add(ugd->dg_entry, "unfocused", _unfocused_cb, layout);
558 elm_object_signal_callback_add(layout, "elm,eraser,clicked", "elm", _eraser_clicked_cb, ugd->dg_entry);
561 #ifdef _CALL_SET_AUTO_AREA_CODE_SUPPORT
562 case CST_IME_PREFIX_DIAL:
563 elm_entry_single_line_set(ugd->dg_entry, EINA_TRUE);
564 elm_entry_scrollable_set(ugd->dg_entry, EINA_TRUE);
565 elm_object_part_text_set(layout, "elm.text", T_(CST_STR_ENTER_NUMBER));
566 panel_layout = ECORE_IMF_INPUT_PANEL_LAYOUT_PHONENUMBER;
567 elm_entry_input_panel_layout_set(ugd->dg_entry, panel_layout);
568 limit_filter_data.max_char_count = 0;
569 limit_filter_data.max_byte_count = CST_MAX_PREFIX_NUMBER_LEN;
570 digits_filter_data.accepted = "0123456789+*#";
571 digits_filter_data.rejected = NULL;
572 elm_entry_markup_filter_append(ugd->dg_entry,
573 elm_entry_filter_accept_set, &digits_filter_data);
574 _cst_vconf_get_bool(VCONFKEY_CISSAPPL_PREFIX_DIAL_BOOL, &value);
575 input_panel_cb = _cst_prefix_dialling_input_panel_event_callback;
576 entry_changed_cb = _cst_call_prefix_dialling_entry_changed_cb;
578 #endif /* _CALL_SET_AUTO_AREA_CODE_SUPPORT */
580 case CST_IME_REJECT_MSG:
581 elm_object_part_text_set(layout, "elm.text", T_(CST_STR_ENTER_MESSAGE));
582 panel_layout = ECORE_IMF_INPUT_PANEL_LAYOUT_NORMAL;
583 elm_entry_input_panel_layout_set(ugd->dg_entry, panel_layout);
584 limit_filter_data.max_char_count = 0;
585 limit_filter_data.max_byte_count = CST_MAX_ITEM_TEXT_BUFFER_LEN - 1;
586 elm_entry_markup_filter_append(ugd->dg_entry, _cst_entry_filter_remove_markup, ugd);
587 input_panel_cb = _cst_reject_msg_input_panel_event_callback;
588 entry_changed_cb = _cst_reject_msg_changed_editfield_cb;
590 case CST_IME_CALL_FORWARD:
591 elm_entry_single_line_set(ugd->dg_entry, EINA_TRUE);
592 elm_entry_scrollable_set(ugd->dg_entry, EINA_TRUE);
593 elm_object_part_text_set(layout, "elm.text", T_(CST_STR_ENTER_NUMBER));
594 panel_layout = ECORE_IMF_INPUT_PANEL_LAYOUT_PHONENUMBER;
595 elm_entry_input_panel_layout_set(ugd->dg_entry, panel_layout);
596 limit_filter_data.max_char_count = 0;
597 limit_filter_data.max_byte_count = CST_MAX_PHONE_NUMBER_LEN;
598 digits_filter_data.accepted = "0123456789+*#";
599 digits_filter_data.rejected = NULL;
600 elm_entry_markup_filter_append(ugd->dg_entry,
601 elm_entry_filter_accept_set, &digits_filter_data);
602 input_panel_cb = _cst_call_forwarding_input_panel_event_callback;
603 entry_changed_cb = _cst_call_forward_entry_changed_cb;
606 #ifdef _CALL_SET_BARRING_SUPPORT
607 case CST_IME_CALL_BAR:
608 elm_entry_single_line_set(ugd->dg_entry, EINA_TRUE);
609 elm_entry_scrollable_set(ugd->dg_entry, EINA_TRUE);
610 elm_object_part_text_set(layout, "elm.text", T_(CST_STR_ENTER_PASSWORD));
611 panel_layout = ECORE_IMF_INPUT_PANEL_LAYOUT_NUMBERONLY;
612 elm_entry_input_panel_layout_set(ugd->dg_entry, panel_layout);
613 elm_entry_password_set(ugd->dg_entry, EINA_TRUE);
614 limit_filter_data.max_char_count = 0;
615 limit_filter_data.max_byte_count = CST_MAX_PASSWORD_LEN;
616 input_panel_cb = _cst_call_barring_input_panel_event_callback;
617 entry_changed_cb = _cst_call_barring_entry_changed_cb;
619 #endif /* _CALL_SET_BARRING_SUPPORT */
622 ERR("Invalid ime type.");
626 elm_entry_markup_filter_append(ugd->dg_entry,
627 elm_entry_filter_limit_size, &limit_filter_data);
629 elm_entry_cnp_mode_set(ugd->dg_entry, ELM_CNP_MODE_PLAINTEXT);
631 if (input_string != NULL) {
632 elm_entry_entry_set(ugd->dg_entry, input_string);
635 elm_entry_cursor_end_set(ugd->dg_entry);
637 imf_context = elm_entry_imf_context_get(ugd->dg_entry);
639 DBG("ugd->entry = 0x%x, imf_context = 0x%x", ugd->dg_entry, imf_context);
642 ecore_imf_context_input_panel_event_callback_add (imf_context, ECORE_IMF_INPUT_PANEL_STATE_EVENT, input_panel_cb, ugd);
643 #ifdef _CALL_SET_AUTO_AREA_CODE_SUPPORT
644 if (ime_type == CST_IME_PREFIX_DIAL) {
645 if (0 > ugd->genlist_editfield_initialized) {
646 ecore_imf_context_input_panel_enabled_set(imf_context, EINA_FALSE);
647 ugd->genlist_editfield_initialized++;
649 ecore_imf_context_input_panel_enabled_set(imf_context, EINA_TRUE);
655 if (NULL != entry_changed_cb) {
656 DBG("entry_changed_cb = 0x%x", entry_changed_cb);
657 evas_object_smart_callback_add(ugd->dg_entry, "changed", entry_changed_cb, ugd);
658 evas_object_smart_callback_add(ugd->dg_entry, "preedit,changed", entry_changed_cb, ugd);
661 evas_object_show(ugd->dg_entry);
663 elm_object_focus_set(ugd->dg_entry, EINA_TRUE);
668 Evas_Object *_cst_create_ime_btn_layout(Evas_Object *parent,
669 Evas_Object *ef, Evas_Smart_Cb cb, void *cb_data)
671 retv_if((NULL == ef || NULL == parent), NULL);
673 Evas_Object *ly = NULL;
674 Evas_Object *btn = NULL;
675 Evas_Object *icon = NULL;
676 Eina_Bool ret = EINA_FALSE;
678 ly = elm_layout_add(parent);
679 retv_if(NULL == ly, NULL);
681 ret = elm_layout_file_set(ly, EDJ_NAME, "dialoguegroup/contact");
682 if (ret == EINA_FALSE) {
683 DBG("elm_layout_file_set() failed");
688 evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
689 evas_object_show(ly);
691 elm_object_part_content_set(ly, "editfield/sw", ef);
693 btn = elm_button_add(ly);
695 DBG("elm_button_add() failed");
700 icon = elm_icon_add(ly);
702 DBG("elm_icon_add() failed");
704 evas_object_del(btn);
708 elm_icon_file_set(icon, CST_CTRL_ICON_CONTACTS, NULL);
709 evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
710 elm_icon_resizable_set(icon, EINA_TRUE, EINA_TRUE);
711 elm_object_part_content_set(btn, "icon", icon);
712 elm_object_part_content_set(ly, "button/sw", btn);
713 elm_object_focus_set(ef, EINA_TRUE);
714 evas_object_smart_callback_add(btn, "clicked",
720 void _cst_create_all_genlist_item_class(void)
722 itc_seperator = elm_genlist_item_class_new();
723 itc_seperator->item_style = "dialogue/separator";
724 itc_seperator->func.text_get = NULL;
725 itc_seperator->func.content_get = NULL;
726 itc_seperator->func.state_get = NULL;
727 itc_seperator->func.del = NULL;
729 itc_seperator_no_line = elm_genlist_item_class_new();
730 itc_seperator_no_line->item_style = "dialogue/separator/end";
731 itc_seperator_no_line->func.text_get = NULL;
732 itc_seperator_no_line->func.content_get = NULL;
733 itc_seperator_no_line->func.state_get = NULL;
734 itc_seperator_no_line->func.del = NULL;
736 itc_underline = elm_genlist_item_class_new();
737 itc_underline->item_style = "dialogue/separator/1/with_line";
738 itc_underline->func.text_get = NULL;
739 itc_underline->func.content_get = NULL;
740 itc_underline->func.state_get = NULL;
741 itc_underline->func.del = NULL;
743 itc_1text = elm_genlist_item_class_new();
744 itc_1text->item_style = "dialogue/1text";
745 itc_1text->func.text_get = NULL;
746 itc_1text->func.content_get = NULL;
747 itc_1text->func.state_get = NULL;
748 itc_1text->func.del = NULL;
750 itc_2text_expand = elm_genlist_item_class_new();
751 itc_2text_expand->item_style = "dialogue/2text.3/expandable";
752 itc_2text_expand->func.text_get = NULL;
753 itc_2text_expand->func.content_get = NULL;
754 itc_2text_expand->func.state_get = NULL;
755 itc_2text_expand->func.del = NULL;
757 itc_sub_expand = elm_genlist_item_class_new();
758 itc_sub_expand->item_style = "dialogue/1text.1icon/expandable2";
759 itc_sub_expand->func.text_get = NULL;
760 itc_sub_expand->func.content_get = NULL;
761 itc_sub_expand->func.state_get = NULL;
762 itc_sub_expand->func.del = NULL;
764 itc_help = elm_genlist_item_class_new();
765 itc_help->item_style = "multiline/1text";
766 itc_help->func.text_get = NULL;
767 itc_help->func.content_get = NULL;
768 itc_help->func.state_get = NULL;
769 itc_help->func.del = NULL;
771 itc_title = elm_genlist_item_class_new();
772 itc_title->item_style = "dialogue/grouptitle";
773 itc_title->func.text_get = NULL;
774 itc_title->func.content_get = NULL;
775 itc_title->func.state_get = NULL;
776 itc_title->func.del = NULL;
780 void _cst_destroy_all_genlist_item_class(void)
783 elm_genlist_item_class_free(itc_seperator);
784 itc_seperator = NULL;
786 if (itc_seperator_no_line) {
787 elm_genlist_item_class_free(itc_seperator_no_line);
788 itc_seperator_no_line = NULL;
791 elm_genlist_item_class_free(itc_underline);
792 itc_underline = NULL;
795 elm_genlist_item_class_free(itc_1text);
798 if (itc_2text_expand) {
799 elm_genlist_item_class_free(itc_2text_expand);
800 itc_2text_expand = NULL;
802 if (itc_sub_expand) {
803 elm_genlist_item_class_free(itc_sub_expand);
804 itc_sub_expand = NULL;
807 elm_genlist_item_class_free(itc_help);
811 elm_genlist_item_class_free(itc_title);
816 Elm_Genlist_Item_Class *_cst_get_genlist_item_class(cst_genlist_item_class item)
819 case CST_ITC_SEPERATOR:
820 return itc_seperator;
821 case CST_ITC_SEPERATOR_NO_LINE:
822 return itc_seperator_no_line;
823 case CST_ITC_UNDERLINE:
824 return itc_underline;
827 case CST_ITC_2TEXT_EXPAND:
828 return itc_2text_expand;
829 case CST_ITC_SUB_EXPAND:
830 return itc_sub_expand;
836 DBG("invalid item class (%d)", item);
841 void _cst_set_function_genlist_item_class(cst_genlist_item_class item, Elm_Gen_Item_Text_Get_Cb text_get_fn,
842 Elm_Gen_Item_Content_Get_Cb content_get_fn, Elm_Gen_Item_State_Get_Cb state_get_fn, Elm_Gen_Item_Del_Cb del_fn)
844 Elm_Genlist_Item_Class *itc = NULL;
846 case CST_ITC_SEPERATOR:
849 case CST_ITC_SEPERATOR_NO_LINE:
850 itc = itc_seperator_no_line;
852 case CST_ITC_UNDERLINE:
858 case CST_ITC_2TEXT_EXPAND:
859 itc = itc_2text_expand;
861 case CST_ITC_SUB_EXPAND:
862 itc = itc_sub_expand;
871 DBG("invalid item class (%d)", item);
875 itc->func.text_get = text_get_fn;
876 itc->func.content_get = content_get_fn;
877 itc->func.state_get = state_get_fn;
878 itc->func.del = del_fn;
881 void _cst_destroy_all_items(CstUgData_t *ugd)
885 _cst_destroy_answering_call();
886 _cst_destroy_delete_list();
887 _cst_destroy_call_forwarding();
888 _cst_destroy_more_call_setting();
889 _cst_destroy_reject_message(ugd);
890 _cst_destroy_call_status_tone();
891 _cst_destroy_call_waiting();
892 #ifdef _CALL_SET_BARRING_SUPPORT
893 _cst_destroy_call_barring();
894 #endif /* _CALL_SET_BARRING_SUPPORT */
895 #ifdef _CALL_SET_AUTO_AREA_CODE_SUPPORT
896 _cst_destroy_prefix_dialling();
897 #endif /* _CALL_SET_AUTO_AREA_CODE_SUPPORT */