* e_fm_op_registry : rename duration to eta

* e_fm_op : report sizes (done and total) now refer to the whole task, not the single file
 * e_fwin : better operation monitor label (and add a delay on delete)



SVN revision: 39787
This commit is contained in:
Davide Andreoli 2009-03-29 00:26:43 +00:00
parent f9b373fe0e
commit 44883d6cf0
4 changed files with 33 additions and 18 deletions

View File

@ -613,11 +613,11 @@ _e_fm2_op_registry_entry_print(const E_Fm2_Op_Registry_Entry *ere)
status = status_strings[0]; status = status_strings[0];
printf("id: %8d, op: %2d [%s] finished: %hhu, needs_attention: %hhu\n" printf("id: %8d, op: %2d [%s] finished: %hhu, needs_attention: %hhu\n"
" %3d%% (%8zd/%8zd), time: %10.0f + %5ds, xwin: %#x\n" " %3d%% (%8zd/%8zd), start_time: %10.0f, eta: %5ds, xwin: %#x\n"
" src=[%s]\n" " src=[%s]\n"
" dst=[%s]\n", " dst=[%s]\n",
ere->id, ere->op, status, ere->finished, ere->needs_attention, ere->id, ere->op, status, ere->finished, ere->needs_attention,
ere->percent, ere->done, ere->total, ere->start_time, ere->duration, ere->percent, ere->done, ere->total, ere->start_time, ere->eta,
e_fm2_op_registry_entry_xwin_get(ere), e_fm2_op_registry_entry_xwin_get(ere),
ere->src, ere->dst); ere->src, ere->dst);
} }
@ -2952,7 +2952,7 @@ e_fm2_client_data(Ecore_Ipc_Event_Client_Data *e)
ere->percent = percent; ere->percent = percent;
ere->done = done; ere->done = done;
ere->total = total; ere->total = total;
ere->duration = seconds; ere->eta = seconds;
e_fm2_op_registry_entry_files_set(ere, src, dst); e_fm2_op_registry_entry_files_set(ere, src, dst);
if (ere->percent == 100) if (ere->percent == 100)
{ {

View File

@ -998,7 +998,7 @@ _e_fm_op_update_progress(E_Fm_Op_Task *task, long long _plus_e_fm_op_done, long
peta = eta; peta = eta;
ptask = task; ptask = task;
_e_fm_op_update_progress_report(percent, eta, ctime - stime, _e_fm_op_update_progress_report(percent, eta, ctime - stime,
task->dst.done, task->src.st.st_size, _e_fm_op_done, _e_fm_op_total,
task->src.name, task->dst.name); task->src.name, task->dst.name);
} }
} }

View File

@ -28,7 +28,7 @@ struct _E_Fm2_Op_Registry_Entry
const char *src; /* stringshared */ const char *src; /* stringshared */
const char *dst; /* stringshared */ const char *dst; /* stringshared */
double start_time; double start_time;
int duration; /* XXX use double? */ int eta; /* XXX use double? */
E_Fm_Op_Type op; E_Fm_Op_Type op;
E_Fm2_Op_Status status; E_Fm2_Op_Status status;
Eina_Bool needs_attention:1; Eina_Bool needs_attention:1;

View File

@ -319,42 +319,46 @@ e_fwin_zone_find(E_Zone *zone)
/* e_fm_op_registry */ /* e_fm_op_registry */
static void static void
_e_fwin_op_registry_listener_cb(void *data, const E_Fm2_Op_Registry_Entry *ere) _e_fwin_op_registry_listener_cb(void *data, const E_Fm2_Op_Registry_Entry *ere)
{ {
Evas_Object *o = data; Evas_Object *o = data;
char buf[PATH_MAX]; char buf[PATH_MAX];
char *done, *total; char *total;
// Update element // Update element
edje_object_part_drag_size_set(o, "e.gauge.bar", ((double)(ere->percent)) / 100, 1.0); edje_object_part_drag_size_set(o, "e.gauge.bar", ((double)(ere->percent)) / 100, 1.0);
done = e_util_size_string_get(ere->done);
total = e_util_size_string_get(ere->total); total = e_util_size_string_get(ere->total);
switch (ere->op) switch (ere->op)
{ {
case E_FM_OP_COPY: case E_FM_OP_COPY:
edje_object_signal_emit(o, "e,action,icon,copy", "e"); edje_object_signal_emit(o, "e,action,icon,copy", "e");
if (ere->finished) if (ere->finished)
snprintf(buf, sizeof(buf), "Copy of %s complete", total, done); snprintf(buf, sizeof(buf), "Copy of %s done", total);
else else
snprintf(buf, sizeof(buf), "Copying %s (done %s)", total, done); snprintf(buf, sizeof(buf), "Copying %s (eta: %d sec)", total, ere->eta);
break; break;
case E_FM_OP_MOVE: case E_FM_OP_MOVE:
edje_object_signal_emit(o, "e,action,icon,move", "e"); edje_object_signal_emit(o, "e,action,icon,move", "e");
snprintf(buf, sizeof(buf), "Moving %s (done %s)", total, done); if (ere->finished)
snprintf(buf, sizeof(buf), "Move of %s done", total);
else
snprintf(buf, sizeof(buf), "Moving %s (eta: %d sec)", total, ere->eta);
break; break;
case E_FM_OP_REMOVE: case E_FM_OP_REMOVE:
edje_object_signal_emit(o, "e,action,icon,delete", "e"); edje_object_signal_emit(o, "e,action,icon,delete", "e");
snprintf(buf, sizeof(buf), "Deleting %s (done %s)", total, done); if (ere->finished)
snprintf(buf, sizeof(buf), "Delete done");
else
snprintf(buf, sizeof(buf), "Deleting %s (eta: %d sec", total, ere->eta);
break; break;
default: default:
edje_object_signal_emit(o, "e,action,icon,unknow", "e"); edje_object_signal_emit(o, "e,action,icon,unknow", "e");
snprintf(buf, sizeof(buf), "Unknow operation :/ (slave #%d)", ere->id); snprintf(buf, sizeof(buf), "Unknow operation from slave %d)", ere->id);
break; break;
} }
edje_object_part_text_set(o, "e.text.label1", buf); edje_object_part_text_set(o, "e.text.label1", buf);
if (ere->needs_attention) if (ere->needs_attention)
@ -362,13 +366,20 @@ _e_fwin_op_registry_listener_cb(void *data, const E_Fm2_Op_Registry_Entry *ere)
else else
edje_object_signal_emit(o, "e,action,set,normal", "e"); edje_object_signal_emit(o, "e,action,set,normal", "e");
E_FREE(done);
E_FREE(total); E_FREE(total);
} }
void _e_fwin_op_registry_free_data(void *data) static int
_e_fwin_op_registry_free_data_delayed(void *data)
{ {
evas_object_del((Evas_Object*)data); evas_object_del((Evas_Object*)data);
return ECORE_CALLBACK_CANCEL;
}
static void
_e_fwin_op_registry_free_data(void *data)
{
ecore_timer_add(5.0, _e_fwin_op_registry_free_data_delayed, data);
} }
static int static int
@ -379,7 +390,8 @@ _e_fwin_op_registry_entry_add_cb(void *data, int type, void *event)
Evas_Object *o; Evas_Object *o;
int mw, mh; int mw, mh;
if (!(ere->op == E_FM_OP_COPY || ere->op == E_FM_OP_MOVE)) if (!(ere->op == E_FM_OP_COPY || ere->op == E_FM_OP_MOVE ||
ere->op == E_FM_OP_REMOVE))
return ECORE_CALLBACK_RENEW; return ECORE_CALLBACK_RENEW;
o = edje_object_add(e_win_evas_get(fwin->win)); o = edje_object_add(e_win_evas_get(fwin->win));
@ -389,12 +401,15 @@ _e_fwin_op_registry_entry_add_cb(void *data, int type, void *event)
evas_object_resize(o, mw * e_scale, mh * e_scale); evas_object_resize(o, mw * e_scale, mh * e_scale);
//evas_object_event_callback_add(o, EVAS_CALLBACK_CHANGED_SIZE_HINTS, //evas_object_event_callback_add(o, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
// _size_hint_changed_cb, NULL); // _size_hint_changed_cb, NULL);
evas_object_show(o);
//Update the element
_e_fwin_op_registry_listener_cb(o, ere);
// Append the element to the box // Append the element to the box
edje_object_part_box_append(e_scrollframe_edje_object_get(fwin->scrollframe_obj), edje_object_part_box_append(e_scrollframe_edje_object_get(fwin->scrollframe_obj),
"e.box.operations", o); "e.box.operations", o);
evas_object_size_hint_align_set(o, 1.0, 1.0); //FIXME this should be theme-configurable evas_object_size_hint_align_set(o, 1.0, 1.0); //FIXME this should be theme-configurable
evas_object_show(o);
//Listen to progress changes //Listen to progress changes
e_fm2_op_registry_entry_listener_add(ere, _e_fwin_op_registry_listener_cb, e_fm2_op_registry_entry_listener_add(ere, _e_fwin_op_registry_listener_cb,