This is an automated email from the git hooks/post-receive script.

git pushed a commit to reference refs/pull/125/head
in repository enlightenment.

View the commit online.

commit 01751689b716d2c9bcc83a5bc2ca197ae685e71e
Author: [email protected] <[email protected]>
AuthorDate: Mon Mar 9 21:16:48 2026 -0600

    feat(connman): add forget button and lock overlay to wifi list items
    
    Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
---
 src/modules/connman/e_mod_main.c | 95 +++++++++++++++++++++++++++++++++-------
 1 file changed, 78 insertions(+), 17 deletions(-)

diff --git a/src/modules/connman/e_mod_main.c b/src/modules/connman/e_mod_main.c
index 4f700363e..8151ffbd3 100644
--- a/src/modules/connman/e_mod_main.c
+++ b/src/modules/connman/e_mod_main.c
@@ -47,31 +47,92 @@ _econnman_service_new_icon(struct Connman_Service *cs, Evas *evas)
    edje_object_message_send(icon, EDJE_MESSAGE_INT_SET, 1, msg);
    free(msg);
 
+   /* Emit security signals to show lock overlay on wifi icon */
+   if (cs->type == CONNMAN_SERVICE_TYPE_WIFI && cs->security)
+     {
+        Eina_Iterator *iter;
+        void *security;
+
+        iter = eina_array_iterator_new(cs->security);
+        while (eina_iterator_next(iter, &security))
+          {
+             snprintf(buf, sizeof(buf), "e,security,%s", (const char *)security);
+             edje_object_signal_emit(icon, buf, "e");
+          }
+        eina_iterator_free(iter);
+     }
+
    return icon;
 }
 
-static Evas_Object *
-_econnman_service_new_end(struct Connman_Service *cs, Evas *evas)
+struct _Econnman_Forget_Data
+{
+   struct Connman_Manager *cm;
+   const char *path; /* stringshare */
+};
+
+static void
+_econnman_service_forget_cb(void *data EINA_UNUSED, const char *error)
+{
+   if (error)
+     ERR("Could not forget network: %s", error);
+}
+
+static void
+_econnman_forget_mouse_up_cb(void *data, Evas *e EINA_UNUSED,
+                              Evas_Object *obj EINA_UNUSED,
+                              void *event_info EINA_UNUSED)
+{
+   struct _Econnman_Forget_Data *fd = data;
+   struct Connman_Service *cs;
+
+   cs = econnman_manager_find_service(fd->cm, fd->path);
+   if (!cs) return;
+
+   INF("Forget %s (%s)", cs->name ?: "unknown", cs->path);
+   econnman_service_remove(cs, _econnman_service_forget_cb, NULL);
+}
+
+static void
+_econnman_forget_data_free_cb(void *data, Evas *e EINA_UNUSED,
+                               Evas_Object *obj EINA_UNUSED,
+                               void *event_info EINA_UNUSED)
+{
+   struct _Econnman_Forget_Data *fd = data;
+   eina_stringshare_del(fd->path);
+   free(fd);
+}
+
+static Evas_Object *
+_econnman_service_new_end(struct Connman_Manager *cm,
+                          struct Connman_Service *cs, Evas *evas)
 {
-   Eina_Iterator *iter;
    Evas_Object *end;
-   void *security;
-   char buf[128];
+   struct _Econnman_Forget_Data *fd;
+
+   /* Only show forget button for WiFi services */
+   if (cs->type != CONNMAN_SERVICE_TYPE_WIFI)
+     return NULL;
 
    end = edje_object_add(evas);
-   e_theme_edje_object_set(end, "base/theme/modules/connman",
-                           "e/modules/connman/end");
-
-   if (!cs->security)
-     return end;
-
-   iter = eina_array_iterator_new(cs->security);
-   while (eina_iterator_next(iter, &security))
+   if (!e_theme_edje_object_set(end, "base/theme/modules/connman",
+                                "e/modules/connman/forget"))
      {
-        snprintf(buf, sizeof(buf), "e,security,%s", (const char *)security);
-        edje_object_signal_emit(end, buf, "e");
+        evas_object_del(end);
+        return NULL;
      }
-   eina_iterator_free(iter);
+
+   fd = malloc(sizeof(*fd));
+   EINA_SAFETY_ON_NULL_RETURN_VAL(fd, end);
+   fd->cm = cm;
+   fd->path = eina_stringshare_add(cs->path);
+
+   /* Prevent clicks from propagating to the list item selection */
+   evas_object_propagate_events_set(end, EINA_FALSE);
+   evas_object_event_callback_add(end, EVAS_CALLBACK_MOUSE_UP,
+                                  _econnman_forget_mouse_up_cb, fd);
+   evas_object_event_callback_add(end, EVAS_CALLBACK_DEL,
+                                  _econnman_forget_data_free_cb, fd);
 
    return end;
 }
@@ -145,7 +206,7 @@ _econnman_popup_update(struct Connman_Manager *cm, E_Connman_Instance *inst)
    EINA_INLIST_FOREACH(cm->services, cs)
      {
         Evas_Object *icon = _econnman_service_new_icon(cs, evas);
-        Evas_Object *end = _econnman_service_new_end(cs, evas);
+        Evas_Object *end = _econnman_service_new_end(cm, cs, evas);
         e_widget_ilist_append_full(list, icon, end, cs->name ?: hidden,
                                    _econnman_popup_selected_cb,
                                    inst, cs->path);

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.

Reply via email to