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)); } } --
