Fix Control Centre Wifi
This commit is contained in:
1 parent
3e239b286f
commit
e89fdb8163
2 files changed
+54
-14
No files matched your search
@@ -20,6 +20,7 @@ from modules.controlcenter.player import PlayerBoxStack
|
||||
from modules.controlcenter.per_app_volume import PerAppVolumeControl
|
||||
from modules.controlcenter.expanded_player import EmbeddedExpandedPlayer
|
||||
from services.mpris import MprisPlayerManager
|
||||
from services.network import NetworkClient
|
||||
from fabric.widgets.svg import Svg
|
||||
from fabric.utils.helpers import get_relative_path
|
||||
|
||||
@@ -58,6 +59,13 @@ class ModusControlCenter(Window):
|
||||
self._expanded_player_widget = None
|
||||
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)
|
||||
|
||||
volume = 100
|
||||
@@ -576,15 +584,46 @@ class ModusControlCenter(Window):
|
||||
except Exception as 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, *_):
|
||||
"""Toggle wifi on/off"""
|
||||
try:
|
||||
# Import and use the network service
|
||||
from services.network import WiFiDevice
|
||||
|
||||
wifi_device = WiFiDevice.get_default()
|
||||
if wifi_device:
|
||||
wifi_device.toggle_wifi()
|
||||
if self.wifi_service:
|
||||
self.wifi_service.toggle_wifi()
|
||||
# Update icon immediately after toggle
|
||||
GLib.timeout_add(100, self.update_wifi_icon)
|
||||
else:
|
||||
logger.warning("WiFi device not available for toggling")
|
||||
except Exception as e:
|
||||
|
||||
@@ -2,6 +2,7 @@ import gi
|
||||
gi.require_version('Gtk', '3.0')
|
||||
gi.require_version('Gdk', '3.0')
|
||||
from gi.repository import Gdk, GLib, Gtk
|
||||
from loguru import logger
|
||||
|
||||
from fabric.widgets.box import Box
|
||||
from fabric.widgets.button import Button
|
||||
@@ -293,14 +294,7 @@ class WifiConnections(Box):
|
||||
if self.wifi_service:
|
||||
# Set up WiFi toggle
|
||||
self.toggle_button.set_active(self.wifi_service.wireless_enabled)
|
||||
self.toggle_button.connect(
|
||||
"notify::active",
|
||||
lambda *_: setattr(
|
||||
self.wifi_service,
|
||||
"wireless_enabled",
|
||||
self.toggle_button.get_active(),
|
||||
),
|
||||
)
|
||||
self.toggle_button.connect("notify::active", self.on_toggle_changed)
|
||||
|
||||
# Connect to WiFi service signals
|
||||
self.wifi_service.connect(
|
||||
@@ -313,6 +307,13 @@ class WifiConnections(Box):
|
||||
# Initial network update
|
||||
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, *_):
|
||||
"""Handle WiFi enabled state changes"""
|
||||
if self.wifi_service:
|
||||
|
||||
Reference in new issue
Block a user