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:
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;