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

Reply via email to