netstar pushed a commit to branch master.

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

commit f80a020fce31f2044caaf043f2e4a331a9c0f3fb
Author: Alastair Poole <nets...@gmail.com>
Date:   Thu Dec 24 10:46:35 2020 +0000

    ui: search, improve.
---
 src/bin/system/machine/sensors.bogox |   4 +-
 src/bin/system/process.c             |   2 +-
 src/bin/ui/ui_process_list.c         | 137 ++++++++++++++++++++---------------
 3 files changed, 81 insertions(+), 62 deletions(-)

diff --git a/src/bin/system/machine/sensors.bogox 
b/src/bin/system/machine/sensors.bogox
index fb8ee9d..aa43505 100644
--- a/src/bin/system/machine/sensors.bogox
+++ b/src/bin/system/machine/sensors.bogox
@@ -391,11 +391,11 @@ _battery_state_get(power_t *power)
 
 #elif defined(__linux__)
    const char *path;
-   char *link;
    struct dirent *dh;
    struct stat st;
    DIR *dir;
-   char *buf, *naming = NULL;
+   char *buf, *link = NULL, *naming = NULL;
+
 
    for (int i = 0; i < power->battery_count; i++) {
         naming = NULL;
diff --git a/src/bin/system/process.c b/src/bin/system/process.c
index 353a447..a657604 100644
--- a/src/bin/system/process.c
+++ b/src/bin/system/process.c
@@ -234,8 +234,8 @@ static int
 _uid(int pid)
 {
    FILE *f;
-   int uid;
    char line[1024];
+   int uid = 0;
 
    f = fopen(eina_slstr_printf("/proc/%d/status", pid), "r");
    if (!f) return -1;
diff --git a/src/bin/ui/ui_process_list.c b/src/bin/ui/ui_process_list.c
index a368989..643614d 100644
--- a/src/bin/ui/ui_process_list.c
+++ b/src/bin/ui/ui_process_list.c
@@ -36,6 +36,7 @@ typedef struct
    Ecore_Timer     *timer_search;
    Evas_Object     *entry_pop;
    Evas_Object     *entry;
+   Eina_Bool        entry_visible;
 
    Evas_Object     *scroller;
    Evas_Object     *genlist;
@@ -1163,43 +1164,6 @@ _btn_menu_clicked_cb(void *data, Evas_Object *obj,
      _main_menu_dismissed_cb(ui, NULL, NULL);
 }
 
-static void
-_search_add(Ui_Data *pd)
-{
-   Evas_Object *tbl, *tbl2, *rec, *entry;
-
-   pd->entry_pop = tbl = elm_table_add(pd->win);
-   evas_object_lower(tbl);
-
-   rec = evas_object_rectangle_add(evas_object_evas_get(pd->win));
-   evas_object_color_set(rec, 0, 0, 0, 128);
-   evas_object_size_hint_min_set(rec, ELM_SCALE_SIZE(220), 
ELM_SCALE_SIZE(128));
-   evas_object_size_hint_max_set(rec, ELM_SCALE_SIZE(220), 
ELM_SCALE_SIZE(128));
-   evas_object_show(rec);
-   elm_table_pack(tbl, rec, 0, 0, 1, 1);
-
-   tbl2 = elm_table_add(pd->win);
-   evas_object_show(tbl2);
-
-   pd->entry = entry = elm_entry_add(tbl2);
-   evas_object_size_hint_weight_set(entry, EXPAND, EXPAND);
-   evas_object_size_hint_align_set(entry, 0, FILL);
-   elm_entry_single_line_set(entry, 1);
-   elm_entry_scrollable_set(entry, 0);
-   elm_entry_editable_set(entry, 1);
-   elm_object_focus_allow_set(entry, 0);
-   evas_object_show(entry);
-
-   rec = evas_object_rectangle_add(evas_object_evas_get(tbl2));
-   evas_object_color_set(rec, 233, 0, 0, 128);
-   evas_object_size_hint_min_set(rec, ELM_SCALE_SIZE(192), 1);
-   evas_object_size_hint_max_set(rec, ELM_SCALE_SIZE(192), -1);
-   elm_table_pack(tbl2, rec, 0, 0, 1, 1);
-   elm_table_pack(tbl2, entry, 0, 0, 1, 1);
-
-   elm_table_pack(tbl, tbl2, 0, 0, 1, 1);
-}
-
 static Evas_Object *
 _ui_content_system_add(Ui_Data *pd, Evas_Object *parent)
 {
@@ -1355,6 +1319,7 @@ _search_empty(void *data)
    if (!pd->search_len)
      {
         evas_object_lower(pd->entry_pop);
+        pd->entry_visible = 0;
         pd->timer_search = NULL;
         return EINA_FALSE;
      }
@@ -1362,33 +1327,65 @@ _search_empty(void *data)
    return EINA_TRUE;
 }
 
+static void
+_search_add(Ui_Data *pd)
+{
+   Evas_Object *tbl, *tbl2, *rec, *entry;
+
+   pd->entry_pop = tbl = elm_table_add(pd->win);
+   evas_object_lower(tbl);
+
+   rec = evas_object_rectangle_add(evas_object_evas_get(pd->win));
+   evas_object_color_set(rec, 0, 0, 0, 128);
+   evas_object_size_hint_min_set(rec, ELM_SCALE_SIZE(220), 
ELM_SCALE_SIZE(128));
+   evas_object_size_hint_max_set(rec, ELM_SCALE_SIZE(220), 
ELM_SCALE_SIZE(128));
+   evas_object_show(rec);
+   elm_table_pack(tbl, rec, 0, 0, 1, 1);
+
+   tbl2 = elm_table_add(pd->win);
+   evas_object_show(tbl2);
+
+   pd->entry = entry = elm_entry_add(tbl2);
+   evas_object_size_hint_weight_set(entry, EXPAND, EXPAND);
+   evas_object_size_hint_align_set(entry, 0, FILL);
+   elm_entry_single_line_set(entry, 1);
+   elm_entry_scrollable_set(entry, 0);
+   elm_entry_editable_set(entry, 1);
+   elm_object_focus_allow_set(entry, 0);
+   evas_object_show(entry);
+
+   rec = evas_object_rectangle_add(evas_object_evas_get(tbl2));
+   evas_object_size_hint_min_set(rec, ELM_SCALE_SIZE(192), 1);
+   evas_object_size_hint_max_set(rec, ELM_SCALE_SIZE(192), -1);
+   elm_table_pack(tbl2, rec, 0, 0, 1, 1);
+   elm_table_pack(tbl2, entry, 0, 0, 1, 1);
+
+   elm_table_pack(tbl, tbl2, 0, 0, 1, 1);
+}
 
 static void
-_win_key_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+_win_key_down_search(Ui_Data *pd, Evas_Event_Key_Down *ev)
 {
-   Evas_Event_Key_Down *ev;
-   Ui *ui;
-   Ui_Data *pd;
-   Evas_Coord w, h;
    Evas_Object *entry;
-
-   pd = data;
-   ui = pd->ui;
-   ev = event_info;
+   Evas_Coord w, h;
+   Ui *ui = pd->ui;
 
    entry = pd->entry;
 
-   if (!ev || !ev->keyname)
-     return;
-
    if (!strcmp(ev->keyname, "Escape"))
      {
-        elm_object_text_set(obj, "");
-        ui->state.skip_wait = EINA_FALSE;
-        evas_object_lower(pd->entry_pop);
-        pd->search_len = 0;
-        for (int i = 0; i < sizeof(pd->search); i++)
-          pd->search[i] = '\0';
+        if (!pd->entry_visible)
+          ecore_main_loop_quit();
+        else
+          {
+             elm_object_text_set(entry, "");
+             ui->state.skip_wait = EINA_FALSE;
+             evas_object_lower(pd->entry_pop);
+             pd->search_len = 0;
+             for (int i = 0; i < sizeof(pd->search); i++)
+               pd->search[i] = '\0';
+             pd->entry_visible = 0;
+          }
      }
    else if (!strcmp(ev->keyname, "BackSpace"))
      {
@@ -1402,17 +1399,39 @@ _win_key_down_cb(void *data, Evas *e, Evas_Object *obj, 
void *event_info)
          if (pd->search_len == 0 && !pd->timer_search)
            pd->timer_search = ecore_timer_add(2.0, _search_empty, pd);
      }
-   else if (pd->search_len < (sizeof(pd->search)-1))
+   else if (ev->string)
      {
-        if (!ev->string || isspace(ev->string[0])) return;
-        pd->search[pd->search_len++] = ev->keyname[0];
+        size_t len = strlen(ev->string);
+        if (pd->search_len + len > (sizeof(pd->search) - 1)) return;
+        if (isspace(ev->string[0])) return;
+
+        for (int i = 0; i < len; i++)
+          pd->search[pd->search_len++] = ev->string[i];
         elm_object_text_set(entry, pd->search);
-        elm_entry_cursor_pos_set(entry, pd->search_len);
         evas_object_geometry_get(pd->win, NULL, NULL, &w, &h);
         evas_object_move(pd->entry_pop, w / 2, h / 2);
         evas_object_raise(pd->entry_pop);
         evas_object_show(pd->entry_pop);
+        pd->entry_visible = 1;
      }
+}
+
+static void
+_win_key_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+   Evas_Event_Key_Down *ev;
+   Ui *ui;
+   Ui_Data *pd;
+
+   pd = data;
+   ui = pd->ui;
+   ev = event_info;
+
+   if (!ev || !ev->keyname)
+     return;
+
+   _win_key_down_search(pd, ev);
+
    ui->state.skip_wait = EINA_TRUE;
 }
 

-- 


Reply via email to