On Tue, Apr 22, 2014 at 1:45 AM, Ryuan Choi <[email protected]> wrote:
> ryuan pushed a commit to branch master. > > > http://git.enlightenment.org/core/elementary.git/commit/?id=1be3950fd336b3624ff9c4d7e46f33cec8363a32 > > commit 1be3950fd336b3624ff9c4d7e46f33cec8363a32 > Author: Ryuan Choi <[email protected]> > Date: Tue Apr 22 01:42:53 2014 +0900 > > web2: Implemented alert/confirm/prompt > > Added test cases for alert/confirm/prompt > --- > src/bin/test_web.c | 32 ++++++ > src/lib/elm_web2.c | 296 > ++++++++++++++++++++++++++++++++++++++++++++--------- > 2 files changed, 280 insertions(+), 48 deletions(-) > > diff --git a/src/bin/test_web.c b/src/bin/test_web.c > index 370adf7..5cc4b85 100644 > --- a/src/bin/test_web.c > +++ b/src/bin/test_web.c > @@ -363,6 +363,36 @@ _useragent_cb(void *data, Evas_Object *obj > EINA_UNUSED, void *event_info) > } > > static void > +_dialog_test_cb(void *data, Evas_Object *obj, void *event_info) > +{ > + Web_Test *wt = data; > + const char *selected = elm_object_item_text_get(event_info); > + const char dialog_html[] = "<!doctype html><body>" > + "<script>" > + "var confirm_test = function() {" > + " if (window.confirm('confirm') == true) {" > + " document.getElementById('r').innerHTML = 'You pressed OK';" > + " } else {" > + " document.getElementById('r').innerHTML = 'You pressed Cancel';" > + " }" > + "};" > + "var prompt_test = function() {" > + " document.getElementById('r').innerHTML = window.prompt('Enter > your name', 'EFL');" > + "};" > + "</script>" > + "Result: <div id='r'> </div>" > + "<input type='button' value='alert' onclick=\"window.alert('alert > pressed');\">" > + "<input type='button' value='confirm' onclick=\"confirm_test();\">" > + "<input type='button' value='prompt' onclick=\"prompt_test();\">" > + "</body>"; > + > + printf("selected test : %s\n", selected); > + elm_object_text_set(obj, selected); > + > + elm_web_html_string_load(wt->web, dialog_html, NULL, NULL); > +} > + > +static void > _select_tag_test_cb(void *data, Evas_Object *obj, void *event_info) > { > Web_Test *wt = data; > @@ -629,6 +659,8 @@ test_web_ui(void *data EINA_UNUSED, Evas_Object *obj > EINA_UNUSED, void *event_in > elm_hoversel_hover_parent_set(hoversel, win); > elm_object_text_set(hoversel, "Test cases"); > > + elm_hoversel_item_add(hoversel, "alert/confirm/prompt", NULL, > ELM_ICON_NONE, > + _dialog_test_cb, wt); > elm_hoversel_item_add(hoversel, "<select> tag", NULL, ELM_ICON_NONE, > _select_tag_test_cb, wt); > elm_hoversel_item_add(hoversel, "new window", NULL, ELM_ICON_NONE, > diff --git a/src/lib/elm_web2.c b/src/lib/elm_web2.c > index 479dc2e..1f51f47 100644 > --- a/src/lib/elm_web2.c > +++ b/src/lib/elm_web2.c > @@ -272,6 +272,238 @@ _view_smart_fullscreen_exit(Ewk_View_Smart_Data *sd) > return EINA_TRUE; > } > > +static void > +_bt_close(void *data, > + Evas_Object *obj, > + void *event_info EINA_UNUSED) > +{ > + Dialog_Data *d = data; > + > + if (d->type == DIALOG_ALERT) goto end; > + > + *d->response = (obj == d->bt_ok); > + if (d->type == DIALOG_CONFIRM) goto end; > + > + if (d->type == DIALOG_PROMPT) > + *d->entry_value = strdup(elm_entry_entry_get(d->entry)); > + > +end: > + evas_object_del(d->dialog); > +} > + > +static Dialog_Data * > +_dialog_new(Evas_Object *web, Eina_Bool inwin_mode) > +{ > + Dialog_Data *d; > + > Hi > + d = calloc(1, sizeof(Dialog_Data)); > + if (!d) return NULL; > When do you free this Dialog_Data? Daniel Juyung Seo (SeoZ) > + > + if (!web || inwin_mode) > + { > + Evas_Object *bg; > + > + d->dialog = elm_win_add(NULL, "elm-web-popup", > ELM_WIN_DIALOG_BASIC); > + evas_object_smart_callback_add > + (d->dialog, "delete,request", _bt_close, d); > + > + bg = elm_bg_add(d->dialog); > + evas_object_size_hint_weight_set > + (bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); > + elm_win_resize_object_add(d->dialog, bg); > + evas_object_show(bg); > + > + d->box = elm_box_add(d->dialog); > + evas_object_size_hint_weight_set > + (d->box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); > + elm_win_resize_object_add(d->dialog, d->box); > + evas_object_show(d->box); > + } > + else > + { > + Evas_Object *win = elm_widget_top_get(web); > + > + d->dialog = elm_win_inwin_add(win); > + elm_object_style_set(d->dialog, "minimal"); > + evas_object_size_hint_weight_set > + (d->dialog, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); > + > + d->box = elm_box_add(win); > + evas_object_size_hint_weight_set > + (d->box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); > + elm_win_inwin_content_set(d->dialog, d->box); > + evas_object_show(d->box); > + } > + > + return d; > +} > > > ------------------------------------------------------------------------------ Start Your Social Network Today - Download eXo Platform Build your Enterprise Intranet with eXo Platform Software Java Based Open Source Intranet - Social, Extensible, Cloud Ready Get Started Now And Turn Your Intranet Into A Collaboration Platform http://p.sf.net/sfu/ExoPlatform _______________________________________________ enlightenment-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
