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