rimmed pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=22629da8e3538a98c9d56d40dc6f47ccfd63b5f4
commit 22629da8e3538a98c9d56d40dc6f47ccfd63b5f4 Author: Vyacheslav Reutskiy <v.reuts...@samsung.com> Date: Tue May 17 16:25:42 2016 +0300 sound_manager: use the eflete popup for add tone Change-Id: I4385d2db51b8fa07585f3dd064273385a9a22453 --- src/bin/ui/sound_manager.c | 115 +++++++++++++-------------------------------- 1 file changed, 32 insertions(+), 83 deletions(-) diff --git a/src/bin/ui/sound_manager.c b/src/bin/ui/sound_manager.c index eebf8ce..38acb3e 100644 --- a/src/bin/ui/sound_manager.c +++ b/src/bin/ui/sound_manager.c @@ -24,6 +24,7 @@ #include "project_manager.h" #include "modal_window.h" #include "config.h" +#include "validator.h" #define ITEM_WIDTH 100 #define ITEM_HEIGHT 115 @@ -49,12 +50,11 @@ struct _Sound_Manager { Evas_Object *win; Evas_Object *panes; - Evas_Object *popup; - Evas_Object *popup_btn_add; Evas_Object *btn_del; Evas_Object *menu; Evas_Object *tone_entry, *frq_entry; - Elm_Validator_Regexp *tone_validator, *frq_validator; + Resource_Name_Validator *tone_validator; + Elm_Validator_Regexp *frq_validator; Evas_Object *gengrid; Evas_Object *layout; Elm_Object_Item *tone_header; @@ -264,57 +264,14 @@ _add_sample_done(void *data __UNUSED__, } static void -_popup_close(void *data __UNUSED__) -{ - assert(mng.tone_validator != NULL); - assert(mng.frq_validator != NULL); - - evas_object_del(mng.popup); - - elm_validator_regexp_free(mng.tone_validator); - elm_validator_regexp_free(mng.frq_validator); - mng.tone_validator = NULL; - mng.frq_validator = NULL; - - elm_gengrid_item_selected_set(elm_gengrid_last_item_get(mng.gengrid), true); -} - -static void -_add_tone_cancel(void *data __UNUSED__, - Evas_Object *obj __UNUSED__, - void *event_info __UNUSED__) -{ - ecore_job_add(_popup_close, NULL); -} - -static void -_add_tone_done(void *data __UNUSED__, - Evas_Object *obj __UNUSED__, - void *event_info __UNUSED__) +_tone_add(void) { Sound_Data *snd; Eina_Stringshare *tone_name; int frq; - Eina_List *tones_list, *l; - Eina_Bool exist = false; Tone_Resource *tone; tone_name = eina_stringshare_add(elm_entry_entry_get(mng.tone_entry)); - - tones_list = ap.project->tones; - EINA_LIST_FOREACH(tones_list, l, tone) - if (tone->name == tone_name) /* they both are stringshares */ - { - exist = true; - break; - } - if (exist) - { - WARN(_("Tone '%s' is already added to project"), tone_name) - eina_stringshare_del(tone_name); - return; - } - frq = atoi(elm_entry_entry_get(mng.frq_entry)); edje_edit_sound_tone_add(ap.project->global_object, tone_name, frq); @@ -333,8 +290,6 @@ _add_tone_done(void *data __UNUSED__, editor_save(ap.project->global_object); TODO("Remove this line once edje_edit_image_add would be added into Editor Module and saving would work properly") ap.project->changed = true; - - ecore_job_add(_popup_close, NULL); } static void @@ -350,11 +305,11 @@ _validation(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { - if ((elm_validator_regexp_status_get(mng.tone_validator) != ELM_REG_NOERROR) || + if ((resource_name_validator_status_get(mng.tone_validator) != ELM_REG_NOERROR) || (elm_validator_regexp_status_get(mng.frq_validator) != ELM_REG_NOERROR)) - elm_object_disabled_set(mng.popup_btn_add, true); + popup_buttons_disabled_set(BTN_OK, true); else - elm_object_disabled_set(mng.popup_btn_add, false); + popup_buttons_disabled_set(BTN_OK, false); } static void @@ -362,53 +317,47 @@ _tone_add_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { - Evas_Object *popup, *box, *item, *bt_no; - Eina_Stringshare *title; - - popup = elm_popup_add(ap.win); - elm_popup_orient_set(popup, ELM_POPUP_ORIENT_CENTER); - title = eina_stringshare_add(_("Add new tone to the project")); - elm_object_part_text_set(popup, "title,text", title); - mng.popup = popup; - - assert(mng.tone_validator == NULL); - assert(mng.frq_validator == NULL); - mng.tone_validator = elm_validator_regexp_new(NAME_REGEX, NULL); - mng.frq_validator = elm_validator_regexp_new(FREQUENCY_REGEX, NULL); - - BOX_ADD(popup, box, false, false); - elm_object_content_set(popup, box); - LAYOUT_PROP_ADD(box, _("Tone name:"), "property", "1swallow") + Evas_Object *box, *item; + Popup_Button btn_res; + + if (!mng.tone_validator) + { + mng.tone_validator = resource_name_validator_new(NAME_REGEX, NULL); + resource_name_validator_list_set(mng.tone_validator, &ap.project->tones, true); + } + if (!mng.frq_validator) + mng.frq_validator = elm_validator_regexp_new(FREQUENCY_REGEX, NULL); + + BOX_ADD(mng.win, box, false, false); + LAYOUT_PROP_ADD(box, _("Tone name:"), "property", "1swallow"); ENTRY_ADD(item, mng.tone_entry, true); - eo_event_callback_add(mng.tone_entry, ELM_ENTRY_EVENT_VALIDATE, elm_validator_regexp_helper, mng.tone_validator); + eo_event_callback_add(mng.tone_entry, ELM_ENTRY_EVENT_VALIDATE, resource_name_validator_helper, mng.tone_validator); evas_object_smart_callback_add(mng.tone_entry, "changed", _validation, NULL); elm_object_part_text_set(mng.tone_entry, "guide", _("Type a new tone name")); + elm_object_part_content_set(item, "elm.swallow.content", mng.tone_entry); /* need to manualy set not valid string for triggered validator */ elm_entry_entry_set(mng.tone_entry, NULL); - elm_object_part_content_set(item, "elm.swallow.content", mng.tone_entry); elm_box_pack_end(box, item); - LAYOUT_PROP_ADD(box, _("Frequency:"), "property", "1swallow") + LAYOUT_PROP_ADD(box, _("Frequency:"), "property", "1swallow"); ENTRY_ADD(item, mng.frq_entry, true); eo_event_callback_add(mng.frq_entry, ELM_ENTRY_EVENT_VALIDATE, elm_validator_regexp_helper, mng.frq_validator); evas_object_smart_callback_add(mng.frq_entry, "changed", _validation, NULL); elm_object_part_text_set(mng.frq_entry, "guide", _("Type a frequency (20 - 20000)")); + elm_object_part_content_set(item, "elm.swallow.content", mng.frq_entry); /* need to manualy set not valid string for triggered validator */ elm_entry_entry_set(mng.frq_entry, NULL); - elm_object_part_content_set(item, "elm.swallow.content", mng.frq_entry); elm_box_pack_end(box, item); - BUTTON_ADD(popup, mng.popup_btn_add, _("Add")); - evas_object_smart_callback_add (mng.popup_btn_add, "clicked", _add_tone_done, NULL); - elm_object_part_content_set(popup, "button1", mng.popup_btn_add); - elm_object_disabled_set(mng.popup_btn_add, true); - - BUTTON_ADD(popup, bt_no, _("Cancel")); - evas_object_smart_callback_add (bt_no, "clicked", _add_tone_cancel, NULL); - elm_object_part_content_set(popup, "button2", bt_no); + popup_buttons_disabled_set(BTN_OK, true); + btn_res = popup_want_action(_("Create a new layout"), NULL, box, + mng.tone_entry, BTN_OK|BTN_CANCEL, + NULL, mng.tone_entry); + if (BTN_CANCEL == btn_res) goto close; + _tone_add(); - evas_object_show(popup); - eina_stringshare_del(title); +close: + evas_object_del(box); } #undef INFO_ADD --