rimmed pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=ebbf24be01e55088fdc38a822a6aa4504f08a249
commit ebbf24be01e55088fdc38a822a6aa4504f08a249 Author: Vyacheslav Reutskiy <v.reuts...@samsung.com> Date: Mon Jul 20 15:09:14 2015 +0300 Item dialog: replace the ewe_entry to elm_entry Change-Id: Iea9421f1d0b6b8fcc988c6b4b7da5eba24dc1304 --- src/bin/ui/dialogs/item_dialog.c | 62 +++++++++++++++++++++++++--------------- 1 file changed, 39 insertions(+), 23 deletions(-) diff --git a/src/bin/ui/dialogs/item_dialog.c b/src/bin/ui/dialogs/item_dialog.c index a07376c..4343097 100644 --- a/src/bin/ui/dialogs/item_dialog.c +++ b/src/bin/ui/dialogs/item_dialog.c @@ -16,13 +16,14 @@ * You should have received a copy of the GNU Lesser General Public License * along with this program; If not, see www.gnu.org/licenses/lgpl.html. */ +#define EO_BETA_API +#define EFL_BETA_API_SUPPORT +#define EFL_EO_API_SUPPORT #include "item_dialog.h" -static Elm_Entry_Filter_Accept_Set accept_name = { - .accepted = NULL, - .rejected = BANNED_SYMBOLS -}; +static Evas_Object *entry, *combobox, *btn_add; +static Elm_Validator_Regexp *name_validator = NULL; static void _job_popup_close(void *data) @@ -30,11 +31,15 @@ _job_popup_close(void *data) App_Data *ap = (App_Data *)data; assert(ap != NULL); + assert(name_validator != NULL); Evas_Object *markup = elm_object_content_get(ap->popup); Evas_Object *proxy_preview = elm_object_part_content_unset(markup, "preview.swallow"); Evas_Object *group_preview = elm_object_part_content_unset(markup, "origin.swallow"); + elm_validator_regexp_free(name_validator); + name_validator = NULL; + eina_file_map_free(ap->project->mmap_file, group_preview); evas_object_del(group_preview); evas_object_del(proxy_preview); @@ -53,8 +58,6 @@ _on_button_add_clicked(void *data, assert(ap != NULL); - Evas_Object *entry = evas_object_data_get(ap->popup, "ENTRY"); - Evas_Object *combobox = evas_object_data_get(ap->popup, "COMBOBOX"); Part *part = evas_object_data_get(ap->popup, "PART"); assert(entry != NULL); @@ -149,19 +152,32 @@ _on_item_source_change(void *data, return; } +static void +_validation(void *data __UNUSED__, + Evas_Object *obj __UNUSED__, + void *event_info __UNUSED__) +{ + if ((elm_validator_regexp_status_get(name_validator) != ELM_REG_NOERROR) || + (ewe_combobox_select_item_get(combobox)->index == 0)) + elm_object_disabled_set(btn_add, true); + else + elm_object_disabled_set(btn_add, false); +} + Evas_Object * item_dialog_add(App_Data *ap, Part *part) { Evas_Object *box, *item, *button; Eina_List *collections = NULL, *l = NULL; Eina_Stringshare *group = NULL; - Evas_Object *combobox_source; - Evas_Object *entry; Evas_Object *markup = NULL; assert(ap != NULL); assert(ap->workspace != NULL); assert(part != NULL); + assert(name_validator == NULL); + + name_validator = elm_validator_regexp_new(NAME_REGEX, NULL); ap->popup = elm_popup_add(ap->win_layout); elm_object_part_text_set(ap->popup, "title,text", _("Add new item")); @@ -175,40 +191,40 @@ item_dialog_add(App_Data *ap, Part *part) BOX_ADD(ap->popup, box, false, false); ITEM_ADD(box, item, _("Name:"), "eflete/property/item/small_label") - EWE_ENTRY_ADD(item, entry, true); - elm_entry_markup_filter_append(entry, elm_entry_filter_accept_set, &accept_name); + ENTRY_ADD(item, entry, true); + eo_do(entry, eo_event_callback_add(ELM_ENTRY_EVENT_VALIDATE, elm_validator_regexp_helper, name_validator)); + evas_object_smart_callback_add(entry, "changed", _validation, NULL); elm_object_part_text_set(entry, "guide", _("Type a item name.")); elm_object_part_content_set(item, "elm.swallow.content", entry); elm_box_pack_end(box, item); ITEM_ADD(box, item, _("Source:"), "eflete/property/item/small_label") - EWE_COMBOBOX_ADD(item, combobox_source) - - ewe_combobox_item_add(combobox_source, _("None")); - ewe_combobox_select_item_set(combobox_source, 0); + EWE_COMBOBOX_ADD(item, combobox) + ewe_combobox_item_add(combobox, _("None")); + ewe_combobox_select_item_set(combobox, 0); collections = edje_file_collection_list(ap->project->dev); collections = eina_list_sort(collections, eina_list_count(collections), sort_cb); EINA_LIST_FOREACH(collections, l, group) { if (group != ap->project->current_style->full_group_name) - ewe_combobox_item_add(combobox_source, group); + ewe_combobox_item_add(combobox, group); } edje_file_collection_list_free(collections); - elm_object_part_content_set(item, "elm.swallow.content", combobox_source); - evas_object_smart_callback_add(combobox_source, "selected", - _on_item_source_change, markup); + elm_object_part_content_set(item, "elm.swallow.content", combobox); + evas_object_smart_callback_add(combobox, "selected", _on_item_source_change, markup); + evas_object_smart_callback_add(combobox, "selected", _validation, NULL); elm_box_pack_end(box, item); elm_object_part_content_set(markup, "items.swallow", box); elm_object_content_set(ap->popup, markup); - BUTTON_ADD(ap->popup, button, _("Add")); - evas_object_data_set(ap->popup, "ENTRY", entry); evas_object_data_set(ap->popup, "PART", part); - evas_object_data_set(ap->popup, "COMBOBOX", combobox_source); - evas_object_smart_callback_add (button, "clicked", _on_button_add_clicked, ap); - elm_object_part_content_set(ap->popup, "button1", button); + + BUTTON_ADD(ap->popup, btn_add, _("Add")); + evas_object_smart_callback_add (btn_add, "clicked", _on_button_add_clicked, ap); + elm_object_part_content_set(ap->popup, "button1", btn_add); + elm_object_disabled_set(btn_add, true); BUTTON_ADD(ap->popup, button, _("Cancel")); evas_object_smart_callback_add(button, "clicked", _on_button_cancel_clicked, ap); --