1 #include "efl_assist.h"
2 #include "efl_assist_private.h"
4 static void _editfield_changed_cb(void *data, Evas_Object *obj, void *event_info)
6 if (elm_object_part_content_get(obj, "elm.swallow.clear"))
8 if (elm_object_focus_get(obj))
10 if (elm_entry_is_empty(obj))
11 elm_object_signal_emit(obj, "elm,state,clear,hidden", "");
13 elm_object_signal_emit(obj, "elm,state,clear,visible", "");
18 static void _editfield_focused_cb(void *data, Evas_Object *obj, void *event_info)
20 if (elm_object_part_content_get(obj, "elm.swallow.clear"))
22 if (!elm_entry_is_empty(obj))
23 elm_object_signal_emit(obj, "elm,state,clear,visible", "");
25 elm_object_signal_emit(obj, "elm,state,clear,hidden", "");
27 elm_object_signal_emit(obj, "elm,state,focus,on", "");
30 static void _editfield_unfocused_cb(void *data, Evas_Object *obj, void *event_info)
32 if (elm_object_part_content_get(obj, "elm.swallow.clear"))
33 elm_object_signal_emit(obj, "elm,state,clear,hidden", "");
34 elm_object_signal_emit(obj, "elm,state,focus,off", "");
37 static void _eraser_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
39 elm_entry_entry_set(data, "");
42 static void _editfield_searchbar_changed_cb(void *data, Evas_Object *obj, void *event_info)
44 if (elm_object_part_content_get(obj, "elm.swallow.clear"))
46 if (elm_entry_is_empty(obj))
47 elm_object_signal_emit(obj, "elm,state,clear,hidden", "");
49 elm_object_signal_emit(obj, "elm,state,clear,visible", "");
53 static void _editfield_searchbar_focused_cb(void *data, Evas_Object *obj, void *event_info)
55 elm_object_signal_emit(obj, "elm,state,focus,on", "");
58 static void _editfield_searchbar_unfocused_cb(void *data, Evas_Object *obj, void *event_info)
60 elm_object_signal_emit(obj, "elm,state,focus,off", "");
63 EXPORT_API Evas_Object *
64 ea_editfield_add(Evas_Object *parent, Ea_Editfield_Type type)
66 Evas_Object *entry, *button;
68 entry = elm_entry_add(parent);
70 if (type == EA_EDITFIELD_SINGLELINE)
72 elm_object_style_set(entry, "editfield");
73 elm_entry_single_line_set(entry, EINA_TRUE);
75 else if (type == EA_EDITFIELD_SCROLL_SINGLELINE)
77 elm_object_style_set(entry, "editfield");
78 elm_entry_single_line_set(entry, EINA_TRUE);
79 elm_entry_scrollable_set(entry, EINA_TRUE);
80 elm_object_signal_emit(entry, "elm,state,scroll,enabled", "");
82 else if (type == EA_EDITFIELD_SCROLL_SINGLELINE_PASSWORD)
84 elm_object_style_set(entry, "editfield");
85 elm_entry_single_line_set(entry, EINA_TRUE);
86 elm_entry_password_set(entry, EINA_TRUE);
87 elm_entry_scrollable_set(entry, EINA_TRUE);
88 elm_object_signal_emit(entry, "elm,state,scroll,enabled", "");
90 else if (type == EA_EDITFIELD_SCROLL_MULTILINE)
92 elm_object_style_set(entry, "editfield");
93 elm_entry_scrollable_set(entry, EINA_TRUE);
94 elm_object_signal_emit(entry, "elm,state,scroll,enabled", "");
96 else if (type == EA_EDITFIELD_SEARCHBAR)
98 elm_object_style_set(entry, "editfield/searchbar/default");
99 elm_entry_single_line_set(entry, EINA_TRUE);
100 elm_entry_scrollable_set(entry, EINA_TRUE);
101 elm_object_signal_emit(entry, "elm,state,scroll,enabled", "");
105 elm_object_style_set(entry, "editfield");
108 if (type == EA_EDITFIELD_SEARCHBAR)
110 button = elm_button_add(parent);
111 elm_object_style_set(button, "search_icon");
112 elm_object_focus_allow_set(button, EINA_FALSE);
113 elm_object_part_content_set(entry, "elm.swallow.icon", button);
115 button = elm_button_add(parent);
116 elm_object_style_set(button, "search_clear");
117 elm_object_focus_allow_set(button, EINA_FALSE);
118 elm_object_part_content_set(entry, "elm.swallow.clear", button);
119 evas_object_smart_callback_add(button, "clicked", _eraser_btn_clicked_cb, entry);
121 evas_object_smart_callback_add(entry, "changed", _editfield_searchbar_changed_cb, NULL);
122 evas_object_smart_callback_add(entry, "preedit,changed", _editfield_searchbar_changed_cb, NULL);
123 evas_object_smart_callback_add(entry, "focused", _editfield_searchbar_focused_cb, NULL);
124 evas_object_smart_callback_add(entry, "unfocused", _editfield_searchbar_unfocused_cb, NULL);
128 button = elm_button_add(parent);
129 elm_object_style_set(button, "editfield_clear");
130 elm_object_focus_allow_set(button, EINA_FALSE);
131 elm_object_part_content_set(entry, "elm.swallow.clear", button);
132 evas_object_smart_callback_add(button, "clicked", _eraser_btn_clicked_cb, entry);
134 evas_object_smart_callback_add(entry, "changed", _editfield_changed_cb, NULL);
135 evas_object_smart_callback_add(entry, "preedit,changed", _editfield_changed_cb, NULL);
136 evas_object_smart_callback_add(entry, "focused", _editfield_focused_cb, NULL);
137 evas_object_smart_callback_add(entry, "unfocused", _editfield_unfocused_cb, NULL);