fields: fill the screen with text...

This commit is contained in:
Alastair Poole 2021-02-24 19:22:47 +00:00
parent 9dfe057478
commit 0ee2260c3f
4 changed files with 224 additions and 82 deletions

View File

@ -1310,6 +1310,25 @@ proc_sort_by_size(const void *p1, const void *p2)
return 0;
}
int
proc_sort_by_virt(const void *p1, const void *p2)
{
const Proc_Info *inf1, *inf2;
int64_t size1, size2;
inf1 = p1; inf2 = p2;
size1 = inf1->mem_virt;
size2 = inf2->mem_virt;
if (size1 > size2)
return 1;
if (size1 < size2)
return -1;
return 0;
}
int
proc_sort_by_rss(const void *p1, const void *p2)
{
@ -1329,6 +1348,25 @@ proc_sort_by_rss(const void *p1, const void *p2)
return 0;
}
int
proc_sort_by_shared(const void *p1, const void *p2)
{
const Proc_Info *inf1, *inf2;
int64_t size1, size2;
inf1 = p1; inf2 = p2;
size1 = inf1->mem_shared;
size2 = inf2->mem_shared;
if (size1 > size2)
return 1;
if (size1 < size2)
return -1;
return 0;
}
int
proc_sort_by_time(const void *p1, const void *p2)
{

View File

@ -86,9 +86,15 @@ proc_sort_by_threads(const void *p1, const void *p2);
int
proc_sort_by_size(const void *p1, const void *p2);
int
proc_sort_by_virt(const void *p1, const void *p2);
int
proc_sort_by_rss(const void *p1, const void *p2);
int
proc_sort_by_shared(const void *p1, const void *p2);
int
proc_sort_by_time(const void *p1, const void *p2);

View File

@ -68,7 +68,9 @@ typedef struct
Evas_Object *btn_pri;
Evas_Object *btn_nice;
Evas_Object *btn_size;
Evas_Object *btn_virt;
Evas_Object *btn_rss;
Evas_Object *btn_shared;
Evas_Object *btn_state;
Evas_Object *btn_time;
Evas_Object *btn_cpu_usage;
@ -127,8 +129,12 @@ _field_name(Proc_Field id)
return _("Nice");
case PROC_FIELD_SIZE:
return _("Size");
case PROC_FIELD_VIRT:
return _("Virtual");
case PROC_FIELD_RSS:
return _("Reserved");
case PROC_FIELD_SHARED:
return _("Shared");
case PROC_FIELD_STATE:
return _("State");
case PROC_FIELD_TIME:
@ -406,11 +412,21 @@ _item_create(Evas_Object *obj)
lb = _item_column_add(tb, "proc_size", i++);
evas_object_size_hint_align_set(lb, 1.0, FILL);
}
if (_field_enabled(PROC_FIELD_VIRT))
{
lb = _item_column_add(tb, "proc_virt", i++);
evas_object_size_hint_align_set(lb, 1.0, FILL);
}
if (_field_enabled(PROC_FIELD_RSS))
{
lb = _item_column_add(tb, "proc_rss", i++);
evas_object_size_hint_align_set(lb, 1.0, FILL);
}
if (_field_enabled(PROC_FIELD_SHARED))
{
lb = _item_column_add(tb, "proc_shared", i++);
evas_object_size_hint_align_set(lb, 1.0, FILL);
}
if (_field_enabled(PROC_FIELD_STATE))
{
lb = _item_column_add(tb, "proc_state", i++);
@ -601,6 +617,18 @@ _content_get(void *data, Evas_Object *obj, const char *source)
evas_object_show(lb);
}
if (_field_enabled(PROC_FIELD_VIRT))
{
evas_object_geometry_get(pd->btn_rss, NULL, NULL, &w, NULL);
lb = evas_object_data_get(it->obj, "proc_virt");
snprintf(buf, sizeof(buf), "%s", evisum_size_format(proc->mem_virt));
if (strcmp(buf, elm_object_text_get(lb)))
elm_object_text_set(lb, buf);
rec = evas_object_data_get(lb, "rec");
evas_object_size_hint_min_set(rec, w, 1);
evas_object_show(lb);
}
if (_field_enabled(PROC_FIELD_RSS))
{
evas_object_geometry_get(pd->btn_rss, NULL, NULL, &w, NULL);
@ -613,6 +641,18 @@ _content_get(void *data, Evas_Object *obj, const char *source)
evas_object_show(lb);
}
if (_field_enabled(PROC_FIELD_SHARED))
{
evas_object_geometry_get(pd->btn_rss, NULL, NULL, &w, NULL);
lb = evas_object_data_get(it->obj, "proc_shared");
snprintf(buf, sizeof(buf), "%s", evisum_size_format(proc->mem_shared));
if (strcmp(buf, elm_object_text_get(lb)))
elm_object_text_set(lb, buf);
rec = evas_object_data_get(lb, "rec");
evas_object_size_hint_min_set(rec, w, 1);
evas_object_show(lb);
}
if (_field_enabled(PROC_FIELD_STATE))
{
evas_object_geometry_get(pd->btn_state, NULL, NULL, &w, NULL);
@ -1012,16 +1052,16 @@ _btn_clicked_state_save(Ui_Data *pd, Evas_Object *btn)
}
static void
_btn_pid_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
_btn_cmd_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
Ui_Data *pd = data;
Ui *ui = pd->ui;
if (ui->proc.sort_type == PROC_SORT_BY_PID)
if (ui->proc.sort_type == PROC_SORT_BY_CMD)
ui->proc.sort_reverse = !ui->proc.sort_reverse;
ui->proc.sort_type = PROC_SORT_BY_PID;
_btn_clicked_state_save(pd, pd->btn_pid);
ui->proc.sort_type = PROC_SORT_BY_CMD;
_btn_clicked_state_save(pd, pd->btn_cmd);
}
static void
@ -1038,81 +1078,16 @@ _btn_uid_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
}
static void
_btn_cpu_usage_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
Ui_Data *pd = data;
Ui *ui = pd->ui;
if (ui->proc.sort_type == PROC_SORT_BY_CPU_USAGE)
ui->proc.sort_reverse = !ui->proc.sort_reverse;
ui->proc.sort_type = PROC_SORT_BY_CPU_USAGE;
_btn_clicked_state_save(pd, pd->btn_cpu_usage);
}
static void
_btn_size_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
Ui_Data *pd = data;
Ui *ui = pd->ui;
if (ui->proc.sort_type == PROC_SORT_BY_SIZE)
ui->proc.sort_reverse = !ui->proc.sort_reverse;
ui->proc.sort_type = PROC_SORT_BY_SIZE;
_btn_clicked_state_save(pd, pd->btn_size);
}
static void
_btn_pri_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
_btn_pid_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
Ui_Data *pd = data;
Ui *ui = pd->ui;
if (ui->proc.sort_type == PROC_SORT_BY_PRI)
if (ui->proc.sort_type == PROC_SORT_BY_PID)
ui->proc.sort_reverse = !ui->proc.sort_reverse;
ui->proc.sort_type = PROC_SORT_BY_PRI;
_btn_clicked_state_save(pd, pd->btn_pri);
}
static void
_btn_nice_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
Ui_Data *pd = data;
Ui *ui = pd->ui;
if (ui->proc.sort_type == PROC_SORT_BY_NICE)
ui->proc.sort_reverse = !ui->proc.sort_reverse;
ui->proc.sort_type = PROC_SORT_BY_NICE;
_btn_clicked_state_save(pd, pd->btn_nice);
}
static void
_btn_rss_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
Ui_Data *pd = data;
Ui *ui = pd->ui;
if (ui->proc.sort_type == PROC_SORT_BY_RSS)
ui->proc.sort_reverse = !ui->proc.sort_reverse;
ui->proc.sort_type = PROC_SORT_BY_RSS;
_btn_clicked_state_save(pd, pd->btn_rss);
}
static void
_btn_cmd_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
Ui_Data *pd = data;
Ui *ui = pd->ui;
if (ui->proc.sort_type == PROC_SORT_BY_CMD)
ui->proc.sort_reverse = !ui->proc.sort_reverse;
ui->proc.sort_type = PROC_SORT_BY_CMD;
_btn_clicked_state_save(pd, pd->btn_cmd);
ui->proc.sort_type = PROC_SORT_BY_PID;
_btn_clicked_state_save(pd, pd->btn_pid);
}
static void
@ -1142,16 +1117,81 @@ _btn_cpu_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
}
static void
_btn_time_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
_btn_pri_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
Ui_Data *pd = data;
Ui *ui = pd->ui;
if (ui->proc.sort_type == PROC_SORT_BY_PRI)
ui->proc.sort_reverse = !ui->proc.sort_reverse;
ui->proc.sort_type = PROC_SORT_BY_PRI;
_btn_clicked_state_save(pd, pd->btn_pri);
}
static void
_btn_nice_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
Ui_Data *pd = data;
Ui *ui = pd->ui;
if (ui->proc.sort_type == PROC_SORT_BY_NICE)
ui->proc.sort_reverse = !ui->proc.sort_reverse;
ui->proc.sort_type = PROC_SORT_BY_NICE;
_btn_clicked_state_save(pd, pd->btn_nice);
}
static void
_btn_size_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
Ui_Data *pd = data;
Ui *ui = pd->ui;
if (ui->proc.sort_type == PROC_SORT_BY_TIME)
if (ui->proc.sort_type == PROC_SORT_BY_SIZE)
ui->proc.sort_reverse = !ui->proc.sort_reverse;
ui->proc.sort_type = PROC_SORT_BY_TIME;
_btn_clicked_state_save(pd, pd->btn_time);
ui->proc.sort_type = PROC_SORT_BY_SIZE;
_btn_clicked_state_save(pd, pd->btn_size);
}
static void
_btn_virt_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
Ui_Data *pd = data;
Ui *ui = pd->ui;
if (ui->proc.sort_type == PROC_SORT_BY_VIRT)
ui->proc.sort_reverse = !ui->proc.sort_reverse;
ui->proc.sort_type = PROC_SORT_BY_VIRT;
_btn_clicked_state_save(pd, pd->btn_virt);
}
static void
_btn_rss_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
Ui_Data *pd = data;
Ui *ui = pd->ui;
if (ui->proc.sort_type == PROC_SORT_BY_RSS)
ui->proc.sort_reverse = !ui->proc.sort_reverse;
ui->proc.sort_type = PROC_SORT_BY_RSS;
_btn_clicked_state_save(pd, pd->btn_rss);
}
static void
_btn_shared_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
Ui_Data *pd = data;
Ui *ui = pd->ui;
if (ui->proc.sort_type == PROC_SORT_BY_SHARED)
ui->proc.sort_reverse = !ui->proc.sort_reverse;
ui->proc.sort_type = PROC_SORT_BY_SHARED;
_btn_clicked_state_save(pd, pd->btn_shared);
}
static void
@ -1167,6 +1207,32 @@ _btn_state_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
_btn_clicked_state_save(pd, pd->btn_state);
}
static void
_btn_time_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
Ui_Data *pd = data;
Ui *ui = pd->ui;
if (ui->proc.sort_type == PROC_SORT_BY_TIME)
ui->proc.sort_reverse = !ui->proc.sort_reverse;
ui->proc.sort_type = PROC_SORT_BY_TIME;
_btn_clicked_state_save(pd, pd->btn_time);
}
static void
_btn_cpu_usage_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
Ui_Data *pd = data;
Ui *ui = pd->ui;
if (ui->proc.sort_type == PROC_SORT_BY_CPU_USAGE)
ui->proc.sort_reverse = !ui->proc.sort_reverse;
ui->proc.sort_type = PROC_SORT_BY_CPU_USAGE;
_btn_clicked_state_save(pd, pd->btn_cpu_usage);
}
static void
_item_menu_dismissed_cb(void *data EINA_UNUSED, Evas_Object *obj,
void *ev EINA_UNUSED)
@ -1575,6 +1641,19 @@ _content_add(Ui_Data *pd, Evas_Object *parent)
_btn_size_clicked_cb, pd);
_fields[PROC_FIELD_SIZE].btn = btn;
pd->btn_virt = btn = elm_button_add(parent);
_btn_icon_state_init(btn,
(ui->proc.sort_type == PROC_SORT_BY_VIRT ?
ui->proc.sort_reverse : 0),
ui->proc.sort_type == PROC_SORT_BY_VIRT);
evas_object_size_hint_weight_set(btn, 1.0, 0);
evas_object_size_hint_align_set(btn, FILL, FILL);
elm_object_text_set(btn, _("virt"));
evas_object_show(btn);
evas_object_smart_callback_add(btn, "clicked",
_btn_virt_clicked_cb, pd);
_fields[PROC_FIELD_VIRT].btn = btn;
pd->btn_rss = btn = elm_button_add(parent);
_btn_icon_state_init(btn,
(ui->proc.sort_type == PROC_SORT_BY_RSS ?
@ -1588,6 +1667,19 @@ _content_add(Ui_Data *pd, Evas_Object *parent)
_btn_rss_clicked_cb, pd);
_fields[PROC_FIELD_RSS].btn = btn;
pd->btn_shared = btn = elm_button_add(parent);
_btn_icon_state_init(btn,
(ui->proc.sort_type == PROC_SORT_BY_SHARED ?
ui->proc.sort_reverse : 0),
ui->proc.sort_type == PROC_SORT_BY_SHARED);
evas_object_size_hint_weight_set(btn, 1.0, 0);
evas_object_size_hint_align_set(btn, FILL, FILL);
elm_object_text_set(btn, _("shr"));
evas_object_show(btn);
evas_object_smart_callback_add(btn, "clicked",
_btn_shared_clicked_cb, pd);
_fields[PROC_FIELD_SHARED].btn = btn;
pd->btn_state = btn = elm_button_add(parent);
_btn_icon_state_init(btn,
(ui->proc.sort_type == PROC_SORT_BY_STATE ?
@ -1999,7 +2091,9 @@ _init(Ui_Data *pd)
pd->sorters[PROC_SORT_BY_CPU].sort_cb = proc_sort_by_cpu;
pd->sorters[PROC_SORT_BY_THREADS].sort_cb = proc_sort_by_threads;
pd->sorters[PROC_SORT_BY_SIZE].sort_cb = proc_sort_by_size;
pd->sorters[PROC_SORT_BY_VIRT].sort_cb = proc_sort_by_virt;
pd->sorters[PROC_SORT_BY_RSS].sort_cb = proc_sort_by_rss;
pd->sorters[PROC_SORT_BY_SHARED].sort_cb = proc_sort_by_shared;
pd->sorters[PROC_SORT_BY_CMD].sort_cb = proc_sort_by_cmd;
pd->sorters[PROC_SORT_BY_STATE].sort_cb = proc_sort_by_state;
pd->sorters[PROC_SORT_BY_TIME].sort_cb = proc_sort_by_time;

View File

@ -14,7 +14,9 @@ typedef enum
PROC_SORT_BY_PRI,
PROC_SORT_BY_NICE,
PROC_SORT_BY_SIZE,
PROC_SORT_BY_VIRT,
PROC_SORT_BY_RSS,
PROC_SORT_BY_SHARED,
PROC_SORT_BY_STATE,
PROC_SORT_BY_TIME,
PROC_SORT_BY_CPU_USAGE,
@ -31,11 +33,13 @@ typedef enum
PROC_FIELD_PRI = 6,
PROC_FIELD_NICE = 7,
PROC_FIELD_SIZE = 8,
PROC_FIELD_RSS = 9,
PROC_FIELD_STATE = 10,
PROC_FIELD_TIME = 11,
PROC_FIELD_CPU_USAGE = 12,
PROC_FIELD_MAX = 13,
PROC_FIELD_VIRT = 9,
PROC_FIELD_RSS = 10,
PROC_FIELD_SHARED = 11,
PROC_FIELD_STATE = 12,
PROC_FIELD_TIME = 13,
PROC_FIELD_CPU_USAGE = 14,
PROC_FIELD_MAX = 15,
} Proc_Field;
void