diff --git a/src/bin/ui/ui_process_list.c b/src/bin/ui/ui_process_list.c index 1443d6f..71ffcc7 100644 --- a/src/bin/ui/ui_process_list.c +++ b/src/bin/ui/ui_process_list.c @@ -10,6 +10,8 @@ #include #include +#define PROGRESS_CUSTOM_FORMAT 0 + extern int EVISUM_EVENT_CONFIG_CHANGED; typedef struct @@ -58,9 +60,12 @@ typedef struct static Ui_Data *_pd = NULL; -// See pb_format_cb. +#if defined(PROGRESS_CUSTOM_FORMAT) + static double _cpu_usage = 0.0; +#endif + static int _sort_by_pid(const void *p1, const void *p2) { @@ -242,6 +247,7 @@ _item_column_add(Evas_Object *tbl, const char *text, int col) return lb; } +#if defined(PROGRESS_CUSTOM_FORMAT) static char * _pb_format_cb(double val) { @@ -257,6 +263,7 @@ _pb_format_free_cb(char *str) { free(str); } +#endif static Evas_Object * _item_create(Evas_Object *parent) @@ -327,7 +334,9 @@ _item_create(Evas_Object *parent) pb = elm_progressbar_add(hbx); evas_object_size_hint_weight_set(pb, EXPAND, EXPAND); evas_object_size_hint_align_set(pb, FILL, FILL); +#if defined(PROGRESS_CUSTOM_FORMAT) elm_progressbar_unit_format_function_set(pb, _pb_format_cb, _pb_format_free_cb); +#endif elm_box_pack_end(hbx, pb); evas_object_data_set(tbl, "proc_cpu_usage", pb); @@ -340,6 +349,7 @@ _content_get(void *data, Evas_Object *obj, const char *source) Proc_Info *proc; struct passwd *pwd_entry; Evas_Object *l, *r, *o, *hbx, *pb; + char buf[128]; Evas_Coord w, ow; Ui_Data *pd = _pd; @@ -358,7 +368,8 @@ _content_get(void *data, Evas_Object *obj, const char *source) evas_object_geometry_get(pd->btn_pid, NULL, NULL, &w, NULL); l = evas_object_data_get(it->obj, "proc_pid"); - elm_object_text_set(l, eina_slstr_printf("%d", proc->pid)); + snprintf(buf, sizeof(buf), "%d", proc->pid); + elm_object_text_set(l, buf); evas_object_geometry_get(l, NULL, NULL, &ow, NULL); if (ow > w) evas_object_size_hint_min_set(pd->btn_pid, w, 1); r = evas_object_data_get(l, "rec"); @@ -370,9 +381,10 @@ _content_get(void *data, Evas_Object *obj, const char *source) l = evas_object_data_get(it->obj, "proc_uid"); pwd_entry = getpwuid(proc->uid); if (pwd_entry) - elm_object_text_set(l, eina_slstr_printf("%s", pwd_entry->pw_name)); + snprintf(buf, sizeof(buf), "%s", pwd_entry->pw_name); else - elm_object_text_set(l, eina_slstr_printf("%d", proc->uid)); + snprintf(buf, sizeof(buf), "%i", proc->uid); + elm_object_text_set(l, buf); evas_object_geometry_get(l, NULL, NULL, &ow, NULL); if (ow > w) evas_object_size_hint_min_set(pd->btn_uid, w, 1); r = evas_object_data_get(l, "rec"); @@ -382,7 +394,8 @@ _content_get(void *data, Evas_Object *obj, const char *source) evas_object_geometry_get(pd->btn_size, NULL, NULL, &w, NULL); w += PAD_W; l = evas_object_data_get(it->obj, "proc_size"); - elm_object_text_set(l, eina_slstr_printf("%s", evisum_size_format(proc->mem_size))); + snprintf(buf, sizeof(buf), "%s", evisum_size_format(proc->mem_size)); + elm_object_text_set(l, buf); evas_object_geometry_get(l, NULL, NULL, &ow, NULL); if (ow > w) evas_object_size_hint_min_set(pd->btn_size, w, 1); r = evas_object_data_get(l, "rec"); @@ -392,7 +405,8 @@ _content_get(void *data, Evas_Object *obj, const char *source) evas_object_geometry_get(pd->btn_rss, NULL, NULL, &w, NULL); w += PAD_W; l = evas_object_data_get(it->obj, "proc_rss"); - elm_object_text_set(l, eina_slstr_printf("%s", evisum_size_format(proc->mem_rss))); + snprintf(buf, sizeof(buf), "%s", evisum_size_format(proc->mem_rss)); + elm_object_text_set(l, buf); evas_object_geometry_get(l, NULL, NULL, &ow, NULL); if (ow > w) evas_object_size_hint_min_set(pd->btn_rss, w, 1); r = evas_object_data_get(l, "rec"); @@ -403,7 +417,8 @@ _content_get(void *data, Evas_Object *obj, const char *source) evas_object_geometry_get(pd->btn_cmd, NULL, NULL, &w, NULL); w += ow; l = evas_object_data_get(it->obj, "proc_cmd"); - elm_object_text_set(l, eina_slstr_printf("%s", proc->command)); + snprintf(buf, sizeof(buf), "%s", proc->command); + elm_object_text_set(l, buf); hbx = evas_object_data_get(l, "hbx"); evas_object_geometry_get(hbx, NULL, NULL, &ow, NULL); if (ow > w) evas_object_size_hint_min_set(pd->btn_cmd, w, 1); @@ -419,7 +434,9 @@ _content_get(void *data, Evas_Object *obj, const char *source) evas_object_geometry_get(pd->btn_state, NULL, NULL, &w, NULL); l = evas_object_data_get(it->obj, "proc_state"); - elm_object_text_set(l, eina_slstr_printf("%s", proc->state)); + snprintf(buf, sizeof(buf), "%s", proc->state); + + elm_object_text_set(l, buf); evas_object_geometry_get(l, NULL, NULL, &ow, NULL); r = evas_object_data_get(l, "rec"); evas_object_size_hint_min_set(r, w, 1); @@ -427,7 +444,10 @@ _content_get(void *data, Evas_Object *obj, const char *source) pb = evas_object_data_get(it->obj, "proc_cpu_usage"); _cpu_usage = proc->cpu_usage; - elm_progressbar_value_set(pb, proc->cpu_usage / 100.0); + double value = proc->cpu_usage / 100.0; + double last = elm_progressbar_value_get(pb); + if (!EINA_DBL_EQ(value, last)) + elm_progressbar_value_set(pb, proc->cpu_usage / 100.0); evas_object_show(pb); evas_object_show(it->obj); @@ -494,7 +514,7 @@ _bring_in(void *data) elm_scroller_last_page_get(pd->scroller, &h_page, &v_page); elm_scroller_page_bring_in(pd->scroller, h_page, v_page); - ecore_timer_add(0.5, _show_items, pd); + ecore_timer_add(2.0, _show_items, pd); return EINA_FALSE; } @@ -1142,7 +1162,7 @@ _genlist_scroll_end_cb(void *data, Evas_Object *obj EINA_UNUSED, static Evas_Object * _ui_content_system_add(Ui_Data *pd, Evas_Object *parent) { - Evas_Object *bx, *fr, *tbl, *btn, *plist; + Evas_Object *bx, *fr, *tbl, *btn, *glist; Ui *ui = pd->ui; int i = 0; @@ -1252,18 +1272,19 @@ _ui_content_system_add(Ui_Data *pd, Evas_Object *parent) evas_object_smart_callback_add(btn, "clicked", _btn_cpu_usage_clicked_cb, pd); - pd->scroller = pd->genlist = plist = elm_genlist_add(parent); - elm_genlist_homogeneous_set(plist, 1); + pd->scroller = pd->genlist = glist = elm_genlist_add(parent); + elm_genlist_homogeneous_set(glist, 1); elm_scroller_gravity_set(pd->scroller, 0.0, 1.0); - elm_object_focus_allow_set(plist, EINA_FALSE); + elm_object_focus_allow_set(glist, EINA_FALSE); elm_scroller_movement_block_set(pd->scroller, ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL); elm_scroller_policy_set(pd->scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO); - elm_genlist_multi_select_set(plist, EINA_FALSE); - evas_object_size_hint_weight_set(plist, EXPAND, EXPAND); - evas_object_size_hint_align_set(plist, FILL, FILL); - elm_table_pack(tbl, plist, 0, 2, i, 1); + elm_genlist_multi_select_set(glist, EINA_FALSE); + evas_object_size_hint_weight_set(glist, EXPAND, EXPAND); + evas_object_size_hint_align_set(glist, FILL, FILL); + evas_object_show(glist); + elm_table_pack(tbl, glist, 0, 2, i, 1); evas_object_smart_callback_add(pd->genlist, "selected", _item_pid_clicked_cb, pd);