evisum: Traditional
Make the UI simpler. Give everything a window. It's not clever to only allow one action at a time. I think it seemed cool because every other environment is simplifying the interface. I don't really agree with this. Also some "tabs" don't currently justify having the whole window. hashtag **** it!
This commit is contained in:
parent
3e0dfd9d7d
commit
35323ea227
|
@ -90,6 +90,9 @@ system_cpu_usage_delayed_get(int *ncpu, int usecs);
|
||||||
void
|
void
|
||||||
system_memory_usage_get(meminfo_t *memory);
|
system_memory_usage_get(meminfo_t *memory);
|
||||||
|
|
||||||
|
sensor_t **
|
||||||
|
system_sensors_thermal_get(int *count);
|
||||||
|
|
||||||
void
|
void
|
||||||
system_power_state_get(power_t *power);
|
system_power_state_get(power_t *power);
|
||||||
|
|
||||||
|
|
246
src/bin/ui/ui.c
246
src/bin/ui/ui.c
|
@ -715,7 +715,7 @@ _btn_state_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_btn_quit_clicked_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
_quit_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
||||||
void *event_info EINA_UNUSED)
|
void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
exit(0);
|
exit(0);
|
||||||
|
@ -903,7 +903,7 @@ _item_pid_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_ui_tab_system_add(Ui *ui)
|
_ui_content_system_add(Ui *ui)
|
||||||
{
|
{
|
||||||
Evas_Object *parent, *box, *hbox, *frame, *table;
|
Evas_Object *parent, *box, *hbox, *frame, *table;
|
||||||
Evas_Object *pb, *button, *plist;
|
Evas_Object *pb, *button, *plist;
|
||||||
|
@ -911,7 +911,7 @@ _ui_tab_system_add(Ui *ui)
|
||||||
|
|
||||||
parent = ui->content;
|
parent = ui->content;
|
||||||
|
|
||||||
ui->system_activity = ui->current_view = box = elm_box_add(parent);
|
ui->system_activity = box = elm_box_add(parent);
|
||||||
evas_object_size_hint_weight_set(box, EXPAND, EXPAND);
|
evas_object_size_hint_weight_set(box, EXPAND, EXPAND);
|
||||||
evas_object_size_hint_align_set(box, FILL, FILL);
|
evas_object_size_hint_align_set(box, FILL, FILL);
|
||||||
evas_object_show(box);
|
evas_object_show(box);
|
||||||
|
@ -1028,6 +1028,7 @@ _ui_tab_system_add(Ui *ui)
|
||||||
evas_object_size_hint_weight_set(plist, EXPAND, EXPAND);
|
evas_object_size_hint_weight_set(plist, EXPAND, EXPAND);
|
||||||
evas_object_size_hint_align_set(plist, FILL, FILL);
|
evas_object_size_hint_align_set(plist, FILL, FILL);
|
||||||
evas_object_show(plist);
|
evas_object_show(plist);
|
||||||
|
elm_win_resize_object_add(ui->win, plist);
|
||||||
|
|
||||||
elm_box_pack_end(box, table);
|
elm_box_pack_end(box, table);
|
||||||
elm_box_pack_end(box, plist);
|
elm_box_pack_end(box, plist);
|
||||||
|
@ -1055,111 +1056,46 @@ _ui_tab_system_add(Ui *ui)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_tabs_hide(Ui *ui)
|
_about_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
|
||||||
|
void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
ui->mem_visible = EINA_FALSE;
|
|
||||||
ui->misc_visible = EINA_FALSE;
|
|
||||||
ui->disk_visible = EINA_FALSE;
|
|
||||||
ui->cpu_visible = EINA_FALSE;
|
|
||||||
|
|
||||||
evas_object_hide(ui->entry_search_border);
|
|
||||||
evas_object_hide(ui->system_activity);
|
|
||||||
evas_object_hide(ui->cpu_view);
|
|
||||||
evas_object_hide(ui->mem_view);
|
|
||||||
evas_object_hide(ui->disk_view);
|
|
||||||
evas_object_hide(ui->misc_view);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_transit_del_cb(void *data, Elm_Transit *transit)
|
_menu_memory_activity_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
|
||||||
{
|
|
||||||
Ui *ui = data;
|
|
||||||
|
|
||||||
ui->transit = transit = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_tab_state_changed(Ui *ui, Evas_Object *btn_active, Evas_Object *view)
|
|
||||||
{
|
|
||||||
Elm_Transit *transit;
|
|
||||||
|
|
||||||
if (ui->transit) return;
|
|
||||||
|
|
||||||
elm_object_disabled_set(ui->btn_general, EINA_FALSE);
|
|
||||||
elm_object_disabled_set(ui->btn_cpu, EINA_FALSE);
|
|
||||||
elm_object_disabled_set(ui->btn_mem, EINA_FALSE);
|
|
||||||
elm_object_disabled_set(ui->btn_storage, EINA_FALSE);
|
|
||||||
elm_object_disabled_set(ui->btn_misc, EINA_FALSE);
|
|
||||||
elm_object_disabled_set(btn_active, EINA_TRUE);
|
|
||||||
|
|
||||||
_tabs_hide(ui);
|
|
||||||
|
|
||||||
evas_object_show(view);
|
|
||||||
|
|
||||||
ui->transit = transit = elm_transit_add();
|
|
||||||
elm_transit_object_add(transit, ui->current_view);
|
|
||||||
elm_transit_object_add(transit, view);
|
|
||||||
elm_transit_duration_set(transit, 0.5);
|
|
||||||
elm_transit_effect_blend_add(transit);
|
|
||||||
elm_transit_del_cb_set(transit, _transit_del_cb, ui);
|
|
||||||
elm_transit_go(transit);
|
|
||||||
|
|
||||||
ui->current_view = view;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_tab_memory_activity_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
|
|
||||||
void *event_info EINA_UNUSED)
|
void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Ui *ui = data;
|
Ui *ui = data;
|
||||||
|
|
||||||
_tab_state_changed(ui, obj, ui->mem_view);
|
ui_win_memory_add(ui);
|
||||||
|
|
||||||
ui->mem_visible = EINA_TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_tab_system_activity_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
|
_menu_disk_activity_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
|
||||||
void *event_info EINA_UNUSED)
|
void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Ui *ui = data;
|
Ui *ui = data;
|
||||||
|
|
||||||
_tab_state_changed(ui, obj, ui->system_activity);
|
ui_win_disk_add(ui);
|
||||||
|
|
||||||
evas_object_show(ui->entry_search_border);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_tab_disk_activity_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
|
_menu_misc_activity_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
|
||||||
void *event_info EINA_UNUSED)
|
void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Ui *ui = data;
|
Ui *ui = data;
|
||||||
|
|
||||||
_tab_state_changed(ui, obj, ui->disk_view);
|
ui_win_misc_add(ui);
|
||||||
|
|
||||||
ui->disk_visible = EINA_TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_tab_misc_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
|
_menu_cpu_activity_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
|
||||||
void *event_info EINA_UNUSED)
|
void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Ui *ui = data;
|
Ui *ui = data;
|
||||||
|
|
||||||
_tab_state_changed(ui, obj, ui->misc_view);
|
ui_win_cpu_add(ui);
|
||||||
|
|
||||||
ui->misc_visible = EINA_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_tab_cpu_activity_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
|
|
||||||
void *event_info EINA_UNUSED)
|
|
||||||
{
|
|
||||||
Ui *ui = data;
|
|
||||||
|
|
||||||
_tab_state_changed(ui, obj, ui->cpu_view);
|
|
||||||
|
|
||||||
ui->cpu_visible = EINA_TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -1199,9 +1135,9 @@ _evisum_search_keypress_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj,
|
||||||
}
|
}
|
||||||
|
|
||||||
static Evas_Object *
|
static Evas_Object *
|
||||||
_ui_tabs_add(Evas_Object *parent, Ui *ui)
|
_ui_content_add(Evas_Object *parent, Ui *ui)
|
||||||
{
|
{
|
||||||
Evas_Object *table, *box, *entry, *hbox, *frame, *btn;
|
Evas_Object *table, *box, *entry, *hbox, *frame;
|
||||||
Evas_Object *border;
|
Evas_Object *border;
|
||||||
|
|
||||||
ui->content = table = elm_table_add(parent);
|
ui->content = table = elm_table_add(parent);
|
||||||
|
@ -1213,89 +1149,9 @@ _ui_tabs_add(Evas_Object *parent, Ui *ui)
|
||||||
frame = elm_frame_add(parent);
|
frame = elm_frame_add(parent);
|
||||||
evas_object_size_hint_weight_set(frame, EXPAND, 0);
|
evas_object_size_hint_weight_set(frame, EXPAND, 0);
|
||||||
evas_object_size_hint_align_set(frame, FILL, FILL);
|
evas_object_size_hint_align_set(frame, FILL, FILL);
|
||||||
elm_object_text_set(frame, _("Options"));
|
elm_object_style_set(frame, "pad_small");
|
||||||
elm_object_style_set(frame, "pad_medium");
|
|
||||||
evas_object_show(frame);
|
evas_object_show(frame);
|
||||||
|
|
||||||
hbox = elm_box_add(parent);
|
|
||||||
evas_object_size_hint_weight_set(hbox, EXPAND, EXPAND);
|
|
||||||
evas_object_size_hint_align_set(hbox, FILL, FILL);
|
|
||||||
elm_box_horizontal_set(hbox, EINA_TRUE);
|
|
||||||
evas_object_show(hbox);
|
|
||||||
|
|
||||||
border = elm_frame_add(parent);
|
|
||||||
evas_object_size_hint_weight_set(border, EXPAND, EXPAND);
|
|
||||||
evas_object_size_hint_align_set(border, FILL, FILL);
|
|
||||||
elm_object_style_set(border, "pad_small");
|
|
||||||
elm_box_pack_end(hbox, border);
|
|
||||||
evas_object_show(border);
|
|
||||||
|
|
||||||
border = elm_frame_add(parent);
|
|
||||||
evas_object_size_hint_weight_set(border, 0, EXPAND);
|
|
||||||
evas_object_size_hint_align_set(border, FILL, FILL);
|
|
||||||
elm_object_style_set(border, "pad_small");
|
|
||||||
evas_object_show(border);
|
|
||||||
|
|
||||||
btn = evisum_ui_tab_add(parent, &ui->btn_general, _("General"),
|
|
||||||
_tab_system_activity_clicked_cb, ui);
|
|
||||||
elm_object_disabled_set(ui->btn_general, EINA_TRUE);
|
|
||||||
elm_object_content_set(border, btn);
|
|
||||||
elm_box_pack_end(hbox, border);
|
|
||||||
|
|
||||||
border = elm_frame_add(parent);
|
|
||||||
evas_object_size_hint_weight_set(border, 0, EXPAND);
|
|
||||||
evas_object_size_hint_align_set(border, FILL, FILL);
|
|
||||||
elm_object_style_set(border, "pad_small");
|
|
||||||
evas_object_show(border);
|
|
||||||
|
|
||||||
btn = evisum_ui_tab_add(parent, &ui->btn_cpu, _("CPU"),
|
|
||||||
_tab_cpu_activity_clicked_cb, ui);
|
|
||||||
elm_object_content_set(border, btn);
|
|
||||||
elm_box_pack_end(hbox, border);
|
|
||||||
|
|
||||||
border = elm_frame_add(parent);
|
|
||||||
evas_object_size_hint_weight_set(border, 0, EXPAND);
|
|
||||||
evas_object_size_hint_align_set(border, FILL, FILL);
|
|
||||||
elm_object_style_set(border, "pad_small");
|
|
||||||
evas_object_show(border);
|
|
||||||
|
|
||||||
btn = evisum_ui_tab_add(parent, &ui->btn_mem, _("Memory"),
|
|
||||||
_tab_memory_activity_clicked_cb, ui);
|
|
||||||
elm_object_content_set(border, btn);
|
|
||||||
elm_box_pack_end(hbox, border);
|
|
||||||
|
|
||||||
border = elm_frame_add(parent);
|
|
||||||
evas_object_size_hint_weight_set(border, 0, EXPAND);
|
|
||||||
evas_object_size_hint_align_set(border, FILL, FILL);
|
|
||||||
elm_object_style_set(border, "pad_small");
|
|
||||||
evas_object_show(border);
|
|
||||||
|
|
||||||
btn = evisum_ui_tab_add(parent, &ui->btn_storage, _("Storage"),
|
|
||||||
_tab_disk_activity_clicked_cb, ui);
|
|
||||||
elm_object_content_set(border, btn);
|
|
||||||
elm_box_pack_end(hbox, border);
|
|
||||||
|
|
||||||
border = elm_frame_add(parent);
|
|
||||||
evas_object_size_hint_weight_set(border, 0, EXPAND);
|
|
||||||
evas_object_size_hint_align_set(border, FILL, FILL);
|
|
||||||
elm_object_style_set(border, "pad_small");
|
|
||||||
evas_object_show(border);
|
|
||||||
|
|
||||||
btn = evisum_ui_tab_add(parent, &ui->btn_misc, _("Misc"),
|
|
||||||
_tab_misc_clicked_cb, ui);
|
|
||||||
elm_object_content_set(border, btn);
|
|
||||||
elm_box_pack_end(hbox, border);
|
|
||||||
|
|
||||||
border = elm_frame_add(parent);
|
|
||||||
evas_object_size_hint_weight_set(border, EXPAND, EXPAND);
|
|
||||||
evas_object_size_hint_align_set(border, FILL, FILL);
|
|
||||||
elm_object_style_set(border, "pad_small");
|
|
||||||
elm_box_pack_end(hbox, border);
|
|
||||||
evas_object_show(border);
|
|
||||||
|
|
||||||
elm_object_content_set(frame, hbox);
|
|
||||||
elm_table_pack(ui->content, frame, 0, 0, 1, 1);
|
|
||||||
|
|
||||||
hbox = elm_box_add(parent);
|
hbox = elm_box_add(parent);
|
||||||
evas_object_size_hint_weight_set(hbox, EXPAND, 0);
|
evas_object_size_hint_weight_set(hbox, EXPAND, 0);
|
||||||
evas_object_size_hint_align_set(hbox, FILL, FILL);
|
evas_object_size_hint_align_set(hbox, FILL, FILL);
|
||||||
|
@ -1308,13 +1164,7 @@ _ui_tabs_add(Evas_Object *parent, Ui *ui)
|
||||||
elm_box_horizontal_set(box, EINA_TRUE);
|
elm_box_horizontal_set(box, EINA_TRUE);
|
||||||
evas_object_show(box);
|
evas_object_show(box);
|
||||||
|
|
||||||
frame = elm_frame_add(parent);
|
border = elm_frame_add(parent);
|
||||||
evas_object_size_hint_weight_set(frame, EXPAND, EXPAND);
|
|
||||||
evas_object_size_hint_align_set(frame, FILL, FILL);
|
|
||||||
elm_object_style_set(frame, "pad_small");
|
|
||||||
evas_object_show(frame);
|
|
||||||
|
|
||||||
ui->entry_search_border = border = elm_frame_add(parent);
|
|
||||||
evas_object_size_hint_weight_set(border, EXPAND, EXPAND);
|
evas_object_size_hint_weight_set(border, EXPAND, EXPAND);
|
||||||
evas_object_size_hint_align_set(border, FILL, FILL);
|
evas_object_size_hint_align_set(border, FILL, FILL);
|
||||||
elm_object_style_set(border, "pad_small");
|
elm_object_style_set(border, "pad_small");
|
||||||
|
@ -1331,20 +1181,12 @@ _ui_tabs_add(Evas_Object *parent, Ui *ui)
|
||||||
elm_object_content_set(border, entry);
|
elm_object_content_set(border, entry);
|
||||||
elm_box_pack_end(box, border);
|
elm_box_pack_end(box, border);
|
||||||
|
|
||||||
border = elm_frame_add(parent);
|
|
||||||
evas_object_size_hint_align_set(border, FILL, FILL);
|
|
||||||
elm_object_style_set(border, "pad_small");
|
|
||||||
evas_object_show(border);
|
|
||||||
|
|
||||||
btn = evisum_ui_tab_add(parent, NULL, _("Close"), _btn_quit_clicked_cb,
|
|
||||||
ui);
|
|
||||||
elm_object_content_set(border, btn);
|
|
||||||
elm_box_pack_end(box, border);
|
|
||||||
|
|
||||||
elm_object_content_set(frame, box);
|
elm_object_content_set(frame, box);
|
||||||
elm_box_pack_end(hbox, frame);
|
elm_box_pack_end(hbox, frame);
|
||||||
elm_table_pack(ui->content, hbox, 0, 2, 1, 1);
|
elm_table_pack(ui->content, hbox, 0, 2, 1, 1);
|
||||||
|
|
||||||
|
_ui_content_system_add(ui);
|
||||||
|
|
||||||
return table;
|
return table;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1370,7 +1212,11 @@ _evisum_key_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
||||||
}
|
}
|
||||||
|
|
||||||
control = evas_key_modifier_is_set(ev->modifiers, "Control");
|
control = evas_key_modifier_is_set(ev->modifiers, "Control");
|
||||||
if (!control) return;
|
if (!control)
|
||||||
|
{
|
||||||
|
elm_object_focus_set(ui->entry_search, EINA_TRUE);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (ev->keyname[0] == 'e' || ev->keyname[0] == 'E')
|
if (ev->keyname[0] == 'e' || ev->keyname[0] == 'E')
|
||||||
ui->show_self = !ui->show_self;
|
ui->show_self = !ui->show_self;
|
||||||
|
@ -1483,10 +1329,6 @@ _system_info_all_poll_feedback_cb(void *data, Ecore_Thread *thread, void *msg)
|
||||||
if (ecore_thread_check(thread))
|
if (ecore_thread_check(thread))
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
ui_tab_memory_update(ui, info);
|
|
||||||
ui_tab_disk_update(ui);
|
|
||||||
ui_tab_misc_update(ui, info);
|
|
||||||
|
|
||||||
for (int i = 0; i < info->cpu_count; i++)
|
for (int i = 0; i < info->cpu_count; i++)
|
||||||
{
|
{
|
||||||
cpu_usage += info->cores[i]->percent;
|
cpu_usage += info->cores[i]->percent;
|
||||||
|
@ -1506,6 +1348,8 @@ _system_info_all_poll_feedback_cb(void *data, Ecore_Thread *thread, void *msg)
|
||||||
elm_progressbar_unit_format_set(pb, eina_slstr_printf("%s / %s",
|
elm_progressbar_unit_format_set(pb, eina_slstr_printf("%s / %s",
|
||||||
evisum_size_format(info->memory.used),
|
evisum_size_format(info->memory.used),
|
||||||
evisum_size_format(info->memory.total)));
|
evisum_size_format(info->memory.total)));
|
||||||
|
|
||||||
|
ui->network_usage = info->network_usage;
|
||||||
out:
|
out:
|
||||||
system_info_all_free(info);
|
system_info_all_free(info);
|
||||||
}
|
}
|
||||||
|
@ -1532,6 +1376,29 @@ _ui_launch(Ui *ui)
|
||||||
_evisum_search_keypress_cb, ui);
|
_evisum_search_keypress_cb, ui);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_menu_setup(Ui *ui)
|
||||||
|
{
|
||||||
|
Evas_Object *menu;
|
||||||
|
Elm_Object_Item *menu_it;
|
||||||
|
|
||||||
|
menu = elm_win_main_menu_get(ui->win);
|
||||||
|
menu_it = elm_menu_item_add(menu, NULL, NULL, _("File"), NULL, NULL);
|
||||||
|
elm_menu_item_add(menu, menu_it, NULL, _("Quit"), _quit_cb, NULL);
|
||||||
|
menu_it = elm_menu_item_add(menu, NULL, NULL, _("View"), NULL, NULL);
|
||||||
|
elm_menu_item_add(menu, menu_it, NULL, _("CPU"), _menu_cpu_activity_clicked_cb, ui);
|
||||||
|
elm_menu_item_add(menu, menu_it, NULL, _("Memory"),
|
||||||
|
_menu_memory_activity_clicked_cb, ui);
|
||||||
|
elm_menu_item_add(menu, menu_it, NULL, _("Storage"),
|
||||||
|
_menu_disk_activity_clicked_cb, ui);
|
||||||
|
elm_menu_item_add(menu, menu_it, NULL, _("Misc"),
|
||||||
|
_menu_misc_activity_clicked_cb, ui);
|
||||||
|
menu_it = elm_menu_item_add(menu, NULL, NULL, _("Help"), NULL, NULL);
|
||||||
|
elm_menu_item_add(menu, menu_it, NULL, _("About"), _about_clicked_cb, ui);
|
||||||
|
|
||||||
|
evas_object_show(menu);
|
||||||
|
}
|
||||||
|
|
||||||
static Ui *
|
static Ui *
|
||||||
_ui_init(Evas_Object *parent)
|
_ui_init(Evas_Object *parent)
|
||||||
{
|
{
|
||||||
|
@ -1544,9 +1411,6 @@ _ui_init(Evas_Object *parent)
|
||||||
ui->sort_type = SORT_BY_PID;
|
ui->sort_type = SORT_BY_PID;
|
||||||
ui->selected_pid = -1;
|
ui->selected_pid = -1;
|
||||||
ui->program_pid = getpid();
|
ui->program_pid = getpid();
|
||||||
ui->disk_visible = EINA_TRUE;
|
|
||||||
ui->mem_visible = ui->misc_visible = EINA_TRUE;
|
|
||||||
ui->cpu_visible = EINA_FALSE;
|
|
||||||
ui->cpu_times = NULL;
|
ui->cpu_times = NULL;
|
||||||
ui->cpu_list = NULL;
|
ui->cpu_list = NULL;
|
||||||
|
|
||||||
|
@ -1558,13 +1422,9 @@ _ui_init(Evas_Object *parent)
|
||||||
|
|
||||||
_config_load(ui);
|
_config_load(ui);
|
||||||
|
|
||||||
_ui_tabs_add(parent, ui);
|
_ui_content_add(parent, ui);
|
||||||
_ui_tab_system_add(ui);
|
|
||||||
|
|
||||||
ui_tab_cpu_add(ui);
|
_menu_setup(ui);
|
||||||
ui_tab_memory_add(ui);
|
|
||||||
ui_tab_disk_add(ui);
|
|
||||||
ui_tab_misc_add(ui);
|
|
||||||
|
|
||||||
ui->cache = evisum_ui_item_cache_new(ui->genlist_procs, _item_create, 50);
|
ui->cache = evisum_ui_item_cache_new(ui->genlist_procs, _item_create, 50);
|
||||||
|
|
||||||
|
@ -1581,6 +1441,8 @@ evisum_ui_add(Evas_Object *parent)
|
||||||
|
|
||||||
_ui_launch(ui);
|
_ui_launch(ui);
|
||||||
|
|
||||||
|
elm_object_focus_set(ui->entry_search, EINA_TRUE);
|
||||||
|
|
||||||
return ui;
|
return ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
#include <Elementary.h>
|
#include <Elementary.h>
|
||||||
#include "gettext.h"
|
#include "gettext.h"
|
||||||
|
#include "system/machine.h"
|
||||||
#include "system/process.h"
|
#include "system/process.h"
|
||||||
#include "../evisum_config.h"
|
#include "../evisum_config.h"
|
||||||
#include "ui/ui_util.h"
|
#include "ui/ui_util.h"
|
||||||
|
@ -35,25 +36,11 @@ typedef struct Ui
|
||||||
Evas_Object *menu;
|
Evas_Object *menu;
|
||||||
Evas_Object *scroller;
|
Evas_Object *scroller;
|
||||||
Evas_Object *content;
|
Evas_Object *content;
|
||||||
Evas_Object *btn_general;
|
|
||||||
Evas_Object *btn_cpu;
|
|
||||||
Evas_Object *btn_mem;
|
|
||||||
Evas_Object *btn_storage;
|
|
||||||
Evas_Object *btn_misc;
|
|
||||||
|
|
||||||
Evas_Object *disk_view;
|
|
||||||
Evas_Object *disk_activity;
|
Evas_Object *disk_activity;
|
||||||
Evas_Object *cpu_view;
|
|
||||||
Evas_Object *cpu_activity;
|
|
||||||
Evas_Object *mem_view;
|
|
||||||
Evas_Object *mem_activity;
|
|
||||||
Evas_Object *misc_view;
|
|
||||||
Evas_Object *misc_activity;
|
Evas_Object *misc_activity;
|
||||||
Evas_Object *system_activity;
|
Evas_Object *system_activity;
|
||||||
|
|
||||||
Elm_Transit *transit;
|
|
||||||
Evas_Object *current_view;
|
|
||||||
|
|
||||||
Eina_Bool cpu_visible;
|
Eina_Bool cpu_visible;
|
||||||
Eina_Bool misc_visible;
|
Eina_Bool misc_visible;
|
||||||
Eina_Bool disk_visible;
|
Eina_Bool disk_visible;
|
||||||
|
@ -62,12 +49,6 @@ typedef struct Ui
|
||||||
Evas_Object *progress_cpu;
|
Evas_Object *progress_cpu;
|
||||||
Evas_Object *progress_mem;
|
Evas_Object *progress_mem;
|
||||||
|
|
||||||
Evas_Object *progress_mem_used;
|
|
||||||
Evas_Object *progress_mem_cached;
|
|
||||||
Evas_Object *progress_mem_buffered;
|
|
||||||
Evas_Object *progress_mem_shared;
|
|
||||||
Evas_Object *progress_mem_swap;
|
|
||||||
|
|
||||||
Evas_Object *btn_pid;
|
Evas_Object *btn_pid;
|
||||||
Evas_Object *btn_uid;
|
Evas_Object *btn_uid;
|
||||||
Evas_Object *btn_size;
|
Evas_Object *btn_size;
|
||||||
|
@ -79,13 +60,16 @@ typedef struct Ui
|
||||||
Evisum_Ui_Cache *cache;
|
Evisum_Ui_Cache *cache;
|
||||||
Evas_Object *genlist_procs;
|
Evas_Object *genlist_procs;
|
||||||
Evas_Object *entry_search;
|
Evas_Object *entry_search;
|
||||||
Evas_Object *entry_search_border;
|
|
||||||
|
|
||||||
Ecore_Thread *thread_system;
|
Ecore_Thread *thread_system;
|
||||||
Ecore_Thread *thread_process;
|
Ecore_Thread *thread_process;
|
||||||
Ecore_Thread *thread_cpu;
|
Ecore_Thread *thread_cpu;
|
||||||
|
|
||||||
Ecore_Timer *timer_pid;
|
Ecore_Timer *timer_pid;
|
||||||
|
Ecore_Timer *timer_memory;
|
||||||
|
Ecore_Timer *timer_disk;
|
||||||
|
Ecore_Timer *timer_misc;
|
||||||
|
|
||||||
pid_t selected_pid;
|
pid_t selected_pid;
|
||||||
pid_t program_pid;
|
pid_t program_pid;
|
||||||
|
|
||||||
|
@ -107,6 +91,7 @@ typedef struct Ui
|
||||||
|
|
||||||
uint64_t incoming_max;
|
uint64_t incoming_max;
|
||||||
uint64_t outgoing_max;
|
uint64_t outgoing_max;
|
||||||
|
network_t network_usage;
|
||||||
} Ui;
|
} Ui;
|
||||||
|
|
||||||
Ui *
|
Ui *
|
||||||
|
|
|
@ -18,27 +18,29 @@ typedef struct {
|
||||||
int pos;
|
int pos;
|
||||||
double value;
|
double value;
|
||||||
double step;
|
double step;
|
||||||
} Animation;
|
} Animate_Data;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
Ecore_Animator *animator;
|
||||||
|
Animate_Data *anim_data;
|
||||||
double *value;
|
double *value;
|
||||||
Evas_Object *pb;
|
Evas_Object *pb;
|
||||||
} Progress;
|
} Progress;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
loop_reset(Animation *anim)
|
loop_reset(Animate_Data *ad)
|
||||||
{
|
{
|
||||||
anim->pos = anim->step = 0;
|
ad->pos = ad->step = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
_bg_fill(Animation *anim)
|
_bg_fill(Animate_Data *ad)
|
||||||
{
|
{
|
||||||
uint32_t *pixels;
|
uint32_t *pixels;
|
||||||
Evas_Coord x, y, w, h;
|
Evas_Coord x, y, w, h;
|
||||||
|
|
||||||
evas_object_geometry_get(anim->bg, NULL, NULL, &w, &h);
|
evas_object_geometry_get(ad->bg, NULL, NULL, &w, &h);
|
||||||
pixels = evas_object_image_data_get(anim->obj, EINA_TRUE);
|
pixels = evas_object_image_data_get(ad->obj, EINA_TRUE);
|
||||||
if (!pixels) return EINA_FALSE;
|
if (!pixels) return EINA_FALSE;
|
||||||
for (y = 0; y < h; y++)
|
for (y = 0; y < h; y++)
|
||||||
{
|
{
|
||||||
|
@ -47,55 +49,53 @@ _bg_fill(Animation *anim)
|
||||||
*(pixels++) = COLOR_BG;
|
*(pixels++) = COLOR_BG;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
anim->redraw = EINA_FALSE;
|
ad->redraw = EINA_FALSE;
|
||||||
return EINA_TRUE;
|
return EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
animator(void *data)
|
animate(void *data)
|
||||||
{
|
{
|
||||||
uint32_t *pixels;
|
uint32_t *pixels;
|
||||||
Evas_Object *line, *obj, *bg;
|
Evas_Object *line, *obj, *bg;
|
||||||
Evas_Coord x, y, w, h, fill_y;
|
Evas_Coord x, y, w, h, fill_y;
|
||||||
double value;
|
double value;
|
||||||
Animation *anim = data;
|
Animate_Data *ad = data;
|
||||||
|
|
||||||
if (!anim->ui->cpu_visible) return EINA_TRUE;
|
bg = ad->bg; line = ad->line; obj = ad->obj;
|
||||||
|
|
||||||
bg = anim->bg; line = anim->line; obj = anim->obj;
|
|
||||||
|
|
||||||
evas_object_geometry_get(bg, &x, &y, &w, &h);
|
evas_object_geometry_get(bg, &x, &y, &w, &h);
|
||||||
evas_object_image_size_set(obj, w, h);
|
evas_object_image_size_set(obj, w, h);
|
||||||
|
|
||||||
evas_object_move(line, x + w - anim->pos, y);
|
evas_object_move(line, x + w - ad->pos, y);
|
||||||
evas_object_resize(line, 1, h);
|
evas_object_resize(line, 1, h);
|
||||||
if (anim->enabled)
|
if (ad->enabled)
|
||||||
evas_object_show(line);
|
evas_object_show(line);
|
||||||
else
|
else
|
||||||
evas_object_hide(line);
|
evas_object_hide(line);
|
||||||
|
|
||||||
if (anim->redraw)
|
if (ad->redraw)
|
||||||
{
|
{
|
||||||
_bg_fill(anim);
|
_bg_fill(ad);
|
||||||
return EINA_TRUE;
|
return EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
pixels = evas_object_image_data_get(obj, EINA_TRUE);
|
pixels = evas_object_image_data_get(obj, EINA_TRUE);
|
||||||
if (!pixels) return EINA_TRUE;
|
if (!pixels) return EINA_TRUE;
|
||||||
|
|
||||||
value = anim->value > 0 ? anim->value : 1.0;
|
value = ad->value > 0 ? ad->value : 1.0;
|
||||||
|
|
||||||
fill_y = h - (int) ((double)(h / 100.0) * value);
|
fill_y = h - (int) ((double)(h / 100.0) * value);
|
||||||
|
|
||||||
for (y = 0; anim->enabled && y < h; y++)
|
for (y = 0; ad->enabled && y < h; y++)
|
||||||
{
|
{
|
||||||
for (x = 0; x < w; x++)
|
for (x = 0; x < w; x++)
|
||||||
{
|
{
|
||||||
if (x == (w - anim->pos))
|
if (x == (w - ad->pos))
|
||||||
{
|
{
|
||||||
*(pixels) = COLOR_BG;
|
*(pixels) = COLOR_BG;
|
||||||
}
|
}
|
||||||
if ((x == (w - anim->pos)) && (y >= fill_y))
|
if ((x == (w - ad->pos)) && (y >= fill_y))
|
||||||
{
|
{
|
||||||
if (y % 2)
|
if (y % 2)
|
||||||
*(pixels) = COLOR_FG;
|
*(pixels) = COLOR_FG;
|
||||||
|
@ -104,11 +104,11 @@ animator(void *data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
anim->step += (double) (w * ecore_animator_frametime_get()) / 60.0;
|
ad->step += (double) (w * ecore_animator_frametime_get()) / 60.0;
|
||||||
anim->pos = anim->step;
|
ad->pos = ad->step;
|
||||||
|
|
||||||
if (anim->pos >= w)
|
if (ad->pos >= w)
|
||||||
loop_reset(anim);
|
loop_reset(ad);
|
||||||
|
|
||||||
return EINA_TRUE;
|
return EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
@ -117,21 +117,21 @@ static void
|
||||||
_anim_resize_cb(void *data, Evas_Object *obj EINA_UNUSED,
|
_anim_resize_cb(void *data, Evas_Object *obj EINA_UNUSED,
|
||||||
void *event_info EINA_UNUSED)
|
void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Animation *anim = data;
|
Animate_Data *ad = data;
|
||||||
|
|
||||||
anim->redraw = EINA_TRUE;
|
ad->redraw = EINA_TRUE;
|
||||||
loop_reset(anim);
|
loop_reset(ad);
|
||||||
|
|
||||||
evas_object_hide(anim->line);
|
evas_object_hide(ad->line);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_anim_move_cb(void *data, Evas_Object *obj EINA_UNUSED,
|
_anim_move_cb(void *data, Evas_Object *obj EINA_UNUSED,
|
||||||
void *event_info EINA_UNUSED)
|
void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Animation *anim = data;
|
Animate_Data *ad = data;
|
||||||
|
|
||||||
evas_object_hide(anim->line);
|
evas_object_hide(ad->line);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -139,12 +139,12 @@ _btn_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
|
||||||
void *event_info EINA_UNUSED)
|
void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Evas_Object *rect;
|
Evas_Object *rect;
|
||||||
Animation *anim = data;
|
Animate_Data *ad = data;
|
||||||
|
|
||||||
anim->enabled = !anim->enabled;
|
ad->enabled = !ad->enabled;
|
||||||
|
|
||||||
rect = elm_object_part_content_get(anim->btn, "elm.swallow.content");
|
rect = elm_object_part_content_get(ad->btn, "elm.swallow.content");
|
||||||
if (!anim->enabled)
|
if (!ad->enabled)
|
||||||
evas_object_color_set(rect, 0, 0, 0, 0);
|
evas_object_color_set(rect, 0, 0, 0, 0);
|
||||||
else
|
else
|
||||||
evas_object_color_set(rect, 47, 153, 255, 255);
|
evas_object_color_set(rect, 47, 153, 255, 255);
|
||||||
|
@ -183,38 +183,59 @@ _core_times_cb(void *data, Ecore_Thread *thread)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static void
|
||||||
ui_tab_cpu_add(Ui *ui)
|
_win_del_cb(void *data, Evas_Object *obj,
|
||||||
|
void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Evas_Object *parent, *box, *hbox, *scroller, *frame;
|
Progress *progress;
|
||||||
|
Ui *ui = data;
|
||||||
|
|
||||||
|
evas_object_hide(obj);
|
||||||
|
|
||||||
|
ecore_thread_cancel(ui->thread_cpu);
|
||||||
|
ecore_thread_wait(ui->thread_cpu, 1.0);
|
||||||
|
|
||||||
|
EINA_LIST_FREE(ui->cpu_list, progress)
|
||||||
|
{
|
||||||
|
ecore_animator_del(progress->animator);
|
||||||
|
free(progress->anim_data);
|
||||||
|
free(progress);
|
||||||
|
}
|
||||||
|
|
||||||
|
evas_object_del(obj);
|
||||||
|
ui->cpu_visible = EINA_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ui_win_cpu_add(Ui *ui)
|
||||||
|
{
|
||||||
|
Evas_Object *win, *box, *hbox, *scroller, *frame;
|
||||||
Evas_Object *pb, *tbl, *lbox, *btn, *rect;
|
Evas_Object *pb, *tbl, *lbox, *btn, *rect;
|
||||||
Evas_Object *bg, *line, *obj;
|
Evas_Object *bg, *line, *obj;
|
||||||
int cpu_count;
|
int cpu_count;
|
||||||
|
|
||||||
parent = ui->content;
|
if (ui->cpu_visible) return;
|
||||||
|
|
||||||
ui->cpu_view = box = elm_box_add(parent);
|
ui->cpu_visible = EINA_TRUE;
|
||||||
evas_object_size_hint_weight_set(box, EXPAND, EXPAND);
|
|
||||||
evas_object_size_hint_align_set(box, FILL, 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);
|
win = elm_win_util_standard_add("evisum", _("CPU Usage"));
|
||||||
|
evas_object_size_hint_weight_set(win, EXPAND, EXPAND);
|
||||||
|
evas_object_size_hint_align_set(win, FILL, FILL);
|
||||||
|
|
||||||
|
hbox = elm_box_add(win);
|
||||||
evas_object_size_hint_weight_set(hbox, EXPAND, EXPAND);
|
evas_object_size_hint_weight_set(hbox, EXPAND, EXPAND);
|
||||||
evas_object_size_hint_align_set(hbox, FILL, FILL);
|
evas_object_size_hint_align_set(hbox, FILL, FILL);
|
||||||
elm_box_horizontal_set(hbox, EINA_TRUE);
|
elm_box_horizontal_set(hbox, EINA_TRUE);
|
||||||
evas_object_show(hbox);
|
evas_object_show(hbox);
|
||||||
|
|
||||||
scroller = elm_scroller_add(parent);
|
scroller = elm_scroller_add(win);
|
||||||
evas_object_size_hint_weight_set(scroller, EXPAND, EXPAND);
|
evas_object_size_hint_weight_set(scroller, EXPAND, EXPAND);
|
||||||
evas_object_size_hint_align_set(scroller, FILL, FILL);
|
evas_object_size_hint_align_set(scroller, FILL, FILL);
|
||||||
elm_scroller_policy_set(scroller,
|
elm_scroller_policy_set(scroller,
|
||||||
ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
|
ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
|
||||||
evas_object_show(scroller);
|
evas_object_show(scroller);
|
||||||
elm_object_content_set(scroller, hbox);
|
|
||||||
elm_box_pack_end(box, scroller);
|
|
||||||
|
|
||||||
box = elm_box_add(ui->content);
|
box = elm_box_add(hbox);
|
||||||
evas_object_size_hint_align_set(box, FILL, FILL);
|
evas_object_size_hint_align_set(box, FILL, FILL);
|
||||||
evas_object_size_hint_weight_set(box, 0.1, EXPAND);
|
evas_object_size_hint_weight_set(box, 0.1, EXPAND);
|
||||||
evas_object_show(box);
|
evas_object_show(box);
|
||||||
|
@ -222,7 +243,7 @@ ui_tab_cpu_add(Ui *ui)
|
||||||
cpu_count = system_cpu_online_count_get();
|
cpu_count = system_cpu_online_count_get();
|
||||||
for (int i = 0; i < cpu_count; i++)
|
for (int i = 0; i < cpu_count; i++)
|
||||||
{
|
{
|
||||||
lbox = elm_box_add(ui->content);
|
lbox = elm_box_add(box);
|
||||||
evas_object_size_hint_align_set(lbox, FILL, FILL);
|
evas_object_size_hint_align_set(lbox, FILL, FILL);
|
||||||
evas_object_size_hint_weight_set(lbox, 0.1, EXPAND);
|
evas_object_size_hint_weight_set(lbox, 0.1, EXPAND);
|
||||||
evas_object_show(lbox);
|
evas_object_show(lbox);
|
||||||
|
@ -279,38 +300,49 @@ ui_tab_cpu_add(Ui *ui)
|
||||||
evas_object_image_colorspace_set(obj, EVAS_COLORSPACE_ARGB8888);
|
evas_object_image_colorspace_set(obj, EVAS_COLORSPACE_ARGB8888);
|
||||||
evas_object_show(obj);
|
evas_object_show(obj);
|
||||||
|
|
||||||
Animation *anim = calloc(1, sizeof(Animation));
|
|
||||||
anim->bg = bg;
|
|
||||||
anim->obj = obj;
|
|
||||||
anim->line = line;
|
|
||||||
anim->enabled = EINA_TRUE;
|
|
||||||
anim->btn = btn;
|
|
||||||
anim->cpu_id = i;
|
|
||||||
anim->ui = ui;
|
|
||||||
anim->redraw = EINA_TRUE;
|
|
||||||
|
|
||||||
evas_object_smart_callback_add(btn, "clicked", _btn_clicked_cb, anim);
|
|
||||||
evas_object_smart_callback_add(tbl, "resize", _anim_resize_cb, anim);
|
|
||||||
evas_object_smart_callback_add(tbl, "move", _anim_move_cb, anim);
|
|
||||||
ecore_animator_add(animator, anim);
|
|
||||||
|
|
||||||
elm_table_pack(tbl, bg, 0, 1, 1, 1);
|
elm_table_pack(tbl, bg, 0, 1, 1, 1);
|
||||||
elm_table_pack(tbl, obj, 0, 1, 1, 1);
|
elm_table_pack(tbl, obj, 0, 1, 1, 1);
|
||||||
elm_table_pack(tbl, line, 0, 1, 1, 1);
|
elm_table_pack(tbl, line, 0, 1, 1, 1);
|
||||||
|
|
||||||
elm_box_pack_end(lbox, tbl);
|
elm_box_pack_end(lbox, tbl);
|
||||||
elm_object_content_set(frame, lbox);
|
elm_object_content_set(frame, lbox);
|
||||||
elm_box_pack_end(box, frame);
|
elm_box_pack_end(box, frame);
|
||||||
|
|
||||||
|
Animate_Data *ad = calloc(1, sizeof(Animate_Data));
|
||||||
|
if (!ad) return;
|
||||||
|
|
||||||
|
ad->bg = bg;
|
||||||
|
ad->obj = obj;
|
||||||
|
ad->line = line;
|
||||||
|
ad->enabled = EINA_TRUE;
|
||||||
|
ad->btn = btn;
|
||||||
|
ad->cpu_id = i;
|
||||||
|
ad->ui = ui;
|
||||||
|
ad->redraw = EINA_TRUE;
|
||||||
|
|
||||||
|
evas_object_smart_callback_add(btn, "clicked", _btn_clicked_cb, ad);
|
||||||
|
evas_object_smart_callback_add(tbl, "resize", _anim_resize_cb, ad);
|
||||||
|
evas_object_smart_callback_add(tbl, "move", _anim_move_cb, ad);
|
||||||
|
|
||||||
Progress *progress = calloc(1, sizeof(Progress));
|
Progress *progress = calloc(1, sizeof(Progress));
|
||||||
progress->value = calloc(1, sizeof(float *));
|
if (progress)
|
||||||
|
{
|
||||||
progress->pb = pb;
|
progress->pb = pb;
|
||||||
progress->value = &anim->value;
|
progress->value = &ad->value;
|
||||||
|
progress->animator = ecore_animator_add(animate, ad);
|
||||||
|
progress->anim_data = ad;
|
||||||
|
|
||||||
ui->cpu_list = eina_list_append(ui->cpu_list, progress);
|
ui->cpu_list = eina_list_append(ui->cpu_list, progress);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ui->thread_cpu = ecore_thread_run(_core_times_cb, NULL, NULL, ui);
|
ui->thread_cpu = ecore_thread_run(_core_times_cb, NULL, NULL, ui);
|
||||||
|
|
||||||
elm_box_pack_end(hbox, box);
|
elm_box_pack_end(hbox, box);
|
||||||
|
elm_object_content_set(scroller, hbox);
|
||||||
|
|
||||||
|
elm_object_content_set(win, scroller);
|
||||||
|
evas_object_smart_callback_add(win, "delete,request", _win_del_cb, ui);
|
||||||
|
evisum_child_window_show(ui->win, win);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,6 @@
|
||||||
#include "../system/machine.h"
|
#include "../system/machine.h"
|
||||||
|
|
||||||
void
|
void
|
||||||
ui_tab_cpu_add(Ui *ui);
|
ui_win_cpu_add(Ui *ui);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,55 +1,6 @@
|
||||||
#include "ui_disk.h"
|
#include "ui_disk.h"
|
||||||
#include "../system/disks.h"
|
#include "../system/disks.h"
|
||||||
|
|
||||||
void
|
|
||||||
ui_tab_disk_add(Ui *ui)
|
|
||||||
{
|
|
||||||
Evas_Object *parent, *box, *hbox, *frame, *scroller;
|
|
||||||
Evas_Object *table, *rect;
|
|
||||||
|
|
||||||
parent = ui->content;
|
|
||||||
|
|
||||||
ui->disk_view = box = elm_box_add(parent);
|
|
||||||
evas_object_size_hint_weight_set(box, EXPAND, EXPAND);
|
|
||||||
evas_object_size_hint_align_set(box, FILL, FILL);
|
|
||||||
elm_table_pack(ui->content, ui->disk_view, 0, 1, 1, 1);
|
|
||||||
evas_object_hide(box);
|
|
||||||
|
|
||||||
ui->disk_activity = hbox = elm_box_add(box);
|
|
||||||
evas_object_size_hint_weight_set(hbox, EXPAND, 0.0);
|
|
||||||
evas_object_size_hint_align_set(hbox, FILL, 0.5);
|
|
||||||
evas_object_show(hbox);
|
|
||||||
|
|
||||||
frame = elm_frame_add(box);
|
|
||||||
evas_object_size_hint_weight_set(frame, EXPAND, EXPAND);
|
|
||||||
evas_object_size_hint_align_set(frame, FILL, FILL);
|
|
||||||
elm_object_style_set(frame, "pad_small");
|
|
||||||
evas_object_show(frame);
|
|
||||||
|
|
||||||
scroller = elm_scroller_add(parent);
|
|
||||||
evas_object_size_hint_weight_set(scroller, EXPAND, EXPAND);
|
|
||||||
evas_object_size_hint_align_set(scroller, FILL, FILL);
|
|
||||||
elm_scroller_policy_set(scroller,
|
|
||||||
ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
|
|
||||||
evas_object_show(scroller);
|
|
||||||
|
|
||||||
table = elm_table_add(parent);
|
|
||||||
evas_object_size_hint_weight_set(table, EXPAND, EXPAND);
|
|
||||||
evas_object_size_hint_align_set(table, FILL, FILL);
|
|
||||||
evas_object_show(table);
|
|
||||||
|
|
||||||
rect = evas_object_rectangle_add(evas_object_rectangle_add(parent));
|
|
||||||
evas_object_size_hint_max_set(rect, MISC_MAX_WIDTH, -1);
|
|
||||||
evas_object_size_hint_min_set(rect, MISC_MIN_WIDTH, 1);
|
|
||||||
|
|
||||||
elm_table_pack(table, rect, 0, 0, 1, 1);
|
|
||||||
elm_table_pack(table, hbox, 0, 0, 1, 1);
|
|
||||||
elm_object_content_set(scroller, table);
|
|
||||||
|
|
||||||
elm_object_content_set(frame, scroller);
|
|
||||||
elm_box_pack_end(box, frame);
|
|
||||||
}
|
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
_file_system_usage_format(File_System *inf)
|
_file_system_usage_format(File_System *inf)
|
||||||
{
|
{
|
||||||
|
@ -168,15 +119,15 @@ _ui_disk_add(Ui *ui, File_System *inf)
|
||||||
elm_box_pack_end(ui->disk_activity, frame);
|
elm_box_pack_end(ui->disk_activity, frame);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static Eina_Bool
|
||||||
ui_tab_disk_update(Ui *ui)
|
_disk_update(void *data)
|
||||||
{
|
{
|
||||||
|
Ui *ui;
|
||||||
Eina_List *disks;
|
Eina_List *disks;
|
||||||
char *path;
|
char *path;
|
||||||
Eina_Bool zfs_mounted = EINA_FALSE;
|
Eina_Bool zfs_mounted = EINA_FALSE;
|
||||||
|
|
||||||
if (!ui->disk_visible)
|
ui = data;
|
||||||
return;
|
|
||||||
|
|
||||||
elm_box_clear(ui->disk_activity);
|
elm_box_clear(ui->disk_activity);
|
||||||
|
|
||||||
|
@ -186,7 +137,6 @@ ui_tab_disk_update(Ui *ui)
|
||||||
File_System *fs = file_system_info_get(path);
|
File_System *fs = file_system_info_get(path);
|
||||||
if (fs)
|
if (fs)
|
||||||
{
|
{
|
||||||
// Check for ZFS mount.
|
|
||||||
if (fs->type == file_system_id_by_name("ZFS"))
|
if (fs->type == file_system_id_by_name("ZFS"))
|
||||||
zfs_mounted = EINA_TRUE;
|
zfs_mounted = EINA_TRUE;
|
||||||
|
|
||||||
|
@ -196,7 +146,74 @@ ui_tab_disk_update(Ui *ui)
|
||||||
free(path);
|
free(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Need to keep track of ZFS mounts (ARC memory usage).
|
|
||||||
ui->zfs_mounted = zfs_mounted;
|
ui->zfs_mounted = zfs_mounted;
|
||||||
|
|
||||||
|
return EINA_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_win_del_cb(void *data, Evas_Object *obj EINA_UNUSED,
|
||||||
|
void *event_info EINA_UNUSED)
|
||||||
|
{
|
||||||
|
Ui *ui = data;
|
||||||
|
|
||||||
|
if (ui->timer_disk)
|
||||||
|
ecore_timer_del(ui->timer_disk);
|
||||||
|
ui->timer_disk = NULL;
|
||||||
|
|
||||||
|
evas_object_del(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ui_win_disk_add(Ui *ui)
|
||||||
|
{
|
||||||
|
Evas_Object *win, *box, *vbox, *scroller;
|
||||||
|
Evas_Object *table, *rect;
|
||||||
|
|
||||||
|
if (ui->disk_visible) return;
|
||||||
|
ui->disk_visible = EINA_TRUE;
|
||||||
|
|
||||||
|
win = elm_win_util_standard_add("evisum", _("Storage"));
|
||||||
|
evas_object_size_hint_weight_set(win, EXPAND, EXPAND);
|
||||||
|
evas_object_size_hint_align_set(win, FILL, FILL);
|
||||||
|
|
||||||
|
box = elm_box_add(win);
|
||||||
|
evas_object_size_hint_weight_set(box, EXPAND, EXPAND);
|
||||||
|
evas_object_size_hint_align_set(box, FILL, FILL);
|
||||||
|
evas_object_show(box);
|
||||||
|
|
||||||
|
ui->disk_activity = vbox = elm_box_add(win);
|
||||||
|
evas_object_size_hint_weight_set(vbox, EXPAND, 0.0);
|
||||||
|
evas_object_size_hint_align_set(vbox, FILL, 0.5);
|
||||||
|
evas_object_show(vbox);
|
||||||
|
|
||||||
|
scroller = elm_scroller_add(win);
|
||||||
|
evas_object_size_hint_weight_set(scroller, EXPAND, EXPAND);
|
||||||
|
evas_object_size_hint_align_set(scroller, FILL, FILL);
|
||||||
|
elm_scroller_policy_set(scroller,
|
||||||
|
ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
|
||||||
|
evas_object_show(scroller);
|
||||||
|
|
||||||
|
table = elm_table_add(win);
|
||||||
|
evas_object_size_hint_weight_set(table, EXPAND, EXPAND);
|
||||||
|
evas_object_size_hint_align_set(table, FILL, FILL);
|
||||||
|
evas_object_show(table);
|
||||||
|
|
||||||
|
rect = evas_object_rectangle_add(evas_object_rectangle_add(win));
|
||||||
|
evas_object_size_hint_max_set(rect, MISC_MAX_WIDTH, -1);
|
||||||
|
evas_object_size_hint_min_set(rect, MISC_MIN_WIDTH, 1);
|
||||||
|
|
||||||
|
elm_table_pack(table, rect, 0, 0, 1, 1);
|
||||||
|
elm_table_pack(table, vbox, 0, 0, 1, 1);
|
||||||
|
|
||||||
|
elm_object_content_set(scroller, table);
|
||||||
|
elm_box_pack_end(box, scroller);
|
||||||
|
elm_object_content_set(win, box);
|
||||||
|
|
||||||
|
evas_object_smart_callback_add(win, "delete,request", _win_del_cb, ui);
|
||||||
|
evisum_child_window_show(ui->win, win);
|
||||||
|
_disk_update(ui);
|
||||||
|
|
||||||
|
ui->timer_disk = ecore_timer_add(3.0, _disk_update, ui);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,9 +5,6 @@
|
||||||
#include "system/disks.h"
|
#include "system/disks.h"
|
||||||
|
|
||||||
void
|
void
|
||||||
ui_tab_disk_add(Ui *ui);
|
ui_win_disk_add(Ui *ui);
|
||||||
|
|
||||||
void
|
|
||||||
ui_tab_disk_update(Ui *ui);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,4 +1,13 @@
|
||||||
#include "ui_memory.h"
|
#include "ui_memory.h"
|
||||||
|
#include "system/filesystems.h"
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
Evas_Object *used;
|
||||||
|
Evas_Object *cached;
|
||||||
|
Evas_Object *buffered;
|
||||||
|
Evas_Object *shared;
|
||||||
|
Evas_Object *swap;
|
||||||
|
} Widgets;
|
||||||
|
|
||||||
static Evas_Object *
|
static Evas_Object *
|
||||||
_label_mem(Evas_Object *parent, const char *text)
|
_label_mem(Evas_Object *parent, const char *text)
|
||||||
|
@ -24,158 +33,178 @@ _progress_add(Evas_Object *parent)
|
||||||
return pb;
|
return pb;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static Eina_Bool
|
||||||
ui_tab_memory_add(Ui *ui)
|
_memory_update(void *data)
|
||||||
{
|
|
||||||
Evas_Object *parent, *box, *hbox, *frame, *pb;
|
|
||||||
Evas_Object *scroller, *border, *rect, *label, *table;
|
|
||||||
|
|
||||||
parent = ui->content;
|
|
||||||
|
|
||||||
ui->mem_view = box = elm_box_add(parent);
|
|
||||||
evas_object_size_hint_weight_set(box, EXPAND, EXPAND);
|
|
||||||
evas_object_size_hint_align_set(box, FILL, 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, EXPAND, EXPAND);
|
|
||||||
evas_object_size_hint_align_set(hbox, FILL, FILL);
|
|
||||||
evas_object_show(hbox);
|
|
||||||
|
|
||||||
frame = elm_frame_add(box);
|
|
||||||
evas_object_size_hint_weight_set(frame, EXPAND, EXPAND);
|
|
||||||
evas_object_size_hint_align_set(frame, FILL, FILL);
|
|
||||||
elm_object_style_set(frame, "pad_small");
|
|
||||||
evas_object_show(frame);
|
|
||||||
|
|
||||||
scroller = elm_scroller_add(parent);
|
|
||||||
evas_object_size_hint_weight_set(scroller, EXPAND, EXPAND);
|
|
||||||
evas_object_size_hint_align_set(scroller, FILL, FILL);
|
|
||||||
elm_scroller_policy_set(scroller,
|
|
||||||
ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
|
|
||||||
evas_object_show(scroller);
|
|
||||||
|
|
||||||
box = elm_box_add(ui->content);
|
|
||||||
evas_object_size_hint_align_set(box, FILL, FILL);
|
|
||||||
evas_object_size_hint_weight_set(box, EXPAND, EXPAND);
|
|
||||||
evas_object_show(box);
|
|
||||||
|
|
||||||
table = elm_table_add(parent);
|
|
||||||
evas_object_size_hint_weight_set(table, EXPAND, EXPAND);
|
|
||||||
evas_object_size_hint_align_set(table, FILL, FILL);
|
|
||||||
elm_table_padding_set(table, 0, 40 * elm_config_scale_get());
|
|
||||||
evas_object_show(table);
|
|
||||||
|
|
||||||
label = _label_mem(box, _("Used"));
|
|
||||||
ui->progress_mem_used = pb = _progress_add(table);
|
|
||||||
elm_table_pack(table, label, 0, 0, 1, 1);
|
|
||||||
elm_table_pack(table, pb, 1, 0, 1, 1);
|
|
||||||
|
|
||||||
label = _label_mem(box, _("Cached"));
|
|
||||||
ui->progress_mem_cached = pb = _progress_add(table);
|
|
||||||
elm_table_pack(table, label, 0, 1, 1, 1);
|
|
||||||
elm_table_pack(table, pb, 1, 1, 1, 1);
|
|
||||||
|
|
||||||
label = _label_mem(box, _("Buffered"));
|
|
||||||
ui->progress_mem_buffered = pb = _progress_add(table);
|
|
||||||
elm_table_pack(table, label, 0, 2, 1, 1);
|
|
||||||
elm_table_pack(table, pb, 1, 2, 1, 1);
|
|
||||||
|
|
||||||
label = _label_mem(box, _("Shared"));
|
|
||||||
ui->progress_mem_shared = pb = _progress_add(table);
|
|
||||||
elm_table_pack(table, label, 0, 3, 1, 1);
|
|
||||||
elm_table_pack(table, pb, 1, 3, 1, 1);
|
|
||||||
|
|
||||||
label = _label_mem(box, _("Swapped"));
|
|
||||||
ui->progress_mem_swap = pb = _progress_add(frame);
|
|
||||||
elm_table_pack(table, label, 0, 4, 1, 1);
|
|
||||||
elm_table_pack(table, pb, 1, 4, 1, 1);
|
|
||||||
|
|
||||||
border = elm_frame_add(parent);
|
|
||||||
elm_object_style_set(border, "pad_small");
|
|
||||||
evas_object_size_hint_weight_set(border, EXPAND, EXPAND);
|
|
||||||
evas_object_size_hint_align_set(border, FILL, FILL);
|
|
||||||
evas_object_show(border);
|
|
||||||
elm_object_content_set(border, table);
|
|
||||||
|
|
||||||
table = elm_table_add(parent);
|
|
||||||
evas_object_size_hint_weight_set(table, EXPAND, EXPAND);
|
|
||||||
evas_object_size_hint_align_set(table, FILL, FILL);
|
|
||||||
evas_object_show(table);
|
|
||||||
|
|
||||||
rect = evas_object_rectangle_add(evas_object_evas_get(parent));
|
|
||||||
evas_object_size_hint_max_set(rect, MISC_MAX_WIDTH, -1);
|
|
||||||
evas_object_size_hint_min_set(rect, MISC_MIN_WIDTH, 1);
|
|
||||||
|
|
||||||
elm_table_pack(table, rect, 0, 0, 1, 1);
|
|
||||||
elm_table_pack(table, border, 0, 0, 1, 1);
|
|
||||||
|
|
||||||
elm_object_content_set(scroller, table);
|
|
||||||
elm_object_content_set(frame, scroller);
|
|
||||||
elm_box_pack_end(ui->mem_view, frame);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
ui_tab_memory_update(Ui *ui, Sys_Info *info)
|
|
||||||
{
|
{
|
||||||
|
Widgets *widgets;
|
||||||
Evas_Object *pb;
|
Evas_Object *pb;
|
||||||
double ratio, value;
|
double ratio, value;
|
||||||
|
meminfo_t memory;
|
||||||
|
|
||||||
if (!ui->mem_visible)
|
memset(&memory, 0, sizeof(memory));
|
||||||
return;
|
system_memory_usage_get(&memory);
|
||||||
|
|
||||||
if (ui->zfs_mounted)
|
widgets = data;
|
||||||
info->memory.used += info->memory.zfs_arc_used;
|
|
||||||
|
|
||||||
pb = ui->progress_mem_used;
|
if (file_system_in_use("ZFS"))
|
||||||
ratio = info->memory.total / 100.0;
|
memory.used += memory.zfs_arc_used;
|
||||||
value = info->memory.used / ratio;
|
|
||||||
|
pb = widgets->used;
|
||||||
|
ratio = memory.total / 100.0;
|
||||||
|
value = memory.used / ratio;
|
||||||
elm_progressbar_value_set(pb, value / 100);
|
elm_progressbar_value_set(pb, value / 100);
|
||||||
elm_progressbar_unit_format_set(pb,
|
elm_progressbar_unit_format_set(pb,
|
||||||
eina_slstr_printf("%s / %s",
|
eina_slstr_printf("%s / %s",
|
||||||
evisum_size_format(info->memory.used),
|
evisum_size_format(memory.used),
|
||||||
evisum_size_format(info->memory.total)));
|
evisum_size_format(memory.total)));
|
||||||
|
|
||||||
pb = ui->progress_mem_cached;
|
pb = widgets->cached;
|
||||||
ratio = info->memory.total / 100.0;
|
ratio = memory.total / 100.0;
|
||||||
value = info->memory.cached / ratio;
|
value = memory.cached / ratio;
|
||||||
elm_progressbar_value_set(pb, value / 100);
|
elm_progressbar_value_set(pb, value / 100);
|
||||||
elm_progressbar_unit_format_set(pb,
|
elm_progressbar_unit_format_set(pb,
|
||||||
eina_slstr_printf("%s / %s",
|
eina_slstr_printf("%s / %s",
|
||||||
evisum_size_format(info->memory.cached),
|
evisum_size_format(memory.cached),
|
||||||
evisum_size_format(info->memory.total)));
|
evisum_size_format(memory.total)));
|
||||||
|
|
||||||
pb = ui->progress_mem_buffered;
|
pb = widgets->buffered;
|
||||||
ratio = info->memory.total / 100.0;
|
ratio = memory.total / 100.0;
|
||||||
value = info->memory.buffered / ratio;
|
value = memory.buffered / ratio;
|
||||||
elm_progressbar_value_set(pb, value / 100);
|
elm_progressbar_value_set(pb, value / 100);
|
||||||
elm_progressbar_unit_format_set(pb,
|
elm_progressbar_unit_format_set(pb,
|
||||||
eina_slstr_printf("%s / %s",
|
eina_slstr_printf("%s / %s",
|
||||||
evisum_size_format(info->memory.buffered),
|
evisum_size_format(memory.buffered),
|
||||||
evisum_size_format(info->memory.total)));
|
evisum_size_format(memory.total)));
|
||||||
|
|
||||||
pb = ui->progress_mem_shared;
|
pb = widgets->shared;
|
||||||
ratio = info->memory.total / 100.0;
|
ratio = memory.total / 100.0;
|
||||||
value = info->memory.shared / ratio;
|
value = memory.shared / ratio;
|
||||||
elm_progressbar_value_set(pb, value / 100);
|
elm_progressbar_value_set(pb, value / 100);
|
||||||
elm_progressbar_unit_format_set(pb,
|
elm_progressbar_unit_format_set(pb,
|
||||||
eina_slstr_printf("%s / %s",
|
eina_slstr_printf("%s / %s",
|
||||||
evisum_size_format(info->memory.shared),
|
evisum_size_format(memory.shared),
|
||||||
evisum_size_format(info->memory.total)));
|
evisum_size_format(memory.total)));
|
||||||
|
|
||||||
pb = ui->progress_mem_swap;
|
pb = widgets->swap;
|
||||||
if (info->memory.swap_total)
|
if (memory.swap_total)
|
||||||
{
|
{
|
||||||
ratio = info->memory.swap_total / 100.0;
|
ratio = memory.swap_total / 100.0;
|
||||||
value = info->memory.swap_used / ratio;
|
value = memory.swap_used / ratio;
|
||||||
}
|
}
|
||||||
else value = 0.0;
|
else value = 0.0;
|
||||||
|
|
||||||
elm_progressbar_value_set(pb, value / 100);
|
elm_progressbar_value_set(pb, value / 100);
|
||||||
elm_progressbar_unit_format_set(pb,
|
elm_progressbar_unit_format_set(pb,
|
||||||
eina_slstr_printf("%s / %s",
|
eina_slstr_printf("%s / %s",
|
||||||
evisum_size_format(info->memory.swap_used),
|
evisum_size_format(memory.swap_used),
|
||||||
evisum_size_format(info->memory.swap_total)));
|
evisum_size_format(memory.swap_total)));
|
||||||
|
|
||||||
|
return EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_win_del_cb(void *data, Evas_Object *obj,
|
||||||
|
void *event_info EINA_UNUSED)
|
||||||
|
{
|
||||||
|
Widgets *widgets;
|
||||||
|
Ui *ui = data;
|
||||||
|
|
||||||
|
ecore_timer_del(ui->timer_memory);
|
||||||
|
ui->timer_memory = NULL;
|
||||||
|
|
||||||
|
widgets = evas_object_data_get(obj, "widgets");
|
||||||
|
if (widgets) free(widgets);
|
||||||
|
|
||||||
|
evas_object_del(obj);
|
||||||
|
ui->mem_visible = EINA_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ui_win_memory_add(Ui *ui)
|
||||||
|
{
|
||||||
|
Evas_Object *win, *box, *frame, *pb;
|
||||||
|
Evas_Object *border, *rect, *label, *table;
|
||||||
|
|
||||||
|
if (ui->mem_visible) return;
|
||||||
|
|
||||||
|
ui->mem_visible = EINA_TRUE;
|
||||||
|
|
||||||
|
Widgets *widgets = calloc(1, sizeof(Widgets));
|
||||||
|
if (!widgets) return;
|
||||||
|
|
||||||
|
win = elm_win_util_standard_add("evisum", _("Memory Usage"));
|
||||||
|
evas_object_size_hint_weight_set(win, EXPAND, EXPAND);
|
||||||
|
evas_object_size_hint_align_set(win, FILL, FILL);
|
||||||
|
|
||||||
|
frame = elm_frame_add(win);
|
||||||
|
evas_object_size_hint_weight_set(frame, EXPAND, EXPAND);
|
||||||
|
evas_object_size_hint_align_set(frame, FILL, FILL);
|
||||||
|
elm_object_style_set(frame, "pad_small");
|
||||||
|
evas_object_show(frame);
|
||||||
|
|
||||||
|
box = elm_box_add(win);
|
||||||
|
evas_object_size_hint_align_set(box, FILL, FILL);
|
||||||
|
evas_object_size_hint_weight_set(box, EXPAND, EXPAND);
|
||||||
|
evas_object_show(box);
|
||||||
|
|
||||||
|
table = elm_table_add(win);
|
||||||
|
evas_object_size_hint_weight_set(table, EXPAND, EXPAND);
|
||||||
|
evas_object_size_hint_align_set(table, FILL, FILL);
|
||||||
|
evas_object_show(table);
|
||||||
|
|
||||||
|
label = _label_mem(box, _("Used"));
|
||||||
|
widgets->used = pb = _progress_add(table);
|
||||||
|
elm_table_pack(table, label, 0, 0, 1, 1);
|
||||||
|
elm_table_pack(table, pb, 1, 0, 1, 1);
|
||||||
|
|
||||||
|
label = _label_mem(box, _("Cached"));
|
||||||
|
widgets->cached = pb = _progress_add(table);
|
||||||
|
elm_table_pack(table, label, 0, 1, 1, 1);
|
||||||
|
elm_table_pack(table, pb, 1, 1, 1, 1);
|
||||||
|
|
||||||
|
label = _label_mem(box, _("Buffered"));
|
||||||
|
widgets->buffered = pb = _progress_add(table);
|
||||||
|
elm_table_pack(table, label, 0, 2, 1, 1);
|
||||||
|
elm_table_pack(table, pb, 1, 2, 1, 1);
|
||||||
|
|
||||||
|
label = _label_mem(box, _("Shared"));
|
||||||
|
widgets->shared = pb = _progress_add(table);
|
||||||
|
elm_table_pack(table, label, 0, 3, 1, 1);
|
||||||
|
elm_table_pack(table, pb, 1, 3, 1, 1);
|
||||||
|
|
||||||
|
label = _label_mem(box, _("Swapped"));
|
||||||
|
widgets->swap = pb = _progress_add(frame);
|
||||||
|
elm_table_pack(table, label, 0, 4, 1, 1);
|
||||||
|
elm_table_pack(table, pb, 1, 4, 1, 1);
|
||||||
|
|
||||||
|
border = elm_frame_add(win);
|
||||||
|
elm_object_style_set(border, "pad_small");
|
||||||
|
evas_object_size_hint_weight_set(border, EXPAND, EXPAND);
|
||||||
|
evas_object_size_hint_align_set(border, FILL, FILL);
|
||||||
|
evas_object_show(border);
|
||||||
|
elm_object_content_set(border, table);
|
||||||
|
|
||||||
|
table = elm_table_add(win);
|
||||||
|
evas_object_size_hint_weight_set(table, EXPAND, EXPAND);
|
||||||
|
evas_object_size_hint_align_set(table, FILL, FILL);
|
||||||
|
evas_object_show(table);
|
||||||
|
|
||||||
|
rect = evas_object_rectangle_add(evas_object_evas_get(win));
|
||||||
|
evas_object_size_hint_max_set(rect, MISC_MAX_WIDTH, -1);
|
||||||
|
evas_object_size_hint_min_set(rect, MISC_MIN_WIDTH, 1);
|
||||||
|
|
||||||
|
elm_table_pack(table, rect, 0, 0, 1, 1);
|
||||||
|
elm_table_pack(table, border, 0, 0, 1, 1);
|
||||||
|
|
||||||
|
elm_object_content_set(frame, table);
|
||||||
|
elm_object_content_set(win, frame);
|
||||||
|
|
||||||
|
evas_object_data_set(win, "widgets", widgets);
|
||||||
|
evas_object_smart_callback_add(win, "delete,request", _win_del_cb, ui);
|
||||||
|
evisum_child_window_show(ui->win, win);
|
||||||
|
evas_object_resize(win, -1, -1);
|
||||||
|
|
||||||
|
_memory_update(widgets);
|
||||||
|
|
||||||
|
ui->timer_memory = ecore_timer_add(3.0, _memory_update, widgets);
|
||||||
|
}
|
||||||
|
|
|
@ -5,9 +5,7 @@
|
||||||
#include "../system/machine.h"
|
#include "../system/machine.h"
|
||||||
|
|
||||||
void
|
void
|
||||||
ui_tab_memory_add(Ui *ui);
|
ui_win_memory_add(Ui *ui);
|
||||||
|
|
||||||
void
|
|
||||||
ui_tab_memory_update(Ui *ui, Sys_Info *info);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
#include "ui_misc.h"
|
#include "ui_misc.h"
|
||||||
|
#include "system/machine.h"
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
_battery_usage_add(Evas_Object *box, power_t *power)
|
_battery_usage_add(Evas_Object *box, power_t *power)
|
||||||
|
@ -67,14 +68,14 @@ _battery_usage_add(Evas_Object *box, power_t *power)
|
||||||
}
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
_sensor_usage_add(Evas_Object *box, Sys_Info *info)
|
_sensor_usage_add(Evas_Object *box, sensor_t **sensors, int count)
|
||||||
{
|
{
|
||||||
Evas_Object *frame, *vbox, *hbox, *pb, *ic, *label;
|
Evas_Object *frame, *vbox, *hbox, *pb, *ic, *label;
|
||||||
sensor_t *snsr;
|
sensor_t *snsr;
|
||||||
|
|
||||||
for (int i = 0; i < info->sensor_count; i++)
|
for (int i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
snsr = info->sensors[i];
|
snsr = sensors[i];
|
||||||
|
|
||||||
frame = elm_frame_add(box);
|
frame = elm_frame_add(box);
|
||||||
evas_object_size_hint_align_set(frame, FILL, FILL);
|
evas_object_size_hint_align_set(frame, FILL, FILL);
|
||||||
|
@ -124,7 +125,7 @@ _sensor_usage_add(Evas_Object *box, Sys_Info *info)
|
||||||
elm_box_pack_end(box, frame);
|
elm_box_pack_end(box, frame);
|
||||||
}
|
}
|
||||||
|
|
||||||
return !!info->sensor_count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
|
@ -248,18 +249,111 @@ _separator_add(Evas_Object *box)
|
||||||
elm_box_pack_end(box, hbox);
|
elm_box_pack_end(box, hbox);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static void
|
||||||
ui_tab_misc_add(Ui *ui)
|
_misc_free(power_t *power, sensor_t **sensors, int sensor_count)
|
||||||
{
|
{
|
||||||
Evas_Object *parent, *box, *hbox, *frame, *scroller;
|
for (int i = 0; i < power->battery_count; i++)
|
||||||
|
{
|
||||||
|
if (power->batteries[i]->name)
|
||||||
|
free(power->batteries[i]->name);
|
||||||
|
#if defined(__OpenBSD__)
|
||||||
|
if (power->batteries[i]->mibs)
|
||||||
|
free(power->batteries[i]->mibs);
|
||||||
|
#endif
|
||||||
|
free(power->batteries[i]);
|
||||||
|
}
|
||||||
|
if (power->batteries)
|
||||||
|
free(power->batteries);
|
||||||
|
|
||||||
|
for (int i = 0; i < sensor_count; i++)
|
||||||
|
{
|
||||||
|
sensor_t *snsr = sensors[i];
|
||||||
|
if (snsr->name)
|
||||||
|
free(snsr->name);
|
||||||
|
free(snsr);
|
||||||
|
}
|
||||||
|
if (sensors)
|
||||||
|
free(sensors);
|
||||||
|
}
|
||||||
|
|
||||||
|
static Eina_Bool
|
||||||
|
_misc_update(void *data)
|
||||||
|
{
|
||||||
|
Ui *ui;
|
||||||
|
power_t power;
|
||||||
|
sensor_t **sensors;
|
||||||
|
int sensor_count = 0;
|
||||||
|
Evas_Object *box, *frame;
|
||||||
|
|
||||||
|
ui = data;
|
||||||
|
|
||||||
|
elm_box_clear(ui->misc_activity);
|
||||||
|
|
||||||
|
box = elm_box_add(ui->misc_activity);
|
||||||
|
evas_object_size_hint_align_set(box, FILL, FILL);
|
||||||
|
evas_object_size_hint_weight_set(box, EXPAND, EXPAND);
|
||||||
|
evas_object_show(box);
|
||||||
|
|
||||||
|
_network_usage_add(ui, box, ui->network_usage.incoming, EINA_TRUE);
|
||||||
|
_network_usage_add(ui, box, ui->network_usage.outgoing, EINA_FALSE);
|
||||||
|
_separator_add(box);
|
||||||
|
|
||||||
|
memset(&power, 0, sizeof(power));
|
||||||
|
system_power_state_get(&power);
|
||||||
|
|
||||||
|
if (_battery_usage_add(box, &power))
|
||||||
|
_separator_add(box);
|
||||||
|
|
||||||
|
sensors = system_sensors_thermal_get(&sensor_count);
|
||||||
|
if (sensors)
|
||||||
|
{
|
||||||
|
_sensor_usage_add(box, sensors, sensor_count);
|
||||||
|
_separator_add(box);
|
||||||
|
}
|
||||||
|
|
||||||
|
_misc_free(&power, sensors, sensor_count);
|
||||||
|
|
||||||
|
frame = elm_frame_add(ui->misc_activity);
|
||||||
|
evas_object_size_hint_align_set(frame, FILL, FILL);
|
||||||
|
evas_object_size_hint_weight_set(frame, EXPAND, EXPAND);
|
||||||
|
elm_object_style_set(frame, "pad_huge");
|
||||||
|
evas_object_show(frame);
|
||||||
|
elm_object_content_set(frame, box);
|
||||||
|
elm_box_pack_end(ui->misc_activity, frame);
|
||||||
|
|
||||||
|
return EINA_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_win_del_cb(void *data, Evas_Object *obj EINA_UNUSED,
|
||||||
|
void *event_info EINA_UNUSED)
|
||||||
|
{
|
||||||
|
Ui *ui = data;
|
||||||
|
|
||||||
|
if (ui->timer_misc)
|
||||||
|
ecore_timer_del(ui->timer_misc);
|
||||||
|
ui->timer_misc = NULL;
|
||||||
|
|
||||||
|
evas_object_del(obj);
|
||||||
|
ui->misc_visible = EINA_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ui_win_misc_add(Ui *ui)
|
||||||
|
{
|
||||||
|
Evas_Object *win, *box, *hbox, *frame, *scroller;
|
||||||
Evas_Object *table, *border, *rect;
|
Evas_Object *table, *border, *rect;
|
||||||
|
|
||||||
parent = ui->content;
|
if (ui->misc_visible) return;
|
||||||
|
ui->misc_visible = EINA_TRUE;
|
||||||
|
|
||||||
ui->misc_view = box = elm_box_add(parent);
|
win = elm_win_util_standard_add("evisum", _("Stuff"));
|
||||||
|
evas_object_size_hint_weight_set(win, EXPAND, EXPAND);
|
||||||
|
evas_object_size_hint_align_set(win, FILL, FILL);
|
||||||
|
|
||||||
|
box = elm_box_add(win);
|
||||||
evas_object_size_hint_weight_set(box, EXPAND, EXPAND);
|
evas_object_size_hint_weight_set(box, EXPAND, EXPAND);
|
||||||
evas_object_size_hint_align_set(box, FILL, FILL);
|
evas_object_size_hint_align_set(box, FILL, FILL);
|
||||||
elm_table_pack(ui->content, ui->misc_view, 0, 1, 1, 1);
|
|
||||||
evas_object_hide(box);
|
evas_object_hide(box);
|
||||||
|
|
||||||
ui->misc_activity = hbox = elm_box_add(box);
|
ui->misc_activity = hbox = elm_box_add(box);
|
||||||
|
@ -273,7 +367,7 @@ ui_tab_misc_add(Ui *ui)
|
||||||
evas_object_size_hint_align_set(frame, FILL, FILL);
|
evas_object_size_hint_align_set(frame, FILL, FILL);
|
||||||
evas_object_show(frame);
|
evas_object_show(frame);
|
||||||
|
|
||||||
scroller = elm_scroller_add(parent);
|
scroller = elm_scroller_add(win);
|
||||||
evas_object_size_hint_weight_set(scroller, EXPAND, EXPAND);
|
evas_object_size_hint_weight_set(scroller, EXPAND, EXPAND);
|
||||||
evas_object_size_hint_align_set(scroller, FILL, FILL);
|
evas_object_size_hint_align_set(scroller, FILL, FILL);
|
||||||
elm_scroller_policy_set(scroller,
|
elm_scroller_policy_set(scroller,
|
||||||
|
@ -287,12 +381,12 @@ ui_tab_misc_add(Ui *ui)
|
||||||
evas_object_show(border);
|
evas_object_show(border);
|
||||||
elm_object_content_set(border, hbox);
|
elm_object_content_set(border, hbox);
|
||||||
|
|
||||||
table = elm_table_add(parent);
|
table = elm_table_add(win);
|
||||||
evas_object_size_hint_weight_set(table, EXPAND, EXPAND);
|
evas_object_size_hint_weight_set(table, EXPAND, EXPAND);
|
||||||
evas_object_size_hint_align_set(table, FILL, FILL);
|
evas_object_size_hint_align_set(table, FILL, FILL);
|
||||||
evas_object_show(table);
|
evas_object_show(table);
|
||||||
|
|
||||||
rect = evas_object_rectangle_add(evas_object_rectangle_add(parent));
|
rect = evas_object_rectangle_add(evas_object_rectangle_add(win));
|
||||||
evas_object_size_hint_max_set(rect, MISC_MAX_WIDTH, -1);
|
evas_object_size_hint_max_set(rect, MISC_MAX_WIDTH, -1);
|
||||||
evas_object_size_hint_min_set(rect, MISC_MIN_WIDTH, 1);
|
evas_object_size_hint_min_set(rect, MISC_MIN_WIDTH, 1);
|
||||||
|
|
||||||
|
@ -302,39 +396,13 @@ ui_tab_misc_add(Ui *ui)
|
||||||
elm_object_content_set(scroller, table);
|
elm_object_content_set(scroller, table);
|
||||||
elm_object_content_set(frame,scroller);
|
elm_object_content_set(frame,scroller);
|
||||||
elm_box_pack_end(box, frame);
|
elm_box_pack_end(box, frame);
|
||||||
|
elm_object_content_set(win, box);
|
||||||
|
|
||||||
|
evas_object_smart_callback_add(win, "delete,request", _win_del_cb, ui);
|
||||||
|
evisum_child_window_show(ui->win, win);
|
||||||
|
|
||||||
|
_misc_update(ui);
|
||||||
|
|
||||||
|
ui->timer_misc = ecore_timer_add(3.0, _misc_update, ui);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
ui_tab_misc_update(Ui *ui, Sys_Info *info)
|
|
||||||
{
|
|
||||||
Evas_Object *box, *frame;
|
|
||||||
|
|
||||||
if (!ui->misc_visible)
|
|
||||||
return;
|
|
||||||
|
|
||||||
elm_box_clear(ui->misc_activity);
|
|
||||||
|
|
||||||
box = elm_box_add(ui->content);
|
|
||||||
evas_object_size_hint_align_set(box, FILL, FILL);
|
|
||||||
evas_object_size_hint_weight_set(box, EXPAND, EXPAND);
|
|
||||||
evas_object_show(box);
|
|
||||||
|
|
||||||
_network_usage_add(ui, box, info->network_usage.incoming, EINA_TRUE);
|
|
||||||
_network_usage_add(ui, box, info->network_usage.outgoing, EINA_FALSE);
|
|
||||||
_separator_add(box);
|
|
||||||
if (_battery_usage_add(box, &info->power))
|
|
||||||
_separator_add(box);
|
|
||||||
if (_sensor_usage_add(box, info))
|
|
||||||
_separator_add(box);
|
|
||||||
|
|
||||||
frame = elm_frame_add(ui->misc_activity);
|
|
||||||
evas_object_size_hint_align_set(frame, FILL, FILL);
|
|
||||||
evas_object_size_hint_weight_set(frame, EXPAND, EXPAND);
|
|
||||||
elm_object_style_set(frame, "pad_huge");
|
|
||||||
evas_object_show(frame);
|
|
||||||
elm_object_content_set(frame, box);
|
|
||||||
|
|
||||||
elm_box_pack_end(ui->misc_activity, frame);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -5,9 +5,6 @@
|
||||||
#include "../system/machine.h"
|
#include "../system/machine.h"
|
||||||
|
|
||||||
void
|
void
|
||||||
ui_tab_misc_add(Ui *ui);
|
ui_win_misc_add(Ui *ui);
|
||||||
|
|
||||||
void
|
|
||||||
ui_tab_misc_update(Ui *ui, Sys_Info *info);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -189,3 +189,19 @@ evisum_ui_textblock_font_size_get(Evas_Object *tb)
|
||||||
|
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
evisum_child_window_show(Evas_Object *parent, Evas_Object *win)
|
||||||
|
{
|
||||||
|
Evas_Coord x, y, w, h;
|
||||||
|
|
||||||
|
evas_object_resize(win, UI_CHILD_WIN_WIDTH, UI_CHILD_WIN_HEIGHT);
|
||||||
|
evas_object_geometry_get(parent, &x, &y, &w, &h);
|
||||||
|
if (x > 0 && y > 0)
|
||||||
|
evas_object_move(win, x + 20, y + 10);
|
||||||
|
else
|
||||||
|
elm_win_center(win, EINA_TRUE, EINA_TRUE);
|
||||||
|
|
||||||
|
evas_object_show(win);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,9 @@
|
||||||
#define TAB_BTN_HEIGHT 32
|
#define TAB_BTN_HEIGHT 32
|
||||||
#define BTN_WIDTH 80
|
#define BTN_WIDTH 80
|
||||||
#define BTN_HEIGHT 24
|
#define BTN_HEIGHT 24
|
||||||
|
|
||||||
|
#define UI_CHILD_WIN_WIDTH 640
|
||||||
|
#define UI_CHILD_WIN_HEIGHT 480
|
||||||
#define MISC_MAX_WIDTH 640
|
#define MISC_MAX_WIDTH 640
|
||||||
#define MISC_MIN_WIDTH 480
|
#define MISC_MIN_WIDTH 480
|
||||||
|
|
||||||
|
@ -33,5 +36,7 @@ evisum_ui_textblock_font_size_get(Evas_Object *tb);
|
||||||
void
|
void
|
||||||
evisum_ui_textblock_font_size_set(Evas_Object *tb, int new_size);
|
evisum_ui_textblock_font_size_set(Evas_Object *tb, int new_size);
|
||||||
|
|
||||||
|
void
|
||||||
|
evisum_child_window_show(Evas_Object *parent, Evas_Object *win);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue