#define CALLUI_PART_SWALLOW_KEYPAD "swallow.keypad_region"
#define CALLUI_PART_SWALLOW_KEYPAD_LAYOUT_AREA "swallow.keypad_layout_area"
-#define CALLUI_KEYPAD_ENTRY_FONT "<font='Samsung Sans Num47:style=Light'>%s</>"
-#define CALLUI_KEYPAD_ENTRY_STYLE "DEFAULT='align=center color=#ffffffff font_size=76'"
+#define CALLUI_KEYPAD_ENTRY_STYLE "DEFAULT='font=Tizen:style=Light font_size=76 align=center color=#fafafaff'"
#define CALLUI_KEYPAD_AUTOSPACE_TIMEOUT_SEC 5.0
static void __on_key_down_click_event(void *data, Evas_Object *obj, const char *emission, const char *source);
static void __on_key_up_click_event(void *data, Evas_Object *obj, const char *emission, const char *source);
static Evas_Object *__create_single_line_scrolled_entry(Evas_Object *content);
+static callui_result_e __create_layouts(callui_keypad_h keypad);
static callui_result_e __create_entry(callui_keypad_h keypad);
static void __clear_entry(callui_keypad_h keypad);
static void __hide_keypad(callui_keypad_h keypad, Eina_Bool is_immediately);
callui_app_data_t *ad;
- show_state_change_cd cb_func;
+ keypad_show_state_change_cd cb_func;
void *cb_data;
Ecore_Timer *auto_spacing_timer;
_callui_listeners_coll_t show_status_lc;
+ bool need_insert_autospace;
};
typedef struct _callui_keypad _callui_keypad_t;
+static callui_result_e __create_layouts(callui_keypad_h keypad)
+{
+ keypad->main_layout = _callui_create_layout(_callui_vm_get_main_ly(keypad->ad->view_manager), CALLUI_LY_STYLE_KEYPAD);
+ CALLUI_RETURN_VALUE_IF_FAIL(keypad->main_layout, CALLUI_RESULT_ALLOCATION_FAIL);
+ elm_object_signal_callback_add(keypad->main_layout, "hide_completed", "*", __on_hide_completed, keypad);
+ evas_object_hide(keypad->main_layout);
+
+ keypad->btns_layout = _callui_create_layout(keypad->main_layout, CALLUI_LY_STYLE_KEYPAD_BTNS);
+ CALLUI_RETURN_VALUE_IF_FAIL(keypad->btns_layout, CALLUI_RESULT_ALLOCATION_FAIL);
+ elm_object_mirrored_automatic_set(keypad->btns_layout, EINA_FALSE);
+ elm_object_mirrored_set(keypad->btns_layout, EINA_FALSE);
+ elm_object_part_content_set(keypad->main_layout, CALLUI_PART_SWALLOW_KEYPAD, keypad->btns_layout);
+
+ return CALLUI_RESULT_OK;
+}
+
/**
* @brief Initializes keypad
*
{
keypad->ad = appdata;
- keypad->main_layout = _callui_create_layout(_callui_vm_get_main_ly(appdata->view_manager), CALLUI_LY_STYLE_KEYPAD);
- CALLUI_RETURN_VALUE_IF_FAIL(keypad->main_layout, CALLUI_RESULT_ALLOCATION_FAIL);
-
- elm_object_signal_callback_add(keypad->main_layout, "hide_completed", "*", __on_hide_completed, keypad);
-
- keypad->btns_layout = _callui_create_layout(keypad->main_layout, CALLUI_LY_STYLE_KEYPAD_BTNS);
- CALLUI_RETURN_VALUE_IF_FAIL(keypad->btns_layout, CALLUI_RESULT_ALLOCATION_FAIL);
- elm_object_mirrored_automatic_set(keypad->btns_layout, EINA_FALSE);
- elm_object_mirrored_set(keypad->btns_layout, EINA_FALSE);
-
- elm_object_part_content_set(keypad->main_layout, CALLUI_PART_SWALLOW_KEYPAD, keypad->btns_layout);
+ callui_result_e res = __create_layouts(keypad);
+ CALLUI_RETURN_VALUE_IF_FAIL(res == CALLUI_RESULT_OK, res);
- callui_result_e res = _callui_listeners_coll_init(&keypad->show_status_lc);
+ res = __create_entry(keypad);
CALLUI_RETURN_VALUE_IF_FAIL(res == CALLUI_RESULT_OK, res);
res = __create_gesture_layer(keypad);
CALLUI_RETURN_VALUE_IF_FAIL(res == CALLUI_RESULT_OK, res);
- res = __create_entry(keypad);
+ res = _callui_listeners_coll_init(&keypad->show_status_lc);
CALLUI_RETURN_VALUE_IF_FAIL(res == CALLUI_RESULT_OK, res);
- evas_object_hide(keypad->main_layout);
-
return res;
}
_callui_listeners_coll_deinit(&keypad->show_status_lc);
- if (keypad->main_layout) {
- evas_object_del(keypad->btns_layout);
- }
+ evas_object_del(keypad->main_layout);
}
/**
eext_object_event_callback_del(main_ly, EEXT_CALLBACK_BACK, __back_button_click_cb);
- keypad->main_layout = elm_object_part_content_unset(main_ly,
- CALLUI_PART_SWALLOW_KEYPAD_LAYOUT_AREA);
+ keypad->main_layout = elm_object_part_content_unset(main_ly, CALLUI_PART_SWALLOW_KEYPAD_LAYOUT_AREA);
evas_object_hide(keypad->main_layout);
CALLUI_RETURN_VALUE_IF_FAIL(data, ECORE_CALLBACK_CANCEL);
callui_keypad_h keypad = data;
- if (keypad->entry) {
- elm_entry_entry_append(keypad->entry, " ");
- }
+
+ keypad->need_insert_autospace = true;
+
return ECORE_CALLBACK_CANCEL;
}
CALLUI_RETURN_IF_FAIL(source);
callui_keypad_h keypad = data;
- callui_app_data_t *ad = keypad->ad;
-
- char *entry_dest = NULL;
- char *keypad_source = NULL;
- char *disp_str = NULL;
- if (strcmp(source, "star") == 0) {
+ const char *keypad_source = NULL;
+ if (!strcmp(source, "star")) {
keypad_source = "*";
- } else if (strcmp(source, "sharp") == 0) {
+ } else if (!strcmp(source, "sharp")) {
keypad_source = "#";
} else {
- keypad_source = (char *)source;
+ keypad_source = source;
}
- callui_result_e res = _callui_sdm_start_dtmf(ad->sound_manager, keypad_source[0]);
+ callui_result_e res = _callui_sdm_start_dtmf(keypad->ad->sound_manager, keypad_source[0]);
if (res != CALLUI_RESULT_OK) {
err("_callui_sdm_start_dtmf() failed. res[%d]", res);
return;
}
- const char *text = elm_entry_entry_get(keypad->entry);
- disp_str = elm_entry_markup_to_utf8(text);
+ // TODO: hot fix to enable entry scrolling
+ elm_object_focus_set(keypad->entry, EINA_TRUE);
- if (disp_str == NULL) {
- err("disp_str is null");
- return;
- } else if (strlen(disp_str) == 0) {
- entry_dest = calloc(1, 2);
- if (entry_dest == NULL) {
- err("entry_dest allocation fail");
- free(disp_str);
- return;
- }
- snprintf(entry_dest, 2, "%c", keypad_source[0]);
- } else {
- int buf_size = strlen(disp_str) + 2;
- entry_dest = calloc(1, buf_size);
- if (entry_dest == NULL) {
- err("entry_dest allocation fail");
- free(disp_str);
- return;
- }
- snprintf(entry_dest, buf_size, "%s%c", disp_str, keypad_source[0]);
+ if (keypad->need_insert_autospace) {
+ keypad->need_insert_autospace = false;
+ elm_entry_entry_append(keypad->entry, " ");
}
-
- free(disp_str);
-
- char tmp[NAME_MAX] = { 0 };
- snprintf(tmp, NAME_MAX, CALLUI_KEYPAD_ENTRY_FONT, entry_dest);
-
- elm_object_text_set(keypad->entry, tmp);
-
+ elm_entry_entry_append(keypad->entry, keypad_source);
elm_entry_cursor_end_set(keypad->entry);
-
- if (entry_dest) {
- free(entry_dest);
- entry_dest = NULL;
- }
}
static void __on_key_up_click_event(void *data, Evas_Object *obj, const char *emission, const char *source)
{
CALLUI_RETURN_NULL_IF_FAIL(content);
- Elm_Entry_Filter_Accept_Set digits_filter_data;
-
- Evas_Object *en = elm_entry_add(content);
- CALLUI_RETURN_NULL_IF_FAIL(en);
- elm_entry_editable_set(en, EINA_FALSE);
- elm_entry_scrollable_set(en, EINA_TRUE);
-
- elm_entry_select_all(en);
- elm_scroller_policy_set(en, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
-
- elm_scroller_bounce_set(en, EINA_FALSE, EINA_FALSE);
- elm_entry_line_wrap_set(en, ELM_WRAP_WORD);
- elm_entry_input_panel_enabled_set(en, EINA_FALSE);
- elm_entry_single_line_set(en, EINA_TRUE);
+ Evas_Object *eo = elm_entry_add(content);
+ CALLUI_RETURN_NULL_IF_FAIL(eo);
+ evas_object_size_hint_weight_set(eo, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(eo, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_entry_single_line_set(eo, EINA_TRUE);
+ elm_entry_editable_set(eo, EINA_FALSE);
+ elm_entry_scrollable_set(eo, EINA_TRUE);
+ elm_scroller_bounce_set(eo, EINA_FALSE, EINA_FALSE);
+ elm_entry_line_wrap_set(eo, ELM_WRAP_WORD);
+ elm_entry_input_panel_enabled_set(eo, EINA_FALSE);
+ elm_entry_context_menu_disabled_set(eo, EINA_TRUE);
+ Elm_Entry_Filter_Accept_Set digits_filter_data;
digits_filter_data.accepted = "0123456789+*# ";
digits_filter_data.rejected = NULL;
- elm_entry_markup_filter_append(en, elm_entry_filter_accept_set, &digits_filter_data);
-
- elm_entry_context_menu_disabled_set(en, EINA_TRUE);
- elm_entry_cursor_end_set(en);
- evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_entry_markup_filter_append(eo, elm_entry_filter_accept_set, &digits_filter_data);
- elm_entry_text_style_user_push(en, CALLUI_KEYPAD_ENTRY_STYLE);
+ elm_entry_text_style_user_push(eo, CALLUI_KEYPAD_ENTRY_STYLE);
- evas_object_show(en);
-
- return en;
+ return eo;
}
/**
static callui_result_e __create_entry(callui_keypad_h keypad)
{
keypad->entry = __create_single_line_scrolled_entry(keypad->main_layout);
- if (!keypad->entry) {
- err("Create entry failed");
- return CALLUI_RESULT_ALLOCATION_FAIL;
- }
-
+ CALLUI_RETURN_VALUE_IF_FAIL(keypad->entry, CALLUI_RESULT_ALLOCATION_FAIL);
elm_object_signal_callback_add(keypad->btns_layout, "pad_down", "*", __on_key_down_click_event, keypad);
elm_object_signal_callback_add(keypad->btns_layout, "pad_up", "*", __on_key_up_click_event, keypad);
+ elm_object_part_content_set(keypad->main_layout, CALLUI_PART_SWALLOW_TEXT_AREA, keypad->entry);
__clear_entry(keypad);
- elm_object_part_content_set(keypad->main_layout, CALLUI_PART_SWALLOW_TEXT_AREA, keypad->entry);
-
return CALLUI_RESULT_OK;
}
{
CALLUI_RETURN_IF_FAIL(keypad);
callui_app_data_t *ad = keypad->ad;
- Evas_Object *main_ly = _callui_vm_get_main_ly(ad->view_manager);
__clear_entry(keypad);
+ Evas_Object *main_ly = _callui_vm_get_main_ly(ad->view_manager);
elm_object_part_content_set(main_ly, CALLUI_PART_SWALLOW_KEYPAD_LAYOUT_AREA, keypad->main_layout);
evas_object_show(keypad->main_layout);
}
callui_result_e _callui_keypad_add_show_status_change_cb(callui_keypad_h keypad,
- show_state_change_cd cb_func, void *cb_data)
+ keypad_show_state_change_cd cb_func, void *cb_data)
{
CALLUI_RETURN_VALUE_IF_FAIL(keypad, CALLUI_RESULT_INVALID_PARAM);
CALLUI_RETURN_VALUE_IF_FAIL(cb_func, CALLUI_RESULT_INVALID_PARAM);
}
callui_result_e _callui_keypad_remove_show_status_change_cb(callui_keypad_h keypad,
- show_state_change_cd cb_func, void *cb_data)
+ keypad_show_state_change_cd cb_func, void *cb_data)
{
CALLUI_RETURN_VALUE_IF_FAIL(keypad, CALLUI_RESULT_INVALID_PARAM);
CALLUI_RETURN_VALUE_IF_FAIL(cb_func, CALLUI_RESULT_INVALID_PARAM);