WifiUi: update wifi button in loop (#37246)

* move to update_state

* move back
This commit is contained in:
Shane Smiskol
2026-02-17 22:41:51 -08:00
committed by GitHub
parent 887ea25b6d
commit 966bb6cc54
2 changed files with 27 additions and 23 deletions
@@ -123,6 +123,29 @@ class NetworkLayoutMici(NavWidget):
self._apn_btn.set_visible(show_cell_settings)
self._cellular_metered_btn.set_visible(show_cell_settings)
# Update wi-fi button with ssid and ip address
# TODO: make sure we handle hidden ssids
connecting_ssid = self._wifi_manager.connecting_to_ssid
connected_network = next((network for network in self._wifi_manager.networks if network.is_connected), None)
if connecting_ssid:
display_network = next((n for n in self._wifi_manager.networks if n.ssid == connecting_ssid), None)
self._wifi_button.set_text(normalize_ssid(connecting_ssid))
self._wifi_button.set_value("connecting...")
elif connected_network is not None:
display_network = connected_network
self._wifi_button.set_text(normalize_ssid(connected_network.ssid))
self._wifi_button.set_value(self._wifi_manager.ipv4_address or "not connected")
else:
display_network = None
self._wifi_button.set_text("wi-fi")
self._wifi_button.set_value("not connected")
if display_network is not None:
strength = WifiIcon.get_strength_icon_idx(display_network.strength)
self._wifi_button.set_icon(self._wifi_full_txt if strength == 2 else self._wifi_medium_txt if strength == 1 else self._wifi_low_txt)
else:
self._wifi_button.set_icon(self._wifi_slash_txt)
def show_event(self):
super().show_event()
self._current_panel = NetworkPanelType.NONE
@@ -162,29 +185,6 @@ class NetworkLayoutMici(NavWidget):
self._network_metered_btn.set_enabled(lambda: not tethering_active and bool(self._wifi_manager.ipv4_address))
self._tethering_toggle_btn.set_checked(tethering_active)
# Update wi-fi button with ssid and ip address
# TODO: make sure we handle hidden ssids
connecting_ssid = self._wifi_manager.connecting_to_ssid
connected_network = next((network for network in networks if network.is_connected), None)
if connecting_ssid:
display_network = next((n for n in networks if n.ssid == connecting_ssid), None)
self._wifi_button.set_text(normalize_ssid(connecting_ssid))
self._wifi_button.set_value("connecting...")
elif connected_network is not None:
display_network = connected_network
self._wifi_button.set_text(normalize_ssid(connected_network.ssid))
self._wifi_button.set_value(self._wifi_manager.ipv4_address or "not connected")
else:
display_network = None
self._wifi_button.set_text("wi-fi")
self._wifi_button.set_value("not connected")
if display_network is not None:
strength = WifiIcon.get_strength_icon_idx(display_network.strength)
self._wifi_button.set_icon(self._wifi_full_txt if strength == 2 else self._wifi_medium_txt if strength == 1 else self._wifi_low_txt)
else:
self._wifi_button.set_icon(self._wifi_slash_txt)
# Update network metered
self._network_metered_btn.set_value(
{
+4
View File
@@ -227,6 +227,10 @@ class WifiManager:
if disconnected is not None:
self._disconnected.append(disconnected)
@property
def networks(self) -> list[Network]:
return self._networks
@property
def ipv4_address(self) -> str:
return self._ipv4_address