viking

webkit based web browser for Enlightenment
Log | Files | Refs | LICENSE

commit 03842469b5ac06335d49d8fd3d4512521df236cb
parent f35fb9ce8cc289f8d6d4f7d1fde3a79df277d3d9
Author: Kyle Milz <kmilz@ucalgary.ca>
Date:   Tue, 16 Oct 2012 23:54:51 -0600

split buffer number, favicon, and url into separate ui elements

Diffstat:
Msrc/buffer.c | 29+++++++++++++++++++++++++----
Msrc/commands.c | 10+---------
Msrc/utilities.c | 13+++++++++++--
Msrc/utilities.h | 3++-
Msrc/viking.h | 2++
Msrc/window.c | 58++++++++++++++++++++++++++++++++++++----------------------
6 files changed, 77 insertions(+), 38 deletions(-)

diff --git a/src/buffer.c b/src/buffer.c @@ -245,7 +245,7 @@ url_changed_cb(void *data, Evas_Object *obj, void *event_info) const char *url = event_info; // Arg a = { .i = Silent, .s = strdup(JS_SETUP_HINTS) }; - if (bd != bd->window->cur_buf) + if (bd != wd->cur_buf) return; // userscript_hooks_start(elm_web_uri_get(td->web)); @@ -259,8 +259,12 @@ url_changed_cb(void *data, Evas_Object *obj, void *event_info) bd->window->manual_focus = EINA_FALSE; - elm_box_clear(wd->status_url); - elm_box_pack_end(wd->status_url, make_url_with_icon(url, wd)); + if (strncmp(url, "http://", 7) == 0) + url += 7; + else if (strncmp(url, "https://", 8) == 0) + url += 8; + elm_object_text_set(wd->status_url, url); + evas_object_show(wd->status_url); } static void @@ -474,7 +478,24 @@ console_cb(void *data, Evas_Object *obj, const char *message, unsigned int line, static void icon_changed_cb(void *data, Evas_Object *obj, void *event_info) { - // printf("icon_changed()\n"); + Ewk_Favicon_Database *database; + Buffer_Data *bd = data; + Window_Data *wd = bd->window; + Evas *e = evas_object_evas_get(wd->win); + + if (bd != wd->cur_buf) + return; + + elm_box_clear(wd->status_favicon); + database = ewk_context_favicon_database_get(ewk_context_default_get()); + ewk_favicon_database_async_icon_get( + database, + ewk_view_url_get(bd->view), + e, + received_favicon_cb, + wd->status_favicon); + + printf("icon_changed()\n"); } static void diff --git a/src/commands.c b/src/commands.c @@ -988,15 +988,7 @@ list(const Arg *arg, void *data) elm_box_pack_end(ad->event_box, row); evas_object_show(row); - label = elm_label_add(ad->win); - evas_object_size_hint_align_set(label, 0.0, EVAS_HINT_FILL); - elm_box_pack_end(row, label); - Eina_Strbuf *buf = eina_strbuf_new(); - eina_strbuf_append_printf(buf, " %2i ", td->buf_number); - elm_object_text_set(label, eina_strbuf_string_steal(buf)); - evas_object_show(label); - - label = make_url_with_icon(ewk_view_url_get(td->view), ad); + label = make_url_with_icon(ewk_view_url_get(td->view), td); elm_box_pack_end(row, label); evas_object_show(label); diff --git a/src/utilities.c b/src/utilities.c @@ -740,7 +740,7 @@ set_widget_font_and_color(Evas_Object *widget, const char *font_str, const char } */ -static void +void received_favicon_cb(const char *url, Evas_Object *icon, void *data) { Evas_Object *row = data; @@ -755,10 +755,12 @@ received_favicon_cb(const char *url, Evas_Object *icon, void *data) } Evas_Object* -make_url_with_icon(const char *url, Window_Data *wd) +make_url_with_icon(const char *url, Buffer_Data *bd) { Ewk_Favicon_Database *database; Evas_Object *icon, *label, *return_box; + Eina_Strbuf *buf = eina_strbuf_new(); + Window_Data *wd = bd->window; Evas *e = evas_object_evas_get(wd->win); if (url == NULL) @@ -768,6 +770,13 @@ make_url_with_icon(const char *url, Window_Data *wd) elm_box_horizontal_set(return_box, EINA_TRUE); evas_object_show(return_box); + label = elm_label_add(wd->win); + evas_object_size_hint_align_set(label, 0.0, EVAS_HINT_FILL); + elm_box_pack_end(return_box, label); + eina_strbuf_append_printf(buf, " %2i ", bd->buf_number); + elm_object_text_set(label, eina_strbuf_string_steal(buf)); + evas_object_show(label); + database = ewk_context_favicon_database_get(ewk_context_default_get()); icon = elm_box_add(wd->win); ewk_favicon_database_async_icon_get( diff --git a/src/utilities.h b/src/utilities.h @@ -30,7 +30,8 @@ void setup_modkeys(void *data); Eina_Bool echo(const Arg *arg, void *); void update_state(Window_Data*); Eina_Bool enable_proxy(Buffer_Data *bd); -Evas_Object* make_url_with_icon(const char *url, Window_Data *wd); +Evas_Object* make_url_with_icon(const char*, Buffer_Data*); +void received_favicon_cb(const char *url, Evas_Object *icon, void *data); char *find_uri_for_searchengine(const char *handle); void make_searchengines_list(Searchengine *searchengines, int length); diff --git a/src/viking.h b/src/viking.h @@ -190,6 +190,8 @@ typedef struct Evas_Object *url; /* "inputbox" */ Evas_Object *event_box; Evas_Object *status_bar; + Evas_Object *status_buffer_num; + Evas_Object *status_favicon; Evas_Object *status_url; Evas_Object *status_back_forward; Evas_Object *status_state; diff --git a/src/window.c b/src/window.c @@ -324,43 +324,44 @@ _win_del_request_cb(void *data, Evas_Object *obj, void *event_info) void window_main_buffer_set(Buffer_Data *new_buf) { + const char *url; Window_Data *wd = new_buf->window; Buffer_Data *old_buf = wd->cur_buf; App_Data *ad = wd->app; + Eina_Strbuf *buf = eina_strbuf_new(); if (new_buf == old_buf || ad->exiting) return; if (old_buf) { - // ewk_view_visibility_state_set(old_buf->view, EWK_PAGE_VISIBILITY_STATE_HIDDEN, 0); + evas_object_hide(old_buf->view); // if (old_buf->inspector_enabled) // ewk_view_web_inspector_close(old_buf->view); - // if (old_buf->proxy_enabled) - // g_object_set(ad->soup_session, "proxy-uri", NULL, NULL); - // evas_object_hide(old_buf->view); } wd->cur_buf = new_buf; if (new_buf) { - // ewk_view_visibility_state_set(new_buf->view, EWK_PAGE_VISIBILITY_STATE_VISIBLE, 0); + evas_object_show(new_buf->view); //if (new_buf->inspector_enabled) { // ewk_view_web_inspector_show(new_buf->view); //} elm_naviframe_item_simple_promote(wd->naviframe, new_buf->view); - /* - if (new_buf->proxy_enabled) - enable_proxy(ad->cur_buf); - - if (new_buf->cookies_enabled) - ewk_cookies_policy_set(EWK_COOKIE_JAR_ACCEPT_NO_THIRD_PARTY); - else - ewk_cookies_policy_set(EWK_COOKIE_JAR_ACCEPT_NEVER); - */ - // evas_object_show(new_buf->view); - elm_box_clear(wd->status_url); - elm_box_pack_end(wd->status_url, make_url_with_icon(ewk_view_url_get(new_buf->view), wd)); + + /* set buffer number */ + eina_strbuf_append_printf(buf, " %2i ", new_buf->buf_number); + elm_object_text_set(wd->status_buffer_num, eina_strbuf_string_steal(buf)); + evas_object_show(wd->status_buffer_num); + + /* set url */ + url = ewk_view_url_get(new_buf->view); + if (strncmp(url, "http://", 7) == 0) + url += 7; + else if (strncmp(url, "https://", 8) == 0) + url += 8; + elm_object_text_set(wd->status_url, url); + evas_object_show(wd->status_url); } } @@ -378,7 +379,7 @@ window_add(App_Data *ad, Session_Window *session_window) Evas_Object *win, *bg, *box, *status_bar, *url, *naviframe, *status_url; Evas_Object *status_state, *event_box, *web_inspector, *progress, *downloads; - Evas_Object *status_back_forward; + Evas_Object *status_back_forward, *status_buffer_num, *status_favicon; elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED); @@ -426,12 +427,22 @@ window_add(App_Data *ad, Session_Window *session_window) elm_box_pack_end(box, status_bar); evas_object_show(status_bar); - /* status bar url */ - status_url = elm_box_add(win); - evas_object_size_hint_align_set(status_url, 0.0, EVAS_HINT_FILL); + /* status buffer number */ + status_buffer_num = elm_label_add(win); + elm_box_pack_end(status_bar, status_buffer_num); + evas_object_show(status_buffer_num); + + /* status favicon */ + status_favicon = elm_box_add(win); + elm_box_pack_end(status_bar, status_favicon); + evas_object_show(status_favicon); + + /* status current url */ + status_url = elm_label_add(win); elm_box_pack_end(status_bar, status_url); evas_object_show(status_url); + /* status able to go back/forward indicator */ status_back_forward = elm_label_add(win); evas_object_size_hint_weight_set(status_back_forward, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(status_back_forward, 0.0, EVAS_HINT_FILL); @@ -445,16 +456,17 @@ window_add(App_Data *ad, Session_Window *session_window) elm_box_pack_end(status_bar, status_state); evas_object_show(status_state); + /* status number of downloads */ downloads = elm_label_add(win); evas_object_size_hint_weight_set(status_state, 0.0, 0.0); evas_object_size_hint_align_set(downloads, 1.0, EVAS_HINT_FILL); elm_box_pack_end(status_bar, downloads); evas_object_show(downloads); + /* status current progress bar */ progress = elm_progressbar_add(win); elm_progressbar_horizontal_set(progress, EINA_TRUE); elm_progressbar_unit_format_set(progress, NULL); - evas_object_size_hint_align_set(progress, 1.0, EVAS_HINT_FILL); evas_object_size_hint_min_set(progress, 100, 8); evas_object_size_hint_max_set(progress, 100, 8); elm_box_pack_end(status_bar, progress); @@ -486,6 +498,8 @@ window_add(App_Data *ad, Session_Window *session_window) wd->main_box = box; wd->naviframe = naviframe; wd->url = url; + wd->status_buffer_num = status_buffer_num; + wd->status_favicon = status_favicon; wd->status_url = status_url; wd->status_back_forward = status_back_forward; wd->status_state = status_state;