|
|
|
@ -18,6 +18,8 @@ static long _memory_used = 0; |
|
|
|
|
|
|
|
|
|
static void _disk_view_update(Ui *ui); |
|
|
|
|
static void _extra_view_update(Ui *ui, results_t *results); |
|
|
|
|
static void _cpu_view_update(Ui *ui, results_t *results); |
|
|
|
|
static void _memory_view_update(Ui *ui, results_t *results); |
|
|
|
|
|
|
|
|
|
static void |
|
|
|
|
_system_stats_thread(void *data, Ecore_Thread *thread) |
|
|
|
@ -51,9 +53,14 @@ _system_stats_thread_feedback_cb(void *data, Ecore_Thread *thread, void *msg) |
|
|
|
|
double cpu_usage = 0.0; |
|
|
|
|
int i; |
|
|
|
|
|
|
|
|
|
if (ecore_thread_check(thread)) |
|
|
|
|
return; |
|
|
|
|
|
|
|
|
|
ui = data; |
|
|
|
|
results = msg; |
|
|
|
|
|
|
|
|
|
_cpu_view_update(ui, results); |
|
|
|
|
_memory_view_update(ui, results); |
|
|
|
|
_disk_view_update(ui); |
|
|
|
|
_extra_view_update(ui, results); |
|
|
|
|
|
|
|
|
@ -947,19 +954,17 @@ _progress_outgoing_format_free_cb(char *str) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void |
|
|
|
|
_extra_view_update(Ui *ui, results_t *results) |
|
|
|
|
_cpu_view_update(Ui *ui, results_t *results) |
|
|
|
|
{ |
|
|
|
|
Evas_Object *box, *frame, *progress; |
|
|
|
|
int i; |
|
|
|
|
|
|
|
|
|
if (!ui->extra_visible) |
|
|
|
|
if (!ui->cpu_visible) |
|
|
|
|
return; |
|
|
|
|
|
|
|
|
|
_results = results; |
|
|
|
|
|
|
|
|
|
elm_box_clear(ui->extra_activity); |
|
|
|
|
elm_box_clear(ui->cpu_activity); |
|
|
|
|
|
|
|
|
|
box = elm_box_add(ui->disk_activity); |
|
|
|
|
box = elm_box_add(ui->content); |
|
|
|
|
evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL); |
|
|
|
|
evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); |
|
|
|
|
evas_object_show(box); |
|
|
|
@ -988,6 +993,114 @@ _extra_view_update(Ui *ui, results_t *results) |
|
|
|
|
elm_box_pack_end(box, frame); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
elm_box_pack_end(ui->cpu_activity, box); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void |
|
|
|
|
_memory_view_update(Ui *ui, results_t *results) |
|
|
|
|
{ |
|
|
|
|
Evas_Object *box, *frame, *progress; |
|
|
|
|
double ratio, value; |
|
|
|
|
|
|
|
|
|
if (!ui->mem_visible) |
|
|
|
|
return; |
|
|
|
|
|
|
|
|
|
elm_box_clear(ui->mem_activity); |
|
|
|
|
|
|
|
|
|
box = elm_box_add(ui->content); |
|
|
|
|
evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL); |
|
|
|
|
evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); |
|
|
|
|
evas_object_show(box); |
|
|
|
|
|
|
|
|
|
frame = elm_frame_add(box); |
|
|
|
|
evas_object_size_hint_align_set(frame, EVAS_HINT_FILL, 0); |
|
|
|
|
evas_object_size_hint_weight_set(frame, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); |
|
|
|
|
elm_object_text_set(frame, "Memory Used"); |
|
|
|
|
evas_object_show(frame); |
|
|
|
|
progress = elm_progressbar_add(frame); |
|
|
|
|
evas_object_size_hint_align_set(progress, EVAS_HINT_FILL, EVAS_HINT_FILL); |
|
|
|
|
evas_object_size_hint_weight_set(progress, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); |
|
|
|
|
elm_progressbar_span_size_set(progress, 1.0); |
|
|
|
|
elm_progressbar_unit_format_set(progress, eina_slstr_printf("%lu M / %lu M", results->memory.used, results->memory.total)); |
|
|
|
|
ratio = results->memory.total / 100.0; |
|
|
|
|
value = results->memory.used / ratio; |
|
|
|
|
elm_progressbar_value_set(progress, value / 100); |
|
|
|
|
evas_object_show(progress); |
|
|
|
|
elm_object_content_set(frame, progress); |
|
|
|
|
elm_box_pack_end(box, frame); |
|
|
|
|
|
|
|
|
|
frame = elm_frame_add(box); |
|
|
|
|
evas_object_size_hint_align_set(frame, EVAS_HINT_FILL, 0); |
|
|
|
|
evas_object_size_hint_weight_set(frame, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); |
|
|
|
|
elm_object_text_set(frame, "Memory Cached"); |
|
|
|
|
evas_object_show(frame); |
|
|
|
|
progress = elm_progressbar_add(frame); |
|
|
|
|
evas_object_size_hint_align_set(progress, EVAS_HINT_FILL, EVAS_HINT_FILL); |
|
|
|
|
evas_object_size_hint_weight_set(progress, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); |
|
|
|
|
elm_progressbar_span_size_set(progress, 1.0); |
|
|
|
|
elm_progressbar_unit_format_set(progress, eina_slstr_printf("%lu M / %lu M", results->memory.cached, results->memory.total)); |
|
|
|
|
ratio = results->memory.total / 100.0; |
|
|
|
|
value = results->memory.cached / ratio; |
|
|
|
|
elm_progressbar_value_set(progress, value / 100); |
|
|
|
|
evas_object_show(progress); |
|
|
|
|
elm_object_content_set(frame, progress); |
|
|
|
|
elm_box_pack_end(box, frame); |
|
|
|
|
|
|
|
|
|
frame = elm_frame_add(box); |
|
|
|
|
evas_object_size_hint_align_set(frame, EVAS_HINT_FILL, 0); |
|
|
|
|
evas_object_size_hint_weight_set(frame, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); |
|
|
|
|
elm_object_text_set(frame, "Memory Buffered"); |
|
|
|
|
evas_object_show(frame); |
|
|
|
|
progress = elm_progressbar_add(frame); |
|
|
|
|
evas_object_size_hint_align_set(progress, EVAS_HINT_FILL, EVAS_HINT_FILL); |
|
|
|
|
evas_object_size_hint_weight_set(progress, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); |
|
|
|
|
elm_progressbar_span_size_set(progress, 1.0); |
|
|
|
|
elm_progressbar_unit_format_set(progress, eina_slstr_printf("%lu M / %lu M", results->memory.buffered, results->memory.total)); |
|
|
|
|
ratio = results->memory.total / 100.0; |
|
|
|
|
value = results->memory.buffered / ratio; |
|
|
|
|
elm_progressbar_value_set(progress, value / 100); |
|
|
|
|
evas_object_show(progress); |
|
|
|
|
elm_object_content_set(frame, progress); |
|
|
|
|
elm_box_pack_end(box, frame); |
|
|
|
|
|
|
|
|
|
frame = elm_frame_add(box); |
|
|
|
|
evas_object_size_hint_align_set(frame, EVAS_HINT_FILL, 0); |
|
|
|
|
evas_object_size_hint_weight_set(frame, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); |
|
|
|
|
elm_object_text_set(frame, "Memory Shared"); |
|
|
|
|
evas_object_show(frame); |
|
|
|
|
progress = elm_progressbar_add(frame); |
|
|
|
|
evas_object_size_hint_align_set(progress, EVAS_HINT_FILL, EVAS_HINT_FILL); |
|
|
|
|
evas_object_size_hint_weight_set(progress, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); |
|
|
|
|
elm_progressbar_span_size_set(progress, 1.0); |
|
|
|
|
elm_progressbar_unit_format_set(progress, eina_slstr_printf("%lu M / %lu M", results->memory.shared, results->memory.total)); |
|
|
|
|
ratio = results->memory.total / 100.0; |
|
|
|
|
value = results->memory.shared / ratio; |
|
|
|
|
elm_progressbar_value_set(progress, value / 100); |
|
|
|
|
evas_object_show(progress); |
|
|
|
|
elm_object_content_set(frame, progress); |
|
|
|
|
elm_box_pack_end(box, frame); |
|
|
|
|
|
|
|
|
|
elm_box_pack_end(ui->mem_activity, box); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void |
|
|
|
|
_extra_view_update(Ui *ui, results_t *results) |
|
|
|
|
{ |
|
|
|
|
Evas_Object *box, *frame, *progress; |
|
|
|
|
int i; |
|
|
|
|
|
|
|
|
|
if (!ui->extra_visible) |
|
|
|
|
return; |
|
|
|
|
|
|
|
|
|
_results = results; |
|
|
|
|
|
|
|
|
|
elm_box_clear(ui->extra_activity); |
|
|
|
|
|
|
|
|
|
box = elm_box_add(ui->content); |
|
|
|
|
evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL); |
|
|
|
|
evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); |
|
|
|
|
evas_object_show(box); |
|
|
|
|
|
|
|
|
|
if (results->power.battery_count) |
|
|
|
|
{ |
|
|
|
|
frame = elm_frame_add(box); |
|
|
|
@ -1059,7 +1172,6 @@ _extra_view_update(Ui *ui, results_t *results) |
|
|
|
|
elm_box_pack_end(ui->extra_activity, box); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static void |
|
|
|
|
_ui_system_view_add(Ui *ui) |
|
|
|
|
{ |
|
|
|
@ -1701,6 +1813,95 @@ _ui_extra_view_add(Ui *ui) |
|
|
|
|
elm_box_pack_end(box, frame); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void |
|
|
|
|
_ui_cpu_view_add(Ui *ui) |
|
|
|
|
{ |
|
|
|
|
Evas_Object *parent, *box, *hbox, *frame, *scroller; |
|
|
|
|
|
|
|
|
|
parent = ui->content; |
|
|
|
|
|
|
|
|
|
ui->cpu_view = box = elm_box_add(parent); |
|
|
|
|
evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); |
|
|
|
|
evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL); |
|
|
|
|
elm_table_pack(ui->content, ui->cpu_view, 0, 1, 1, 1); |
|
|
|
|
evas_object_hide(box); |
|
|
|
|
|
|
|
|
|
ui->cpu_activity = hbox = elm_box_add(box); |
|
|
|
|
evas_object_size_hint_weight_set(hbox, EVAS_HINT_EXPAND, 0); |
|
|
|
|
evas_object_size_hint_align_set(hbox, EVAS_HINT_FILL, EVAS_HINT_FILL); |
|
|
|
|
evas_object_show(hbox); |
|
|
|
|
|
|
|
|
|
frame = elm_frame_add(box); |
|
|
|
|
evas_object_size_hint_weight_set(frame, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); |
|
|
|
|
evas_object_size_hint_align_set(frame, EVAS_HINT_FILL, EVAS_HINT_FILL); |
|
|
|
|
elm_object_text_set(frame, "CPU"); |
|
|
|
|
evas_object_show(frame); |
|
|
|
|
|
|
|
|
|
scroller = elm_scroller_add(parent); |
|
|
|
|
evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); |
|
|
|
|
evas_object_size_hint_align_set(scroller, EVAS_HINT_FILL, EVAS_HINT_FILL); |
|
|
|
|
elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_ON); |
|
|
|
|
evas_object_show(scroller); |
|
|
|
|
elm_object_content_set(scroller, hbox); |
|
|
|
|
|
|
|
|
|
elm_object_content_set(frame, scroller); |
|
|
|
|
elm_box_pack_end(box, frame); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void |
|
|
|
|
_ui_memory_view_add(Ui *ui) |
|
|
|
|
{ |
|
|
|
|
Evas_Object *parent, *box, *hbox, *frame, *scroller; |
|
|
|
|
|
|
|
|
|
parent = ui->content; |
|
|
|
|
|
|
|
|
|
ui->mem_view = box = elm_box_add(parent); |
|
|
|
|
evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); |
|
|
|
|
evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL); |
|
|
|
|
elm_table_pack(ui->content, ui->mem_view, 0, 1, 1, 1); |
|
|
|
|
evas_object_hide(box); |
|
|
|
|
|
|
|
|
|
ui->mem_activity = hbox = elm_box_add(box); |
|
|
|
|
evas_object_size_hint_weight_set(hbox, EVAS_HINT_EXPAND, 0); |
|
|
|
|
evas_object_size_hint_align_set(hbox, EVAS_HINT_FILL, EVAS_HINT_FILL); |
|
|
|
|
evas_object_show(hbox); |
|
|
|
|
|
|
|
|
|
frame = elm_frame_add(box); |
|
|
|
|
evas_object_size_hint_weight_set(frame, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); |
|
|
|
|
evas_object_size_hint_align_set(frame, EVAS_HINT_FILL, EVAS_HINT_FILL); |
|
|
|
|
elm_object_text_set(frame, "Memory"); |
|
|
|
|
evas_object_show(frame); |
|
|
|
|
|
|
|
|
|
scroller = elm_scroller_add(parent); |
|
|
|
|
evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); |
|
|
|
|
evas_object_size_hint_align_set(scroller, EVAS_HINT_FILL, EVAS_HINT_FILL); |
|
|
|
|
elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_ON); |
|
|
|
|
evas_object_show(scroller); |
|
|
|
|
elm_object_content_set(scroller, hbox); |
|
|
|
|
|
|
|
|
|
elm_object_content_set(frame, scroller); |
|
|
|
|
elm_box_pack_end(box, frame); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void |
|
|
|
|
_tab_memory_activity_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) |
|
|
|
|
{ |
|
|
|
|
Ui *ui; |
|
|
|
|
|
|
|
|
|
ui = data; |
|
|
|
|
|
|
|
|
|
ui->mem_visible = EINA_TRUE; |
|
|
|
|
ui->extra_visible = EINA_FALSE; |
|
|
|
|
ui->disk_visible = EINA_FALSE; |
|
|
|
|
ui->cpu_visible = EINA_FALSE; |
|
|
|
|
|
|
|
|
|
evas_object_show(ui->mem_view); |
|
|
|
|
evas_object_hide(ui->system_activity); |
|
|
|
|
evas_object_hide(ui->panel); |
|
|
|
|
evas_object_hide(ui->disk_view); |
|
|
|
|
evas_object_hide(ui->extra_view); |
|
|
|
|
evas_object_hide(ui->cpu_view); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void |
|
|
|
|
_tab_system_activity_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) |
|
|
|
@ -1711,11 +1912,15 @@ _tab_system_activity_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void * |
|
|
|
|
|
|
|
|
|
ui->extra_visible = EINA_FALSE; |
|
|
|
|
ui->disk_visible = EINA_FALSE; |
|
|
|
|
ui->cpu_visible = EINA_FALSE; |
|
|
|
|
ui->mem_visible = EINA_FALSE; |
|
|
|
|
|
|
|
|
|
evas_object_show(ui->system_activity); |
|
|
|
|
evas_object_show(ui->panel); |
|
|
|
|
evas_object_hide(ui->disk_view); |
|
|
|
|
evas_object_hide(ui->extra_view); |
|
|
|
|
evas_object_hide(ui->cpu_view); |
|
|
|
|
evas_object_hide(ui->mem_view); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void |
|
|
|
@ -1727,11 +1932,15 @@ _tab_disk_activity_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *ev |
|
|
|
|
|
|
|
|
|
ui->extra_visible = EINA_FALSE; |
|
|
|
|
ui->disk_visible = EINA_TRUE; |
|
|
|
|
ui->cpu_visible = EINA_FALSE; |
|
|
|
|
ui->mem_visible = EINA_FALSE; |
|
|
|
|
|
|
|
|
|
evas_object_show(ui->disk_view); |
|
|
|
|
evas_object_hide(ui->system_activity); |
|
|
|
|
evas_object_hide(ui->panel); |
|
|
|
|
evas_object_hide(ui->extra_view); |
|
|
|
|
evas_object_hide(ui->cpu_view); |
|
|
|
|
evas_object_hide(ui->mem_view); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void |
|
|
|
@ -1743,11 +1952,35 @@ _tab_extra_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info |
|
|
|
|
|
|
|
|
|
ui->extra_visible = EINA_TRUE; |
|
|
|
|
ui->disk_visible = EINA_FALSE; |
|
|
|
|
ui->cpu_visible = EINA_FALSE; |
|
|
|
|
ui->mem_visible = EINA_FALSE; |
|
|
|
|
|
|
|
|
|
evas_object_show(ui->extra_view); |
|
|
|
|
evas_object_hide(ui->system_activity); |
|
|
|
|
evas_object_hide(ui->panel); |
|
|
|
|
evas_object_hide(ui->disk_view); |
|
|
|
|
evas_object_hide(ui->cpu_view); |
|
|
|
|
evas_object_hide(ui->mem_view); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void |
|
|
|
|
_tab_cpu_activity_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) |
|
|
|
|
{ |
|
|
|
|
Ui *ui; |
|
|
|
|
|
|
|
|
|
ui = data; |
|
|
|
|
|
|
|
|
|
ui->mem_visible = EINA_FALSE; |
|
|
|
|
ui->extra_visible = EINA_FALSE; |
|
|
|
|
ui->disk_visible = EINA_FALSE; |
|
|
|
|
ui->cpu_visible = EINA_TRUE; |
|
|
|
|
|
|
|
|
|
evas_object_show(ui->cpu_view); |
|
|
|
|
evas_object_hide(ui->extra_view); |
|
|
|
|
evas_object_hide(ui->system_activity); |
|
|
|
|
evas_object_hide(ui->panel); |
|
|
|
|
evas_object_hide(ui->disk_view); |
|
|
|
|
evas_object_hide(ui->mem_view); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static Evas_Object * |
|
|
|
@ -1785,7 +2018,23 @@ _ui_tabs_add(Evas_Object *parent, Ui *ui) |
|
|
|
|
button = elm_button_add(hbox); |
|
|
|
|
evas_object_size_hint_weight_set(button, 1.0, EVAS_HINT_EXPAND); |
|
|
|
|
evas_object_size_hint_align_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL); |
|
|
|
|
elm_object_text_set(button, "Disk Usage"); |
|
|
|
|
elm_object_text_set(button, "CPU"); |
|
|
|
|
evas_object_show(button); |
|
|
|
|
elm_box_pack_end(hbox, button); |
|
|
|
|
evas_object_smart_callback_add(button, "clicked", _tab_cpu_activity_clicked_cb, ui); |
|
|
|
|
|
|
|
|
|
button = elm_button_add(hbox); |
|
|
|
|
evas_object_size_hint_weight_set(button, 1.0, EVAS_HINT_EXPAND); |
|
|
|
|
evas_object_size_hint_align_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL); |
|
|
|
|
elm_object_text_set(button, "Memory"); |
|
|
|
|
evas_object_show(button); |
|
|
|
|
elm_box_pack_end(hbox, button); |
|
|
|
|
evas_object_smart_callback_add(button, "clicked", _tab_memory_activity_clicked_cb, ui); |
|
|
|
|
|
|
|
|
|
button = elm_button_add(hbox); |
|
|
|
|
evas_object_size_hint_weight_set(button, 1.0, EVAS_HINT_EXPAND); |
|
|
|
|
evas_object_size_hint_align_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL); |
|
|
|
|
elm_object_text_set(button, "Storage"); |
|
|
|
|
evas_object_show(button); |
|
|
|
|
elm_box_pack_end(hbox, button); |
|
|
|
|
evas_object_smart_callback_add(button, "clicked", _tab_disk_activity_clicked_cb, ui); |
|
|
|
@ -1842,7 +2091,7 @@ ui_add(Evas_Object *parent) |
|
|
|
|
ui->selected_pid = -1; |
|
|
|
|
ui->program_pid = getpid(); |
|
|
|
|
ui->panel_visible = EINA_TRUE; |
|
|
|
|
ui->disk_visible = ui->extra_visible = EINA_TRUE; |
|
|
|
|
ui->disk_visible = ui->cpu_visible = ui->mem_visible = ui->extra_visible = EINA_TRUE; |
|
|
|
|
|
|
|
|
|
memset(ui->cpu_times, 0, PID_MAX * sizeof(int64_t)); |
|
|
|
|
|
|
|
|
@ -1860,6 +2109,8 @@ ui_add(Evas_Object *parent) |
|
|
|
|
/* Setup the user interfeace */ |
|
|
|
|
_ui_system_view_add(ui); |
|
|
|
|
_ui_process_panel_add(ui); |
|
|
|
|
_ui_cpu_view_add(ui); |
|
|
|
|
_ui_memory_view_add(ui); |
|
|
|
|
_ui_disk_view_add(ui); |
|
|
|
|
_ui_extra_view_add(ui); |
|
|
|
|
|
|
|
|
|