2 * Copyright (C) 2012 Samsung Electronics
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
13 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 #include "url_utils.h"
30 #include <Ecore_Evas.h>
32 #define PADDING_SIZE 5
35 _url_bar_url_get_with_protocol(Url_Bar *urlBar)
37 const char *url = edje_object_part_text_get(urlBar->entry, "url.text");
39 return url_from_user_input(url);
43 on_urlbar_key_down(void *data, Evas *e, Evas_Object *obj, void *event_info)
45 Evas_Event_Key_Down *ev = event_info;
46 Url_Bar *urlBar = (Url_Bar *)data;
48 if (!ev->key || strcmp(ev->key, "Return"))
51 char *url = _url_bar_url_get_with_protocol(urlBar);
53 ewk_view_uri_set(urlBar->webView, url);
56 evas_object_focus_set(urlBar->webView, EINA_TRUE);
60 on_urlbar_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info)
62 Evas_Event_Mouse_Down *ev = event_info;
63 Url_Bar *urlBar = (Url_Bar *)data;
65 if (ev->button == 1) {
66 evas_object_focus_set(urlBar->entry, EINA_TRUE);
67 edje_object_signal_emit(urlBar->entry, "entry,action,focus", "entry");
72 on_urlbar_focus_out(void *data, Evas *e, Evas_Object *obj, void *event_info)
74 Url_Bar *urlBar = (Url_Bar *)data;
76 edje_object_signal_emit(urlBar->entry, "entry,action,unfocus", "entry");
80 url_bar_width_set(Url_Bar *urlBar, int width)
82 evas_object_move(urlBar->area, 0, 0);
83 evas_object_resize(urlBar->area, width, URL_BAR_HEIGHT);
85 evas_object_move(urlBar->entry, PADDING_SIZE, PADDING_SIZE);
86 evas_object_resize(urlBar->entry, width - PADDING_SIZE * 2, URL_BAR_HEIGHT - PADDING_SIZE * 2);
90 url_bar_add(Evas_Object *webView, int width)
96 evas = evas_object_evas_get(webView);
98 url_bar = (Url_Bar *)malloc(sizeof(Url_Bar));
99 url_bar->webView = webView;
101 url_bar->area = evas_object_rectangle_add(evas);
102 evas_object_name_set(url_bar->area, "url_barArea");
103 evas_object_color_set(url_bar->area, 255, 255, 255, 255);
105 url_bar->entry = edje_object_add(evas);
106 Eina_Bool ret = edje_object_file_set(url_bar->entry, THEME_DIR"/entry.edj", "control/entry/base/default");
108 evas_object_del(url_bar->area);
114 edje_object_part_text_set(url_bar->entry, "url.text", "");
116 /* Set URL bar dimensions and show it */
117 url_bar_width_set(url_bar, width);
118 evas_object_show(url_bar->area);
119 evas_object_show(url_bar->entry);
121 evas_object_event_callback_add(url_bar->entry, EVAS_CALLBACK_MOUSE_DOWN, on_urlbar_mouse_down, url_bar);
122 evas_object_event_callback_add(url_bar->entry, EVAS_CALLBACK_KEY_DOWN, on_urlbar_key_down, url_bar);
123 evas_object_event_callback_add(url_bar->entry, EVAS_CALLBACK_FOCUS_OUT, on_urlbar_focus_out, url_bar);
129 url_bar_del(Url_Bar *urlBar)
134 evas_object_event_callback_del(urlBar->entry, EVAS_CALLBACK_KEY_DOWN, on_urlbar_key_down);
135 evas_object_event_callback_del(urlBar->entry, EVAS_CALLBACK_MOUSE_DOWN, on_urlbar_mouse_down);
136 evas_object_event_callback_del(urlBar->entry, EVAS_CALLBACK_FOCUS_OUT, on_urlbar_focus_out);
138 evas_object_del(urlBar->area);
139 evas_object_del(urlBar->entry);
144 url_bar_url_set(Url_Bar *urlBar, const char *url)
149 edje_object_part_text_set(urlBar->entry, "url.text", url);