Make the erase have a percentage complete.

This commit is contained in:
Jaime Thomas 2008-11-17 21:31:23 +00:00
parent 9571e941a6
commit 49b82794ff
4 changed files with 56 additions and 8 deletions

View File

@ -159,7 +159,7 @@ group {
rel1 { rel1 {
to: "progress_outline"; to: "progress_outline";
relative: 0.0 0.0; relative: 0.0 0.7;
offset: 5 5; offset: 5 5;
} }
@ -185,6 +185,39 @@ group {
} }
} }
part {
name: "progress_percent";
type: TEXT;
effect: SOFT_SHADOW;
description {
state: "default" 0.0;
fixed: 1 1;
color: 200 200 200 255;
color3: 20 20 20 255;
rel1 {
to: "progress_outline";
relative: 0.0 0.0;
offset: 5 5;
}
rel2 {
to: "progress_outline";
relative: 1.0 0.7;
offset: -6 -6;
}
text {
text: "0%";
font: "ecdb/default";
min: 1 1;
size: 72;
align: 0.5 0.5;
}
}
}
part { part {
name: "disabled_hack"; name: "disabled_hack";
type: RECT; type: RECT;

View File

@ -178,7 +178,7 @@ ecdb_drive_progress_update(void *data)
stat = burn_drive_get_status(drive, &p); stat = burn_drive_get_status(drive, &p);
if (stat == BURN_DRIVE_SPAWNING) if (stat == BURN_DRIVE_SPAWNING)
{ {
sleep(1); usleep(100000);
continue; continue;
} }
else if (stat == BURN_DRIVE_IDLE) else if (stat == BURN_DRIVE_IDLE)
@ -192,7 +192,7 @@ ecdb_drive_progress_update(void *data)
} }
ecore_pipe_write(proj->pipe, &p, sizeof(p)); ecore_pipe_write(proj->pipe, &p, sizeof(p));
sleep(1); usleep(100000);
} }
} }

View File

@ -95,24 +95,36 @@ ecdb_erase_progress_handler(void *data, void *buffer, unsigned int nbyte)
BurnProgress *p; BurnProgress *p;
Evas_Object *swallow; Evas_Object *swallow;
char buf[1024]; char buf[1024];
char *text = buffer; static int last_sector = 0;
if ((nbyte != sizeof(BurnProgress)) || (!strcmp(text, "AC"))) if ((nbyte != sizeof(BurnProgress)) || (!strcmp((char *)buffer, "AC")))
{ {
ecore_event_add(ECDB_DRIVE_ACTION_FINISHED, NULL, NULL, NULL); ecore_event_add(ECDB_DRIVE_ACTION_FINISHED, NULL, NULL, NULL);
last_sector = 0;
return; return;
} }
else else
{ {
p = buffer; p = buffer;
text = NULL;
} }
/* Libburn reports p->sector as being 0 right at the end of the job,
* so store the last sector and use that to determine the proper
* percentage/sector to set
*/
if (last_sector <= p->sector)
last_sector = p->sector;
else
last_sector = p->sectors;
swallow = evas_object_name_find(ecore_evas_get(em->main_win_ee), swallow = evas_object_name_find(ecore_evas_get(em->main_win_ee),
"erase_page"); "erase_page");
snprintf(buf, sizeof(buf), "%d/%d", p->sector, p->sectors); snprintf(buf, sizeof(buf), "%d/%d", last_sector, p->sectors);
printf("buf: %s\n", buf);
edje_object_part_text_set(swallow, "progress_text", buf); edje_object_part_text_set(swallow, "progress_text", buf);
snprintf(buf, sizeof(buf), "%d%%", (int)((double)(last_sector + 1) /
(double)p->sectors * 100.0));
edje_object_part_text_set(swallow, "progress_percent", buf);
} }
int int

View File

@ -356,6 +356,9 @@ ecdb_cb_erase_page_buttons_clicked(void *data, Evas_Object *o,
{ {
char *signal; char *signal;
edje_object_part_text_set(swallow, "progress_text",
"Begin Erase");
edje_object_part_text_set(swallow, "progress_percent", "0%");
signal = evas_object_data_get(swallow, "hide_signal"); signal = evas_object_data_get(swallow, "hide_signal");
edje_object_signal_emit(swallow, signal, "ecdb"); edje_object_signal_emit(swallow, signal, "ecdb");
ecdb_welcome_page_show(); ecdb_welcome_page_show();