int ret = -1;
char *default_text = NULL;
char *guide_text = NULL;
+ char *return_key_type = "SEND";
+ char *max_text_length = NULL;
input_keyboard_deinit();
if (ret == APP_CONTROL_ERROR_NONE) {
g_input_keyboard_data.guide_text = guide_text;
}
+ ret = app_control_get_extra_data(app_control, "return_key_type", &return_key_type);
+ if (ret == APP_CONTROL_ERROR_NONE) {
+ g_input_keyboard_data.return_key_type = return_key_type;
+ }
+ ret = app_control_get_extra_data(app_control, "max_text_length", &max_text_length);
+ if (ret == APP_CONTROL_ERROR_NONE) {
+ g_input_keyboard_data.max_text_length = atoi(max_text_length);
+ }
return true;
}
if (g_input_keyboard_data.default_text)
free(g_input_keyboard_data.default_text);
+ if (g_input_keyboard_data.return_key_type)
+ free(g_input_keyboard_data.return_key_type);
+
g_input_keyboard_data.default_text = NULL;
g_input_keyboard_data.guide_text = NULL;
+ g_input_keyboard_data.return_key_type = "SEND";
+ g_input_keyboard_data.max_text_length = KEYBOARD_EDITOR_CHAR_COUNT_MAX;
return;
}
-void btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+void exit_keyboard()
{
app_control_h app_control;
int ret = app_control_create(&app_control);
app_control_set_operation(app_control, APP_CONTROL_OPERATION_DEFAULT);
set_source_caller_app_id(app_control);
free(app_id);
- reply_to_sender_by_callback(getText, "keyboard");
+ reply_to_sender_by_callback(getText, "keyboard", NULL);
ui_app_exit();
+
+}
+
+void btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ exit_keyboard();
}
static Eina_Bool custom_back_cb(void *data, Elm_Object_Item *it)
static void maxlength_cb(void *data, Evas_Object *obj, void *event_info)
{
LOGD("maxlength_cb : size = %d", KEYBOARD_EDITOR_CHAR_COUNT_MAX);
+ char text[512];
+ snprintf(text, sizeof(text), _(MAX_TEXT_LENGTH_REACH), g_input_keyboard_data.max_text_length);
+ show_popup_toast((const char *)text, false);
+}
+
+static void enter_keydown_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ LOGD("enter_keydown_cb");
+ Evas_Object *entry = obj;
+ if (entry == NULL)
+ return;
+
+ Ecore_IMF_Context *imf_context = NULL;
+ imf_context = (Ecore_IMF_Context*)elm_entry_imf_context_get(entry);
+ if (imf_context)
+ ecore_imf_context_input_panel_hide(imf_context);
+
+ elm_object_focus_set(entry, EINA_FALSE);
+
+ exit_keyboard();
}
void create_fullscreen_editor(void *data)
entry = elm_entry_add(box);
static Elm_Entry_Filter_Limit_Size limit_filter_data;
- limit_filter_data.max_char_count = KEYBOARD_EDITOR_CHAR_COUNT_MAX;
+ limit_filter_data.max_char_count = g_input_keyboard_data.max_text_length;
elm_entry_markup_filter_append(entry, elm_entry_filter_limit_size, &limit_filter_data);
evas_object_smart_callback_add(entry, "maxlength,reached", maxlength_cb, data);
elm_entry_cursor_end_set(entry);
evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ if (g_input_keyboard_data.return_key_type && strcmp(g_input_keyboard_data.return_key_type, "DONE") == 0) {
+ elm_entry_input_panel_return_key_type_set(entry, ELM_INPUT_PANEL_RETURN_KEY_TYPE_DONE);
+ evas_object_smart_callback_add(entry, "activated", enter_keydown_cb, ad);
+ }
evas_object_show(entry);
elm_box_pack_end(box, entry);
Evas_Object *btn = elm_button_add(box);
- elm_object_text_set(btn, "SEND");
+ elm_object_text_set(btn, g_input_keyboard_data.return_key_type);
evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, 0.5);
evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_smart_callback_add(btn, "clicked", btn_clicked_cb, NULL);
static Evas_Object *create_multiline_editfield_layout(Evas_Object *parent, void *data)
{
+ App_Data *ad = (App_Data *)data;
Evas_Object *editfield;
editfield = elm_layout_add(parent);
entry = elm_entry_add(editfield);
static Elm_Entry_Filter_Limit_Size limit_filter_data;
- limit_filter_data.max_char_count = KEYBOARD_EDITOR_CHAR_COUNT_MAX;
+ limit_filter_data.max_char_count = g_input_keyboard_data.max_text_length;
elm_entry_markup_filter_append(entry, elm_entry_filter_limit_size, &limit_filter_data);
evas_object_smart_callback_add(entry, "maxlength,reached", maxlength_cb, data);
+ elm_entry_scrollable_set(entry, EINA_TRUE);
+ elm_scroller_policy_set(entry, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
elm_object_part_text_set(entry, "elm.guide", g_input_keyboard_data.guide_text);
+ elm_entry_entry_set(entry, g_input_keyboard_data.default_text);
+ elm_entry_cursor_end_set(entry);
evas_object_smart_callback_add(entry, "focused", editfield_focused_cb, editfield);
evas_object_smart_callback_add(entry, "unfocused", editfield_unfocused_cb, editfield);
+ if (g_input_keyboard_data.return_key_type && strcmp(g_input_keyboard_data.return_key_type, "DONE") == 0) {
+ elm_entry_input_panel_return_key_type_set(entry, ELM_INPUT_PANEL_RETURN_KEY_TYPE_DONE);
+ evas_object_smart_callback_add(entry, "activated", enter_keydown_cb, ad);
+ }
+
+ evas_object_show(entry);
elm_object_part_content_set(editfield, "elm.swallow.content", entry);
return editfield;