commit 901ae07f0efee9ae463d80882cba7b185d4afd7d
parent ae28e70ae23578bbbe77afc0a7a782e7c383c201
Author: Kyle Milz <kmilz@ucalgary.ca>
Date: Mon, 17 Dec 2012 13:38:54 -0700
download: break out into own file
Diffstat:
4 files changed, 136 insertions(+), 114 deletions(-)
diff --git a/src/Makefile b/src/Makefile
@@ -1,7 +1,7 @@
TARGET = viking
# Objectfiles, needed for $(TARGET)
-OBJ = main.o utilities.o commands.o jsmn.o viking_state.o window.o buffer.o
+OBJ = main.o utilities.o commands.o jsmn.o viking_state.o window.o buffer.o download.o
# Manpages
MAN1 = evi2.1
MAN5 = evirc.5
diff --git a/src/buffer.c b/src/buffer.c
@@ -9,6 +9,7 @@
#include "commands.h"
#include "window.h"
#include "buffer.h"
+#include "download.h"
typedef struct {
@@ -461,119 +462,6 @@ webview_create_window_cb(void *data, Evas_Object *obj, Eina_Bool js, const Elm_W
}
*/
-static Eina_Bool
-download_status_cb(void *data)
-{
- Ewk_Download_Job *dl;
- Eina_List *l;
-
- Window_Data *wd = data;
- App_Data *ad = wd->app;
- unsigned int dl_count = eina_list_count(ad->downloads);
- Eina_Strbuf *buf = eina_strbuf_new();
- double percent_done;
-
- eina_strbuf_append_printf(buf, "%i DL", eina_list_count(ad->downloads));
-
- percent_done = 0.0;
- EINA_LIST_FOREACH(ad->downloads, l, dl)
- percent_done += 100.0 * ewk_download_job_estimated_progress_get(dl);
-
- percent_done /= (double)dl_count;
-
- eina_strbuf_append_printf(buf, " (%.1f%%)", percent_done);
-
- EINA_LIST_FOREACH(ad->windows, l, wd) {
- if (dl_count == 0) {
- evas_object_size_hint_weight_set(wd->downloads, 0.0, 0.0);
- elm_object_text_set(wd->downloads, "");
- }
- else {
- evas_object_size_hint_weight_set(wd->downloads, EVAS_HINT_EXPAND, 0.0);
- elm_object_text_set(wd->downloads, eina_strbuf_string_get(buf));
- }
- }
- eina_strbuf_free(buf);
-
- return ECORE_CALLBACK_RENEW;
-}
-
-static void
-download_request_cb(void *data, Evas_Object *obj, void *event_info)
-{
- Window_Data *wd = data;
- App_Data *ad = wd->app;
- Eina_Strbuf *full_path = eina_strbuf_new();
- Ewk_Download_Job *dl = event_info;
- const char *suggested_name = ewk_download_job_suggested_filename_get(dl);
-
- eina_strbuf_append_printf(full_path, "%s/%s", efreet_desktop_dir_get(), suggested_name);
- ewk_download_job_destination_set(dl, eina_strbuf_string_steal(full_path));
-
- ewk_object_ref(dl);
- ad->downloads = eina_list_append(ad->downloads, dl);
-
- if (eina_list_count(ad->downloads) == 1)
- ad->download_status_timer = ecore_timer_loop_add(1, download_status_cb, wd);
-
- download_status_cb(wd);
-}
-
-static void
-download_remove(Window_Data *wd, Ewk_Download_Job *dl)
-{
- App_Data *ad = wd->app;
-
- ewk_object_unref(dl);
- ad->downloads = eina_list_remove(ad->downloads, dl);
-
- if (eina_list_count(ad->downloads) == 0)
- ecore_timer_del(ad->download_status_timer);
-
- download_status_cb(wd);
-}
-
-static void
-download_finished_cb(void *data, Evas_Object *obj, void *event_info)
-{
- Window_Data *wd = data;
- Ewk_Download_Job *dl = event_info;
-
- download_remove(wd, dl);
-}
-
-static void
-download_failed_cb(void *data, Evas_Object *obj, void *event_info)
-{
- Arg a;
- Window_Data *wd = data;
- Ewk_Download_Job_Error *err = event_info;
- Ewk_Download_Job *dl = err->download_job;
-
- a.i = Error;
- a.s = strdup_printf("download of %s failed!",
- ewk_download_job_suggested_filename_get(dl));
- echo(&a, wd);
- free(a.s);
-
- download_remove(wd, dl);
-}
-
-static void
-download_cancelled_cb(void *data, Evas_Object *obj, void *event_info)
-{
- Arg a;
- Window_Data *wd = data;
- Ewk_Download_Job *dl = event_info;
-
- a.i = Info;
- a.s = strdup_printf("download %s cancelled", ewk_download_job_suggested_filename_get(dl));
- echo(&a, wd);
- free(a.s);
-
- download_remove(wd, dl);
-}
-
static void
title_changed_cb(void *data, Evas_Object *obj, void *event_info)
{
diff --git a/src/download.c b/src/download.c
@@ -0,0 +1,128 @@
+
+#include <Elementary.h>
+#include <EWebKit2.h>
+
+#include "viking_state.h"
+#include "viking.h"
+#include "download.h"
+
+static Eina_Bool
+download_status_cb(void *data)
+{
+ Ewk_Download_Job *dl;
+ Eina_List *l;
+
+ Window_Data *wd = data;
+ App_Data *ad = wd->app;
+ unsigned int dl_count = eina_list_count(ad->downloads);
+ Eina_Strbuf *buf = eina_strbuf_new();
+ double percent_done;
+
+ eina_strbuf_append_printf(buf, "%i DL", eina_list_count(ad->downloads));
+
+ percent_done = 0.0;
+ EINA_LIST_FOREACH(ad->downloads, l, dl)
+ percent_done += 100.0 * ewk_download_job_estimated_progress_get(dl);
+
+ percent_done /= (double)dl_count;
+
+ eina_strbuf_append_printf(buf, " (%.1f%%)", percent_done);
+
+ EINA_LIST_FOREACH(ad->windows, l, wd) {
+ if (dl_count == 0) {
+ evas_object_size_hint_weight_set(wd->downloads, 0.0, 0.0);
+ elm_object_text_set(wd->downloads, "");
+ }
+ else {
+ evas_object_size_hint_weight_set(wd->downloads, EVAS_HINT_EXPAND, 0.0);
+ elm_object_text_set(wd->downloads, eina_strbuf_string_get(buf));
+ }
+ }
+ eina_strbuf_free(buf);
+
+ return ECORE_CALLBACK_RENEW;
+}
+
+void
+download_request_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ Window_Data *wd = data;
+ App_Data *ad = wd->app;
+ Eina_Strbuf *full_path = eina_strbuf_new();
+ Ewk_Download_Job *dl = event_info;
+ const char *suggested_name = ewk_download_job_suggested_filename_get(dl);
+
+ eina_strbuf_append_printf(full_path, "%s/%s", efreet_desktop_dir_get(), suggested_name);
+ printf("download_request_cb() downloading to %s\n", eina_strbuf_string_get(full_path));
+ ewk_download_job_destination_set(dl, eina_strbuf_string_steal(full_path));
+
+ // ewk_object_ref(dl);
+ ad->downloads = eina_list_append(ad->downloads, dl);
+
+ if (eina_list_count(ad->downloads) == 1)
+ ad->download_status_timer = ecore_timer_loop_add(1, download_status_cb, wd);
+
+ download_status_cb(wd);
+}
+
+static void
+download_remove(Window_Data *wd, Ewk_Download_Job *dl)
+{
+ App_Data *ad = wd->app;
+
+ // ewk_object_unref(dl);
+ ad->downloads = eina_list_remove(ad->downloads, dl);
+
+ if (eina_list_count(ad->downloads) == 0)
+ ecore_timer_del(ad->download_status_timer);
+
+ download_status_cb(wd);
+}
+
+void
+download_finished_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ Window_Data *wd = data;
+ Ewk_Download_Job *dl = event_info;
+
+ download_remove(wd, dl);
+}
+
+void
+download_failed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ Window_Data *wd = data;
+ Ewk_Download_Job_Error *err = event_info;
+ Ewk_Download_Job *dl = err->download_job;
+
+ /*
+ Arg a;
+
+ a.i = Error;
+ a.s = strdup_printf("download of %s failed!",
+ ewk_download_job_suggested_filename_get(dl));
+ echo(&a, wd);
+ free(a.s);
+ */
+
+ download_remove(wd, dl);
+}
+
+void
+download_cancelled_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ Window_Data *wd = data;
+ Ewk_Download_Job *dl = event_info;
+
+ /*
+ Arg a;
+
+ a.i = Info;
+ a.s = strdup_printf("download %s cancelled", ewk_download_job_suggested_filename_get(dl));
+ echo(&a, wd);
+ free(a.s);
+ */
+
+ download_remove(wd, dl);
+}
+
diff --git a/src/download.h b/src/download.h
@@ -0,0 +1,6 @@
+
+void download_request_cb(void *data, Evas_Object *obj, void *event_info);
+void download_finished_cb(void *data, Evas_Object *obj, void *event_info);
+void download_failed_cb(void *data, Evas_Object *obj, void *event_info);
+void download_cancelled_cb(void *data, Evas_Object *obj, void *event_info);
+