mirror of
https://github.com/sunnypilot/sunnypilot.git
synced 2026-04-06 22:43:59 +08:00
mici ui: improve tethering a bit (#37418)
* try this * deactivate * faiilures! * starting * try * ... * starting * fix strength * revert * debug * more * override for display network * try * nvm it fixes a few things * cmt * clean up
This commit is contained in:
@@ -33,7 +33,7 @@ class WifiNetworkButton(BigButton):
|
||||
display_network = next((n for n in self._wifi_manager.networks if n.ssid == wifi_state.ssid), None)
|
||||
if wifi_state.status == ConnectStatus.CONNECTING:
|
||||
self.set_text(normalize_ssid(wifi_state.ssid or "wi-fi"))
|
||||
self.set_value("connecting...")
|
||||
self.set_value("starting" if self._wifi_manager.is_tethering_active() else "connecting...")
|
||||
elif wifi_state.status == ConnectStatus.CONNECTED:
|
||||
self.set_text(normalize_ssid(wifi_state.ssid or "wi-fi"))
|
||||
self.set_value(self._wifi_manager.ipv4_address or "obtaining IP...")
|
||||
@@ -46,6 +46,10 @@ class WifiNetworkButton(BigButton):
|
||||
strength = WifiIcon.get_strength_icon_idx(display_network.strength)
|
||||
self.set_icon(self._wifi_full_txt if strength == 2 else self._wifi_medium_txt if strength == 1 else self._wifi_low_txt)
|
||||
self._draw_lock = display_network.security_type not in (SecurityType.OPEN, SecurityType.UNSUPPORTED)
|
||||
elif self._wifi_manager.is_tethering_active():
|
||||
# takes a while to get Network
|
||||
self.set_icon(self._wifi_full_txt)
|
||||
self._draw_lock = True
|
||||
else:
|
||||
self.set_icon(self._wifi_slash_txt)
|
||||
self._draw_lock = False
|
||||
|
||||
@@ -227,9 +227,9 @@ class WifiButton(BigButton):
|
||||
if self._network_forgetting:
|
||||
self.set_value("forgetting...")
|
||||
elif self._is_connecting:
|
||||
self.set_value("connecting...")
|
||||
self.set_value("starting..." if self._network.is_tethering else "connecting...")
|
||||
elif self._is_connected:
|
||||
self.set_value("connected")
|
||||
self.set_value("tethering" if self._network.is_tethering else "connected")
|
||||
elif self._network_missing:
|
||||
# after connecting/connected since NM will still attempt to connect/stay connected for a while
|
||||
self.set_value("not in range")
|
||||
|
||||
@@ -713,11 +713,19 @@ class WifiManager:
|
||||
def _deactivate_connection(self, ssid: str):
|
||||
for active_conn in self._get_active_connections():
|
||||
conn_addr = DBusAddress(active_conn, bus_name=NM, interface=NM_ACTIVE_CONNECTION_IFACE)
|
||||
specific_obj_path = self._router_main.send_and_get_reply(Properties(conn_addr).get('SpecificObject')).body[0][1]
|
||||
reply = self._router_main.send_and_get_reply(Properties(conn_addr).get('SpecificObject'))
|
||||
if reply.header.message_type == MessageType.error:
|
||||
continue # object gone (e.g. rapid connect/disconnect)
|
||||
|
||||
specific_obj_path = reply.body[0][1]
|
||||
|
||||
if specific_obj_path != "/":
|
||||
ap_addr = DBusAddress(specific_obj_path, bus_name=NM, interface=NM_ACCESS_POINT_IFACE)
|
||||
ap_ssid = bytes(self._router_main.send_and_get_reply(Properties(ap_addr).get('Ssid')).body[0][1]).decode("utf-8", "replace")
|
||||
ap_reply = self._router_main.send_and_get_reply(Properties(ap_addr).get('Ssid'))
|
||||
if ap_reply.header.message_type == MessageType.error:
|
||||
continue # AP gone (e.g. mode switch)
|
||||
|
||||
ap_ssid = bytes(ap_reply.body[0][1]).decode("utf-8", "replace")
|
||||
|
||||
if ap_ssid == ssid:
|
||||
self._router_main.send_and_get_reply(new_method_call(self._nm, 'DeactivateConnection', 'o', (active_conn,)))
|
||||
|
||||
Reference in New Issue
Block a user