okra pushed a commit to branch master.

http://git.enlightenment.org/enlightenment/gadgets/wireless.git/commit/?id=e4f8c89899d3287e4639566bffb2e248bd82d0e1

commit e4f8c89899d3287e4639566bffb2e248bd82d0e1
Author: Stephen Houston <[email protected]>
Date:   Thu Nov 30 10:21:24 2017 -0600

    Update when access points are added/removed.
---
 TODO                 | 12 ++++++++----
 src/networkmanager.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 55 insertions(+), 4 deletions(-)

diff --git a/TODO b/TODO
index d7072ce..8c98b9e 100644
--- a/TODO
+++ b/TODO
@@ -1,10 +1,14 @@
 NetworkManager Support:
+
 --Untested--
-Dns config editing - DNS domain and name servers are likely not stored 
correctly.
+DNS config editing - DNS domain and name servers are likely not stored 
correctly.
 Proxy config editing
+
 --Issues--
-Doesn't update the icon correctly when activing connections on separate devices
-Random crashes
+Doesn't always update the icon correctly - Forgetting a wifi network goes back 
to ethernet mode... why?
+Random crashes -- Are they sandbox related or wireless related?
+
+When forgetting a network the connection setting is removed and thus doesn't 
show up in the network list anymore -- however the access point is still 
available so this should somehow update that the connection setting is removed 
but not the access point.
+
 --Needed--
-Update when connections and access points are added/removed
 Add WEP support to agent. Currently only WPA will work.
diff --git a/src/networkmanager.c b/src/networkmanager.c
index 55f627a..d3e74c8 100644
--- a/src/networkmanager.c
+++ b/src/networkmanager.c
@@ -2077,6 +2077,47 @@ _networkmanager_manager_technology_event_property(void 
*data, const Eldbus_Messa
 }
 
 static void
+_networkmanager_manager_ap_add(void *data, const Eldbus_Message *msg)
+{
+   const char *path;
+   Eldbus_Object *obj;
+   Eldbus_Proxy *proxy;
+   Eldbus_Pending *pend;
+   NetworkManager_Technology *nt = data;
+
+   if (!eldbus_message_arguments_get(msg, "o", &path))
+     {
+        ERR("Could not parse connection update %p", msg);
+        return;
+     }
+   obj = eldbus_object_get(dbus_conn, NETWORKMANAGER_BUS_NAME, path);
+   proxy = eldbus_proxy_get(obj,
+                            NETWORKMANAGER_BUS_INTERFACE ".AccessPoint");
+   pend = eldbus_proxy_property_get_all(proxy,
+              _networkmanager_manager_getaps, nt);
+   pending_technologies = eina_list_append(pending_technologies, pend);
+}
+
+static void
+_networkmanager_manager_ap_remove(void *data EINA_UNUSED, const Eldbus_Message 
*msg)
+{
+   const char *path;
+   NetworkManager_Service *ns;
+   int i;
+
+   if (!eldbus_message_arguments_get(msg, "o", &path))
+     {
+        ERR("Could not parse property update %p", msg);
+        return;
+     }
+   ns = _networkmanager_service_find_path(path);
+   EINA_SAFETY_ON_NULL_RETURN(ns);
+   i = ns->type;
+   _networkmanager_service_free(ns);
+   _networkmanager_update_networks(i);
+}
+
+static void
 _networkmanager_manager_gettechnologies(void *data, const Eldbus_Message *msg, 
Eldbus_Pending *pending)
 {
    const char *name, *text;
@@ -2150,6 +2191,12 @@ _networkmanager_manager_gettechnologies(void *data, 
const Eldbus_Message *msg, E
         pend = eldbus_proxy_call(proxy, "GetAllAccessPoints",
                    _networkmanager_manager_gettechnologies_prop_aps, nt, -1, 
"");
         pending_technologies = eina_list_append(pending_technologies, pend);
+        sig_handlers = eina_list_append(sig_handlers,
+                           eldbus_proxy_signal_handler_add(proxy, 
"AccessPointAdded",
+                               _networkmanager_manager_ap_add, nt));
+        sig_handlers = eina_list_append(sig_handlers,
+                           eldbus_proxy_signal_handler_add(proxy, 
"AccessPointRemoved",
+                               _networkmanager_manager_ap_remove, NULL));
     }
 }
 

-- 


Reply via email to