netstar pushed a commit to branch master.

http://git.enlightenment.org/apps/evisum.git/commit/?id=94eeb91467d0bf7f55cc682af20c2dc8220918b0

commit 94eeb91467d0bf7f55cc682af20c2dc8220918b0
Author: Alastair Poole <[email protected]>
Date:   Tue Oct 27 14:24:30 2020 +0000

    process_tree: icon and click it.
---
 data/images/application.png  | Bin 0 -> 5167 bytes
 data/images/meson.build      |   2 +-
 src/bin/ui/ui_process_view.c |  59 ++++++++++++++++++++++++++++++++++++++++---
 3 files changed, 56 insertions(+), 5 deletions(-)

diff --git a/data/images/application.png b/data/images/application.png
new file mode 100644
index 0000000..f7fd70f
Binary files /dev/null and b/data/images/application.png differ
diff --git a/data/images/meson.build b/data/images/meson.build
index 5b7c0c1..50ed7b3 100644
--- a/data/images/meson.build
+++ b/data/images/meson.build
@@ -9,5 +9,5 @@ install_data('go-up.png', 'go-down.png',
              'sky_01.jpg', 'sky_02.jpg', 'sky_03.jpg',
              'sky_04.jpg', 'effects.png',
              'clo.png', 'bolt.png', 'menu.png',
-             'lovethisdogharvey.png',
+             'lovethisdogharvey.png', 'application.png',
              install_dir: join_paths(dir_data, 'evisum/images'))
diff --git a/src/bin/ui/ui_process_view.c b/src/bin/ui/ui_process_view.c
index 8a0a1d0..46c4c3a 100644
--- a/src/bin/ui/ui_process_view.c
+++ b/src/bin/ui/ui_process_view.c
@@ -361,6 +361,24 @@ _time_string(int64_t epoch)
    return strdup(buf);
 }
 
+static void
+_item_tree_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void 
*event_info)
+{
+   Ui_Process *ui;
+   Elm_Object_Item *it;
+   Proc_Info *proc;
+
+   ui = data;
+   it = event_info;
+
+   elm_genlist_item_selected_set(it, EINA_FALSE);
+
+   proc = elm_object_item_data_get(it);
+   if (!proc) return;
+
+   ui_process_win_add(ui->win, proc->pid, proc->command, 3);
+}
+
 static char *
 _tree_text_get(void *data, Evas_Object *obj, const char *part)
 
@@ -373,6 +391,33 @@ _tree_text_get(void *data, Evas_Object *obj, const char 
*part)
    return strdup(buf);
 }
 
+static Evas_Object *
+_tree_icon_get(void *data, Evas_Object *obj, const char *part)
+{
+   Proc_Info *proc;
+   Evas_Object *ic = elm_icon_add(obj);
+
+   proc = data;
+
+   if (!strcmp(part, "elm.swallow.icon"))
+     {
+        elm_icon_standard_set(ic, evisum_icon_path_get("application"));
+     }
+
+   evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+
+   return ic;
+}
+
+static void
+_tree_del(void *data, Evas_Object *obj EINA_UNUSED)
+{
+   Proc_Info *proc = data;
+
+   eina_list_free(proc->children);
+   proc_info_free(proc);
+}
+
 static void
 _tree_populate(Evas_Object *genlist_tree, Elm_Object_Item *parent, Eina_List 
*children)
 {
@@ -383,10 +428,10 @@ _tree_populate(Evas_Object *genlist_tree, Elm_Object_Item 
*parent, Eina_List *ch
 
    itc = elm_genlist_item_class_new();
    itc->item_style = "default";
-   itc->func.content_get = NULL;
+   itc->func.content_get = _tree_icon_get;
    itc->func.text_get = _tree_text_get;
    itc->func.filter_get = NULL;
-   itc->func.del = NULL;
+   itc->func.del = _tree_del;
 
    EINA_LIST_FOREACH(children, l, child)
      {
@@ -416,9 +461,13 @@ _tree_view_update(void *data)
              break;
           }
      }
+
    elm_genlist_realized_items_update(ui->genlist_tree);
 
-   // XXX: free (tired now)...
+   child = eina_list_nth(children, 0);
+   if (child)
+     proc_info_free(child);
+
    return EINA_TRUE;
 }
 
@@ -944,10 +993,12 @@ _tree_tab_add(Evas_Object *parent, Ui_Process *ui)
    evas_object_data_set(genlist, "ui", ui);
    elm_object_focus_allow_set(genlist, EINA_FALSE);
    elm_genlist_homogeneous_set(genlist, EINA_TRUE);
-   elm_genlist_select_mode_set(genlist, ELM_OBJECT_SELECT_MODE_NONE);
+   elm_genlist_select_mode_set(genlist, ELM_OBJECT_SELECT_MODE_DEFAULT);
    evas_object_size_hint_weight_set(genlist, EXPAND, EXPAND);
    evas_object_size_hint_align_set(genlist, FILL, FILL);
    evas_object_show(genlist);
+   evas_object_smart_callback_add(genlist, "selected",
+                   _item_tree_clicked_cb, ui);
 
    elm_box_pack_end(box, genlist);
 

-- 


Reply via email to