Data burning works somewhat nicely now... Also some misc memory leaks and small fixes.

This commit is contained in:
Jaime Thomas
2009-02-27 01:05:10 +00:00
parent 6367f59df8
commit 39ce45193b
3 changed files with 112 additions and 28 deletions

View File

@ -66,11 +66,13 @@ _page_hide_finished(void *data, Evas_Object *o,
const char *emission __UNUSED__,
const char *source __UNUSED__)
{
Evas_Object *gui;
Ecdb_Page *page = data;
Ecdb_Data_Project *proj;
gui = data;
edje_object_part_unswallow(gui, o);
evas_object_hide(o);
proj = evas_object_data_get(page->data, "proj");
edje_object_part_unswallow(page->gui, page->data);
evas_object_hide(page->data);
ewl_widget_hide(proj->filelist);
}
static void
@ -180,8 +182,11 @@ _button_cb_begin(void *data, Evas_Object *obj __UNUSED__,
proj->filelist_swallow, ECDB_BURN(proj)->speed_combo,
ECDB_PROJECT(proj)->ret, ECDB_PROJECT(proj)->begin,
NULL};
for (idx = 0; objs[idx]; idx++)
for (idx = 0; objs[idx] != NULL; idx++)
{
edje_object_signal_emit(objs[idx], "ecdb,disable", "ecdb");
printf("disabling controls...\n");
}
return;
case ECDB_ERROR_IMAGE_CREATE:
@ -503,7 +508,6 @@ ecdb_burn_data_page_show(Ecdb_Page *page)
Ecdb_Drive_Info *drive;
Evas_Coord x, y, w, h;
Ewl_Widget *embed;
Ecdb_Source *src;
Ecdb_Data_Project *proj;
Ecdb_Burn_Project *bup;
Ecdb_Project *bp;
@ -516,7 +520,7 @@ ecdb_burn_data_page_show(Ecdb_Page *page)
edje_object_part_swallow(page->gui, "action_area", page->data);
edje_object_signal_callback_add(page->data, "hide,finished",
"burn_data_page",
_page_hide_finished, page->gui);
_page_hide_finished, page);
evas_object_show(page->data);
proj = ecdb_data_project_new();
@ -573,13 +577,11 @@ ecdb_burn_data_page_show(Ecdb_Page *page)
_update_capacity, page);
ewl_widget_show(proj->filelist);
src = ecdb_source_new();
ewl_widget_data_set(proj->filelist, "source", src);
/* Add a delete callback so we can correctly free data that won't get
* handled automatically
*/
evas_object_event_callback_add(page->data, EVAS_CALLBACK_DEL, _page_del,
src);
bup->files);
edje_object_part_geometry_get(page->data, "ecdb/burn_data/filelist",
&x, &y, &w, &h);
@ -592,7 +594,7 @@ ecdb_burn_data_page_show(Ecdb_Page *page)
evas_object_show(proj->filelist_swallow);
proj->capacity = ecdb_capacity_add(page->data, "ecdb/burn_data/capacity");
evas_object_data_set(proj->capacity, "src", src);
evas_object_data_set(proj->capacity, "src", bup->files);
evas_object_show(proj->capacity);
t = ecdb_config_inwin_add(page->data, NULL);
@ -680,6 +682,8 @@ ecdb_burn_data_page_show(Ecdb_Page *page)
{
edje_object_part_swallow(page->gui, "action_area", page->data);
evas_object_show(page->data);
ewl_widget_show(ECDB_DATA(evas_object_data_get(page->data, "proj"))
->filelist);
}
edje_object_signal_emit(page->gui, "ecdb,burn_data_page,visible", "ecdb");
@ -690,7 +694,7 @@ void
ecdb_burn_data_cleanup(Ecdb_Page *page)
{
Ewl_Widget *filelist;
Ecdb_Source *src;
Ecdb_Source *src, *t;
Ecdb_Data_Project *proj;
int i;
@ -711,8 +715,8 @@ ecdb_burn_data_cleanup(Ecdb_Page *page)
proj->filelist_swallow, ECDB_BURN(proj)->speed_combo,
ECDB_PROJECT(proj)->ret, ECDB_PROJECT(proj)->begin,
NULL};
for (i = 0; objs[i]; i++)
edje_object_signal_emit(objs[i], "ecdb,disable", "ecdb");
for (i = 0; objs[i] != NULL; i++)
edje_object_signal_emit(objs[i], "ecdb,enable", "ecdb");
edje_object_signal_emit(page->data, "ecdb,burn_data,start", "ecdb");
edje_object_part_text_set(page->data, "progress_text", "Burn Complete!");
@ -725,8 +729,16 @@ ecdb_burn_data_cleanup(Ecdb_Page *page)
for (i = 0; i < src->num_children; i++)
{
ecdb_source_child_remove(src, src->children[i]);
ecdb_source_destroy(src->children[i]);
t = src->children[i];
ecdb_source_child_remove(src, t);
ecdb_source_destroy(t);
}
/* Make sure, of course, to refresh the capacity and the filelist
* after finishing the burn
*/
ewl_mvc_dirty_set(EWL_MVC(EWL_FILELIST(proj->filelist)->controller), TRUE);
ewl_callback_call_with_event_data(proj->filelist, ECDB_FILELIST_SIZE_CHANGED,
src);
}