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:
Alastair Poole 2020-06-28 20:02:07 +01:00
parent 3e0dfd9d7d
commit 35323ea227
13 changed files with 535 additions and 526 deletions

View File

@ -90,6 +90,9 @@ system_cpu_usage_delayed_get(int *ncpu, int usecs);
void
system_memory_usage_get(meminfo_t *memory);
sensor_t **
system_sensors_thermal_get(int *count);
void
system_power_state_get(power_t *power);

View File

@ -715,8 +715,8 @@ _btn_state_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
}
static void
_btn_quit_clicked_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
_quit_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
exit(0);
}
@ -903,7 +903,7 @@ _item_pid_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
}
static void
_ui_tab_system_add(Ui *ui)
_ui_content_system_add(Ui *ui)
{
Evas_Object *parent, *box, *hbox, *frame, *table;
Evas_Object *pb, *button, *plist;
@ -911,7 +911,7 @@ _ui_tab_system_add(Ui *ui)
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_align_set(box, FILL, FILL);
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_align_set(plist, FILL, FILL);
evas_object_show(plist);
elm_win_resize_object_add(ui->win, plist);
elm_box_pack_end(box, table);
elm_box_pack_end(box, plist);
@ -1055,111 +1056,46 @@ _ui_tab_system_add(Ui *ui)
}
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
_transit_del_cb(void *data, Elm_Transit *transit)
{
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,
_menu_memory_activity_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
Ui *ui = data;
_tab_state_changed(ui, obj, ui->mem_view);
ui->mem_visible = EINA_TRUE;
ui_win_memory_add(ui);
}
static void
_tab_system_activity_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
Ui *ui = data;
_tab_state_changed(ui, obj, ui->system_activity);
evas_object_show(ui->entry_search_border);
}
static void
_tab_disk_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)
{
Ui *ui = data;
_tab_state_changed(ui, obj, ui->disk_view);
ui->disk_visible = EINA_TRUE;
ui_win_disk_add(ui);
}
static void
_tab_misc_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)
{
Ui *ui = data;
_tab_state_changed(ui, obj, ui->misc_view);
ui->misc_visible = EINA_TRUE;
ui_win_misc_add(ui);
}
static void
_tab_cpu_activity_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)
{
Ui *ui = data;
_tab_state_changed(ui, obj, ui->cpu_view);
ui->cpu_visible = EINA_TRUE;
ui_win_cpu_add(ui);
}
static void
@ -1199,9 +1135,9 @@ _evisum_search_keypress_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj,
}
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;
ui->content = table = elm_table_add(parent);
@ -1213,89 +1149,9 @@ _ui_tabs_add(Evas_Object *parent, Ui *ui)
frame = elm_frame_add(parent);
evas_object_size_hint_weight_set(frame, EXPAND, 0);
evas_object_size_hint_align_set(frame, FILL, FILL);
elm_object_text_set(frame, _("Options"));
elm_object_style_set(frame, "pad_medium");
elm_object_style_set(frame, "pad_small");
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);
evas_object_size_hint_weight_set(hbox, EXPAND, 0);
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);
evas_object_show(box);
frame = 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);
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");
@ -1331,20 +1181,12 @@ _ui_tabs_add(Evas_Object *parent, Ui *ui)
elm_object_content_set(border, entry);
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_box_pack_end(hbox, frame);
elm_table_pack(ui->content, hbox, 0, 2, 1, 1);
_ui_content_system_add(ui);
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");
if (!control) return;
if (!control)
{
elm_object_focus_set(ui->entry_search, EINA_TRUE);
return;
}
if (ev->keyname[0] == 'e' || ev->keyname[0] == 'E')
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))
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++)
{
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",
evisum_size_format(info->memory.used),
evisum_size_format(info->memory.total)));
ui->network_usage = info->network_usage;
out:
system_info_all_free(info);
}
@ -1532,6 +1376,29 @@ _ui_launch(Ui *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 *
_ui_init(Evas_Object *parent)
{
@ -1544,9 +1411,6 @@ _ui_init(Evas_Object *parent)
ui->sort_type = SORT_BY_PID;
ui->selected_pid = -1;
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_list = NULL;
@ -1558,13 +1422,9 @@ _ui_init(Evas_Object *parent)
_config_load(ui);
_ui_tabs_add(parent, ui);
_ui_tab_system_add(ui);
_ui_content_add(parent, ui);
ui_tab_cpu_add(ui);
ui_tab_memory_add(ui);
ui_tab_disk_add(ui);
ui_tab_misc_add(ui);
_menu_setup(ui);
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);
elm_object_focus_set(ui->entry_search, EINA_TRUE);
return ui;
}

View File

@ -3,6 +3,7 @@
#include <Elementary.h>
#include "gettext.h"
#include "system/machine.h"
#include "system/process.h"
#include "../evisum_config.h"
#include "ui/ui_util.h"
@ -35,25 +36,11 @@ typedef struct Ui
Evas_Object *menu;
Evas_Object *scroller;
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 *cpu_view;
Evas_Object *cpu_activity;
Evas_Object *mem_view;
Evas_Object *mem_activity;
Evas_Object *misc_view;
Evas_Object *misc_activity;
Evas_Object *system_activity;
Elm_Transit *transit;
Evas_Object *current_view;
Eina_Bool cpu_visible;
Eina_Bool misc_visible;
Eina_Bool disk_visible;
@ -62,12 +49,6 @@ typedef struct Ui
Evas_Object *progress_cpu;
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_uid;
Evas_Object *btn_size;
@ -79,13 +60,16 @@ typedef struct Ui
Evisum_Ui_Cache *cache;
Evas_Object *genlist_procs;
Evas_Object *entry_search;
Evas_Object *entry_search_border;
Ecore_Thread *thread_system;
Ecore_Thread *thread_process;
Ecore_Thread *thread_cpu;
Ecore_Timer *timer_pid;
Ecore_Timer *timer_memory;
Ecore_Timer *timer_disk;
Ecore_Timer *timer_misc;
pid_t selected_pid;
pid_t program_pid;
@ -107,6 +91,7 @@ typedef struct Ui
uint64_t incoming_max;
uint64_t outgoing_max;
network_t network_usage;
} Ui;
Ui *

View File

@ -18,27 +18,29 @@ typedef struct {
int pos;
double value;
double step;
} Animation;
} Animate_Data;
typedef struct {
double *value;
Evas_Object *pb;
Ecore_Animator *animator;
Animate_Data *anim_data;
double *value;
Evas_Object *pb;
} Progress;
static void
loop_reset(Animation *anim)
loop_reset(Animate_Data *ad)
{
anim->pos = anim->step = 0;
ad->pos = ad->step = 0;
}
static Eina_Bool
_bg_fill(Animation *anim)
_bg_fill(Animate_Data *ad)
{
uint32_t *pixels;
Evas_Coord x, y, w, h;
evas_object_geometry_get(anim->bg, NULL, NULL, &w, &h);
pixels = evas_object_image_data_get(anim->obj, EINA_TRUE);
evas_object_geometry_get(ad->bg, NULL, NULL, &w, &h);
pixels = evas_object_image_data_get(ad->obj, EINA_TRUE);
if (!pixels) return EINA_FALSE;
for (y = 0; y < h; y++)
{
@ -47,55 +49,53 @@ _bg_fill(Animation *anim)
*(pixels++) = COLOR_BG;
}
}
anim->redraw = EINA_FALSE;
ad->redraw = EINA_FALSE;
return EINA_TRUE;
}
static Eina_Bool
animator(void *data)
animate(void *data)
{
uint32_t *pixels;
Evas_Object *line, *obj, *bg;
Evas_Coord x, y, w, h, fill_y;
double value;
Animation *anim = data;
Animate_Data *ad = data;
if (!anim->ui->cpu_visible) return EINA_TRUE;
bg = anim->bg; line = anim->line; obj = anim->obj;
bg = ad->bg; line = ad->line; obj = ad->obj;
evas_object_geometry_get(bg, &x, &y, &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);
if (anim->enabled)
if (ad->enabled)
evas_object_show(line);
else
evas_object_hide(line);
if (anim->redraw)
if (ad->redraw)
{
_bg_fill(anim);
_bg_fill(ad);
return EINA_TRUE;
}
pixels = evas_object_image_data_get(obj, 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);
for (y = 0; anim->enabled && y < h; y++)
for (y = 0; ad->enabled && y < h; y++)
{
for (x = 0; x < w; x++)
{
if (x == (w - anim->pos))
if (x == (w - ad->pos))
{
*(pixels) = COLOR_BG;
}
if ((x == (w - anim->pos)) && (y >= fill_y))
if ((x == (w - ad->pos)) && (y >= fill_y))
{
if (y % 2)
*(pixels) = COLOR_FG;
@ -104,11 +104,11 @@ animator(void *data)
}
}
anim->step += (double) (w * ecore_animator_frametime_get()) / 60.0;
anim->pos = anim->step;
ad->step += (double) (w * ecore_animator_frametime_get()) / 60.0;
ad->pos = ad->step;
if (anim->pos >= w)
loop_reset(anim);
if (ad->pos >= w)
loop_reset(ad);
return EINA_TRUE;
}
@ -117,21 +117,21 @@ static void
_anim_resize_cb(void *data, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
Animation *anim = data;
Animate_Data *ad = data;
anim->redraw = EINA_TRUE;
loop_reset(anim);
ad->redraw = EINA_TRUE;
loop_reset(ad);
evas_object_hide(anim->line);
evas_object_hide(ad->line);
}
static void
_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
@ -139,12 +139,12 @@ _btn_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
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");
if (!anim->enabled)
rect = elm_object_part_content_get(ad->btn, "elm.swallow.content");
if (!ad->enabled)
evas_object_color_set(rect, 0, 0, 0, 0);
else
evas_object_color_set(rect, 47, 153, 255, 255);
@ -183,38 +183,59 @@ _core_times_cb(void *data, Ecore_Thread *thread)
}
}
void
ui_tab_cpu_add(Ui *ui)
static void
_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 *bg, *line, *obj;
int cpu_count;
parent = ui->content;
if (ui->cpu_visible) return;
ui->cpu_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->cpu_view, 0, 1, 1, 1);
evas_object_hide(box);
ui->cpu_visible = EINA_TRUE;
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_align_set(hbox, FILL, FILL);
elm_box_horizontal_set(hbox, EINA_TRUE);
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_align_set(scroller, FILL, FILL);
elm_scroller_policy_set(scroller,
ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
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_weight_set(box, 0.1, EXPAND);
evas_object_show(box);
@ -222,7 +243,7 @@ ui_tab_cpu_add(Ui *ui)
cpu_count = system_cpu_online_count_get();
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_weight_set(lbox, 0.1, EXPAND);
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_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, obj, 0, 1, 1, 1);
elm_table_pack(tbl, line, 0, 1, 1, 1);
elm_box_pack_end(lbox, tbl);
elm_object_content_set(frame, lbox);
elm_box_pack_end(box, frame);
Progress *progress = calloc(1, sizeof(Progress));
progress->value = calloc(1, sizeof(float *));
progress->pb = pb;
progress->value = &anim->value;
Animate_Data *ad = calloc(1, sizeof(Animate_Data));
if (!ad) return;
ui->cpu_list = eina_list_append(ui->cpu_list, progress);
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));
if (progress)
{
progress->pb = pb;
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->thread_cpu = ecore_thread_run(_core_times_cb, NULL, NULL, ui);
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);
}

View File

@ -5,6 +5,6 @@
#include "../system/machine.h"
void
ui_tab_cpu_add(Ui *ui);
ui_win_cpu_add(Ui *ui);
#endif

View File

@ -1,55 +1,6 @@
#include "ui_disk.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 *
_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);
}
void
ui_tab_disk_update(Ui *ui)
static Eina_Bool
_disk_update(void *data)
{
Ui *ui;
Eina_List *disks;
char *path;
Eina_Bool zfs_mounted = EINA_FALSE;
if (!ui->disk_visible)
return;
ui = data;
elm_box_clear(ui->disk_activity);
@ -186,7 +137,6 @@ ui_tab_disk_update(Ui *ui)
File_System *fs = file_system_info_get(path);
if (fs)
{
// Check for ZFS mount.
if (fs->type == file_system_id_by_name("ZFS"))
zfs_mounted = EINA_TRUE;
@ -196,7 +146,74 @@ ui_tab_disk_update(Ui *ui)
free(path);
}
// Need to keep track of ZFS mounts (ARC memory usage).
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);
}

View File

@ -5,9 +5,6 @@
#include "system/disks.h"
void
ui_tab_disk_add(Ui *ui);
void
ui_tab_disk_update(Ui *ui);
ui_win_disk_add(Ui *ui);
#endif

View File

@ -1,4 +1,13 @@
#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 *
_label_mem(Evas_Object *parent, const char *text)
@ -24,158 +33,178 @@ _progress_add(Evas_Object *parent)
return pb;
}
void
ui_tab_memory_add(Ui *ui)
{
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)
static Eina_Bool
_memory_update(void *data)
{
Widgets *widgets;
Evas_Object *pb;
double ratio, value;
meminfo_t memory;
if (!ui->mem_visible)
return;
memset(&memory, 0, sizeof(memory));
system_memory_usage_get(&memory);
if (ui->zfs_mounted)
info->memory.used += info->memory.zfs_arc_used;
widgets = data;
pb = ui->progress_mem_used;
ratio = info->memory.total / 100.0;
value = info->memory.used / ratio;
if (file_system_in_use("ZFS"))
memory.used += memory.zfs_arc_used;
pb = widgets->used;
ratio = memory.total / 100.0;
value = memory.used / ratio;
elm_progressbar_value_set(pb, value / 100);
elm_progressbar_unit_format_set(pb,
eina_slstr_printf("%s / %s",
evisum_size_format(info->memory.used),
evisum_size_format(info->memory.total)));
evisum_size_format(memory.used),
evisum_size_format(memory.total)));
pb = ui->progress_mem_cached;
ratio = info->memory.total / 100.0;
value = info->memory.cached / ratio;
pb = widgets->cached;
ratio = memory.total / 100.0;
value = memory.cached / ratio;
elm_progressbar_value_set(pb, value / 100);
elm_progressbar_unit_format_set(pb,
eina_slstr_printf("%s / %s",
evisum_size_format(info->memory.cached),
evisum_size_format(info->memory.total)));
evisum_size_format(memory.cached),
evisum_size_format(memory.total)));
pb = ui->progress_mem_buffered;
ratio = info->memory.total / 100.0;
value = info->memory.buffered / ratio;
pb = widgets->buffered;
ratio = memory.total / 100.0;
value = memory.buffered / ratio;
elm_progressbar_value_set(pb, value / 100);
elm_progressbar_unit_format_set(pb,
eina_slstr_printf("%s / %s",
evisum_size_format(info->memory.buffered),
evisum_size_format(info->memory.total)));
evisum_size_format(memory.buffered),
evisum_size_format(memory.total)));
pb = ui->progress_mem_shared;
ratio = info->memory.total / 100.0;
value = info->memory.shared / ratio;
pb = widgets->shared;
ratio = memory.total / 100.0;
value = memory.shared / ratio;
elm_progressbar_value_set(pb, value / 100);
elm_progressbar_unit_format_set(pb,
eina_slstr_printf("%s / %s",
evisum_size_format(info->memory.shared),
evisum_size_format(info->memory.total)));
evisum_size_format(memory.shared),
evisum_size_format(memory.total)));
pb = ui->progress_mem_swap;
if (info->memory.swap_total)
pb = widgets->swap;
if (memory.swap_total)
{
ratio = info->memory.swap_total / 100.0;
value = info->memory.swap_used / ratio;
ratio = memory.swap_total / 100.0;
value = memory.swap_used / ratio;
}
else value = 0.0;
elm_progressbar_value_set(pb, value / 100);
elm_progressbar_unit_format_set(pb,
eina_slstr_printf("%s / %s",
evisum_size_format(info->memory.swap_used),
evisum_size_format(info->memory.swap_total)));
evisum_size_format(memory.swap_used),
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);
}

View File

@ -5,9 +5,7 @@
#include "../system/machine.h"
void
ui_tab_memory_add(Ui *ui);
ui_win_memory_add(Ui *ui);
void
ui_tab_memory_update(Ui *ui, Sys_Info *info);
#endif

View File

@ -1,4 +1,5 @@
#include "ui_misc.h"
#include "system/machine.h"
static Eina_Bool
_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
_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;
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);
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);
}
return !!info->sensor_count;
return count;
}
static char *
@ -248,18 +249,111 @@ _separator_add(Evas_Object *box)
elm_box_pack_end(box, hbox);
}
void
ui_tab_misc_add(Ui *ui)
static void
_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;
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_align_set(box, FILL, FILL);
elm_table_pack(ui->content, ui->misc_view, 0, 1, 1, 1);
evas_object_hide(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_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_align_set(scroller, FILL, FILL);
elm_scroller_policy_set(scroller,
@ -287,12 +381,12 @@ ui_tab_misc_add(Ui *ui)
evas_object_show(border);
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_align_set(table, FILL, FILL);
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_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(frame,scroller);
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);
}

View File

@ -5,9 +5,6 @@
#include "../system/machine.h"
void
ui_tab_misc_add(Ui *ui);
void
ui_tab_misc_update(Ui *ui, Sys_Info *info);
ui_win_misc_add(Ui *ui);
#endif

View File

@ -189,3 +189,19 @@ evisum_ui_textblock_font_size_get(Evas_Object *tb)
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);
}

View File

@ -10,8 +10,11 @@
#define TAB_BTN_HEIGHT 32
#define BTN_WIDTH 80
#define BTN_HEIGHT 24
#define MISC_MAX_WIDTH 640
#define MISC_MIN_WIDTH 480
#define UI_CHILD_WIN_WIDTH 640
#define UI_CHILD_WIN_HEIGHT 480
#define MISC_MAX_WIDTH 640
#define MISC_MIN_WIDTH 480
Evas_Object *
evisum_ui_tab_add(Evas_Object *parent, Evas_Object **alias, const char *text,
@ -33,5 +36,7 @@ evisum_ui_textblock_font_size_get(Evas_Object *tb);
void
evisum_ui_textblock_font_size_set(Evas_Object *tb, int new_size);
void
evisum_child_window_show(Evas_Object *parent, Evas_Object *win);
#endif