viking

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

commit 16fa89604f4a2d98528afba54ef93c2e2110d09b
parent ec81173f906931e3aeba87d829aca501d85a0584
Author: Kyle Milz <kmilz@ucalgary.ca>
Date:   Wed, 17 Oct 2012 16:31:44 -0600

nuke update_state and split into 6 distinct pieces

Diffstat:
Msrc/buffer.c | 22++++++----------------
Msrc/commands.c | 4++--
Msrc/utilities.c | 68++++++++++++++++++++++++++++++++++++++++++--------------------------
Msrc/utilities.h | 5+++++
Msrc/viking.h | 5++++-
Msrc/window.c | 68+++++++++++++++++++++++++++++++++++++++++++++-----------------------
6 files changed, 104 insertions(+), 68 deletions(-)

diff --git a/src/buffer.c b/src/buffer.c @@ -296,7 +296,7 @@ load_finished_cb(void *data, Evas_Object *obj, void *event_info) set(&a, wd); } - update_state(wd); + // update_state(wd); // userscript_hooks_end(elm_web_uri_get(td->web)); @@ -350,7 +350,8 @@ process_keypress(void *event_info, Window_Data *wd) && key.func) if (key.func(&key.arg, wd)) { wd->current_modkey = wd->count = 0; - update_state(wd); + gui_count_update(wd); + gui_modkey_update(wd); return EINA_TRUE; } } @@ -388,13 +389,11 @@ webview_keypress_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) || (!strcmp(ev->key, "0") && wd->count))) { // ad->count = (ad->count ? ad->count * 10 : 0) + (ev->key - "0"); wd->count = (wd->count ? wd->count * 10 : 0) + atoi(ev->key); - update_state(wd); + gui_count_update(wd); return; } else if (strchr(ad->modkeys, ev->key[0]) && wd->current_modkey != ev->key[0]) { wd->current_modkey = ev->key[0]; - // ad->current_modkey = strdup(ev->key); - - update_state(wd); + gui_modkey_update(wd); return; } // } @@ -495,19 +494,10 @@ icon_changed_cb(void *data, Evas_Object *obj, void *event_info) static void bf_list_changed_cb(void *data, Evas_Object *obj, void *event_info) { - Eina_Bool back, fwd; - Eina_Strbuf *buf; Buffer_Data *bd = data; Window_Data *wd = bd->window; - buf = eina_strbuf_new(); - back = ewk_view_back_possible(bd->view); - fwd = ewk_view_forward_possible(bd->view); - - if (back || fwd) - eina_strbuf_append_printf(buf, "[%s%s]", back ? "+" : "", fwd ? "-" : ""); - - elm_object_text_set(wd->status_back_forward, eina_strbuf_string_steal(buf)); + make_bf_list(wd->status_back_forward, bd); } static void diff --git a/src/commands.c b/src/commands.c @@ -200,7 +200,7 @@ input(const Arg *arg, void *data) if (!evas_object_visible_get(ad->url)) evas_object_show(ad->url); - update_state(data); + // update_state(data); /* Set the colour and font back to the default, so that we don't still * maintain a red colour from a warning from an end of search indicator, @@ -877,7 +877,7 @@ focus_input(const Arg *arg, void *data) a.i = Silent; script(&a, data); free(a.s); - update_state(data); + gui_scroll_update(ad); ad->manual_focus = TRUE; return TRUE; } diff --git a/src/utilities.c b/src/utilities.c @@ -626,32 +626,42 @@ echo(const Arg *arg, void *data) } void -update_state(Window_Data *wd) +gui_count_update(Window_Data *wd) { - Eina_Strbuf *status; + Eina_Strbuf *status = eina_strbuf_new(); - if (!wd->cur_buf) - return; + eina_strbuf_append_printf(status, "%.0d", wd->count); + elm_object_text_set(wd->status_count, eina_strbuf_string_steal(status)); +} - status = eina_strbuf_new(); +void +gui_modkey_update(Window_Data *wd) +{ + Eina_Strbuf *status = eina_strbuf_new(); - eina_strbuf_append(status, "<font=Monospace font_size=11 color=#FFF>"); - eina_strbuf_append_printf(status, "%.0d", wd->count); if (wd->current_modkey) eina_strbuf_append(status, &wd->current_modkey); + elm_object_text_set(wd->status_modkey, eina_strbuf_string_steal(status)); +} - /* put a notification if we are zoomed +void +gui_zoom_update(Window_Data *wd) +{ + Eina_Strbuf *status = eina_strbuf_new(); + float zoom = ewk_view_scale_get(wd->cur_buf->view); - double zoom = elm_web_zoom_get(wd->cur_buf->web); - float zoom = ewk_view_zoom_get(wd->cur_buf->view); - if (zoom != 1) + if (zoom != 1.0) eina_strbuf_append_printf(status, " %0.2lfx", zoom); + elm_object_text_set(wd->status_zoom, eina_strbuf_string_steal(status)); +} - */ - - /* always show the current scroll position - +void +gui_scroll_update(Window_Data *wd) +{ + /* + Eina_Strbuf *buf = eina_strbuf_new(); int x, y, w, h, val; + ewk_frame_scroll_pos_get(frame, &x, &y); ewk_frame_scroll_size_get(frame, &w, &h); @@ -666,18 +676,8 @@ update_state(Window_Data *wd) else eina_strbuf_append_printf(status, " %d%%", val); - - elm_object_style_set(wd->status_state, "slide_bounce"); - elm_object_text_set(wd->status_state, eina_strbuf_string_get(status)); - - int state_width, window_width; - evas_object_geometry_get(wd->status_state, NULL, NULL, &state_width, NULL); - evas_object_geometry_get(wd->win, NULL, NULL, &window_width, NULL); - - elm_label_wrap_width_set(wd->status_url, window_width - state_width); - - eina_strbuf_free(status); */ + elm_object_text_set(wd->status_scroll, "Unk"); } #if 0 @@ -811,3 +811,19 @@ make_url(Evas_Object *label, Buffer_Data *bd) evas_object_show(label); } +void +make_bf_list(Evas_Object *label, Buffer_Data *bd) +{ + Eina_Bool back, fwd; + Eina_Strbuf *buf; + + buf = eina_strbuf_new(); + back = ewk_view_back_possible(bd->view); + fwd = ewk_view_forward_possible(bd->view); + + if (back || fwd) + eina_strbuf_append_printf(buf, "[%s%s]", back ? "+" : "", fwd ? "-" : ""); + + elm_object_text_set(label, eina_strbuf_string_steal(buf)); +} + diff --git a/src/utilities.h b/src/utilities.h @@ -39,4 +39,9 @@ void make_searchengines_list(Searchengine *searchengines, int length); void make_buffer_number(Evas_Object *label, Buffer_Data *bd); void make_favicon(Evas_Object *icon, Buffer_Data *bd); void make_url(Evas_Object *label, Buffer_Data *bd); +void make_bf_list(Evas_Object *label, Buffer_Data *bd); +void gui_count_update(Window_Data*); +void gui_modkey_update(Window_Data*); +void gui_zoom_update(Window_Data*); +void gui_scroll_update(Window_Data*); diff --git a/src/viking.h b/src/viking.h @@ -194,7 +194,10 @@ typedef struct Evas_Object *status_favicon; Evas_Object *status_url; Evas_Object *status_back_forward; - Evas_Object *status_state; + Evas_Object *status_modkey; + Evas_Object *status_count; + Evas_Object *status_zoom; + Evas_Object *status_scroll; Evas_Object *web_inspector; Evas_Object *progress_bar; Evas_Object *downloads; diff --git a/src/window.c b/src/window.c @@ -46,7 +46,7 @@ inputbox_activate_cb(void *data, Evas_Object *obj, void *event_info) a.s = strdup("hints.fire();"); script(&a, data); free(a.s); - update_state(data); + gui_scroll_update(wd); } else return; if (!wd->echo_active) @@ -105,7 +105,7 @@ inputbox_keypress_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) a.s = strdup("hints.focusPreviousHint();"); script(&a, data); free(a.s); - update_state(data); + gui_scroll_update(wd); return; } // if (event->keyval == GDK_Tab) { @@ -114,7 +114,7 @@ inputbox_keypress_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) a.s = strdup("hints.focusNextHint();"); script(&a, data); free(a.s); - update_state(data); + gui_scroll_update(wd); return; } // if (event->keyval == GDK_Return) { @@ -123,7 +123,7 @@ inputbox_keypress_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) a.s = strdup_printf("hints.fire();"); script(&a, data); free(a.s); - update_state(data); + gui_scroll_update(wd); return; } } @@ -210,7 +210,7 @@ inputbox_keypress_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) a.s = strdup_printf("hints.updateHints(%d);", wd->count); script(&a, data); free(a.s); - update_state(data); + gui_count_update(wd); return; } } @@ -308,7 +308,7 @@ inputbox_changed_cb(void *data, Evas_Object *obj, void *event_info) script(&a, data); free(a.s); wd->count = 0; - update_state(data); + gui_count_update(wd); } } @@ -347,14 +347,17 @@ window_main_buffer_set(Buffer_Data *new_buf) elm_naviframe_item_simple_promote(wd->naviframe, new_buf->view); - /* set buffer number */ + /* left side */ make_buffer_number(wd->status_buffer_num, new_buf); - - /* trigger icon update */ make_favicon(wd->status_favicon, new_buf); - - /* set url */ make_url(wd->status_url, new_buf); + make_bf_list(wd->status_back_forward, new_buf); + + /* right side */ + gui_count_update(wd); + gui_modkey_update(wd); + gui_zoom_update(wd); + gui_scroll_update(wd); } } @@ -371,8 +374,9 @@ window_add(App_Data *ad, Session_Window *session_window) if (!wd) return NULL; Evas_Object *win, *bg, *box, *status_bar, *url, *naviframe, *status_url; - Evas_Object *status_state, *event_box, *web_inspector, *progress, *downloads; + Evas_Object *event_box, *web_inspector, *progress, *downloads; Evas_Object *status_back_forward, *status_buffer_num, *status_favicon; + Evas_Object *status_count, *status_modkey, *status_zoom, *status_scroll; elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED); @@ -414,7 +418,6 @@ window_add(App_Data *ad, Session_Window *session_window) /* status bar container */ status_bar = elm_box_add(win); - elm_box_homogeneous_set(status_bar, EINA_FALSE); elm_box_horizontal_set(status_bar, EINA_TRUE); evas_object_size_hint_align_set(status_bar, EVAS_HINT_FILL, EVAS_HINT_FILL); elm_box_pack_end(box, status_bar); @@ -442,20 +445,30 @@ window_add(App_Data *ad, Session_Window *session_window) elm_box_pack_end(status_bar, status_back_forward); evas_object_show(status_back_forward); - /* status bar state (load progress, mod keys, scroll %) */ - status_state = elm_label_add(win); - evas_object_size_hint_weight_set(status_state, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(status_state, 1.0, EVAS_HINT_FILL); - 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); + /* current "count" */ + status_count = elm_label_add(win); + evas_object_size_hint_align_set(status_count, 1.0, EVAS_HINT_FILL); + elm_box_pack_end(status_bar, status_count); + evas_object_show(status_count); + + /* current modkey */ + status_modkey = elm_label_add(win); + evas_object_size_hint_align_set(status_modkey, 1.0, EVAS_HINT_FILL); + elm_box_pack_end(status_bar, status_modkey); + evas_object_show(status_modkey); + + /* current zoom level */ + status_zoom = elm_label_add(win); + evas_object_size_hint_align_set(status_zoom, 1.0, EVAS_HINT_FILL); + elm_box_pack_end(status_bar, status_zoom); + evas_object_show(status_zoom); + /* status current progress bar */ progress = elm_progressbar_add(win); elm_progressbar_horizontal_set(progress, EINA_TRUE); @@ -465,6 +478,12 @@ window_add(App_Data *ad, Session_Window *session_window) elm_box_pack_end(status_bar, progress); evas_object_show(progress); + /* scroll position */ + status_scroll = elm_label_add(win); + evas_object_size_hint_align_set(status_scroll, 1.0, EVAS_HINT_FILL); + elm_box_pack_end(status_bar, status_scroll); + evas_object_show(status_scroll); + /* invisible until activated web inspector */ web_inspector = elm_box_add(win); evas_object_size_hint_align_set(web_inspector, EVAS_HINT_FILL, EVAS_HINT_FILL); @@ -495,10 +514,13 @@ window_add(App_Data *ad, Session_Window *session_window) wd->status_favicon = status_favicon; wd->status_url = status_url; wd->status_back_forward = status_back_forward; - wd->status_state = status_state; + wd->status_count = status_count; + wd->status_modkey = status_modkey; + wd->status_zoom = status_zoom; + wd->progress_bar = progress; + wd->status_scroll = status_scroll; wd->event_box = event_box; wd->web_inspector = web_inspector; - wd->progress_bar = progress; wd->downloads = downloads; wd->app = ad; wd->mode = ModeNormal;