Fix Control Centre Wifi

This commit is contained in:
tr1x_em committed 2025-08-09 14:44:55 +05:30
1 parent 3e239b286f
commit e89fdb8163
2 files changed
+54 -14

No files matched your search

+45 -6
View File
@@ -20,6 +20,7 @@ from modules.controlcenter.player import PlayerBoxStack
from modules.controlcenter.per_app_volume import PerAppVolumeControl from modules.controlcenter.per_app_volume import PerAppVolumeControl
from modules.controlcenter.expanded_player import EmbeddedExpandedPlayer from modules.controlcenter.expanded_player import EmbeddedExpandedPlayer
from services.mpris import MprisPlayerManager from services.mpris import MprisPlayerManager
from services.network import NetworkClient
from fabric.widgets.svg import Svg from fabric.widgets.svg import Svg
from fabric.utils.helpers import get_relative_path from fabric.utils.helpers import get_relative_path
@@ -58,6 +59,13 @@ class ModusControlCenter(Window):
self._expanded_player_widget = None self._expanded_player_widget = None
self._mpris_manager = None # Shared MPRIS manager instance self._mpris_manager = None # Shared MPRIS manager instance
# Initialize network service for WiFi toggle
self.network_service = NetworkClient()
self.wifi_service = None
# Wait for network service to be ready
self.network_service.connect("wifi-device-added", self.on_network_ready)
self.add_keybinding("Escape", self.hide_controlcenter) self.add_keybinding("Escape", self.hide_controlcenter)
volume = 100 volume = 100
@@ -576,15 +584,46 @@ class ModusControlCenter(Window):
except Exception as e: except Exception as e:
logger.warning(f"Failed to toggle bluetooth: {e}") logger.warning(f"Failed to toggle bluetooth: {e}")
def on_network_ready(self, *_):
"""Called when network service is ready"""
self.wifi_service = self.network_service.wifi_device
if self.wifi_service:
# Connect to WiFi state changes to update icon
self.wifi_service.connect("notify::wireless-enabled", self.update_wifi_icon)
def update_wifi_icon(self, *_):
"""Update WiFi icon based on current state"""
try:
if self.wifi_service and hasattr(self, 'wifi_svg'):
is_enabled = self.wifi_service.wireless_enabled
icon_file = (
"../../config/assets/icons/applets/wifi.svg"
if is_enabled
else "../../config/assets/icons/applets/wifi-off.svg"
)
self.wifi_svg.set_from_file(get_relative_path(icon_file))
# Also update the label
if is_enabled:
if hasattr(self.wifi_service, 'active_access_point') and self.wifi_service.active_access_point:
# Connected to a network
GLib.idle_add(lambda: self.wlan_label.set_label("Connected"))
else:
# WiFi enabled but not connected
GLib.idle_add(lambda: self.wlan_label.set_label("Not Connected"))
else:
# WiFi disabled
GLib.idle_add(lambda: self.wlan_label.set_label("No Connection"))
except Exception as e:
logger.warning(f"Failed to update WiFi icon: {e}")
def toggle_wifi(self, *_): def toggle_wifi(self, *_):
"""Toggle wifi on/off""" """Toggle wifi on/off"""
try: try:
# Import and use the network service if self.wifi_service:
from services.network import WiFiDevice self.wifi_service.toggle_wifi()
# Update icon immediately after toggle
wifi_device = WiFiDevice.get_default() GLib.timeout_add(100, self.update_wifi_icon)
if wifi_device:
wifi_device.toggle_wifi()
else: else:
logger.warning("WiFi device not available for toggling") logger.warning("WiFi device not available for toggling")
except Exception as e: except Exception as e:
+9 -8
View File
@@ -2,6 +2,7 @@ import gi
gi.require_version('Gtk', '3.0') gi.require_version('Gtk', '3.0')
gi.require_version('Gdk', '3.0') gi.require_version('Gdk', '3.0')
from gi.repository import Gdk, GLib, Gtk from gi.repository import Gdk, GLib, Gtk
from loguru import logger
from fabric.widgets.box import Box from fabric.widgets.box import Box
from fabric.widgets.button import Button from fabric.widgets.button import Button
@@ -293,14 +294,7 @@ class WifiConnections(Box):
if self.wifi_service: if self.wifi_service:
# Set up WiFi toggle # Set up WiFi toggle
self.toggle_button.set_active(self.wifi_service.wireless_enabled) self.toggle_button.set_active(self.wifi_service.wireless_enabled)
self.toggle_button.connect( self.toggle_button.connect("notify::active", self.on_toggle_changed)
"notify::active",
lambda *_: setattr(
self.wifi_service,
"wireless_enabled",
self.toggle_button.get_active(),
),
)
# Connect to WiFi service signals # Connect to WiFi service signals
self.wifi_service.connect( self.wifi_service.connect(
@@ -313,6 +307,13 @@ class WifiConnections(Box):
# Initial network update # Initial network update
self.update_networks() self.update_networks()
def on_toggle_changed(self, toggle_button, *_):
"""Handle WiFi toggle button changes"""
if self.wifi_service:
new_state = toggle_button.get_active()
self.wifi_service.wireless_enabled = new_state
logger.info(f"[WiFi] Toggle changed to: {new_state}")
def on_wifi_enabled_changed(self, *_): def on_wifi_enabled_changed(self, *_):
"""Handle WiFi enabled state changes""" """Handle WiFi enabled state changes"""
if self.wifi_service: if self.wifi_service: