✨ feat(dashboard): make Bluetooth and Network tiles toggleable via content area click

This commit is contained in:
sankalp committed 2025-07-27 05:30:38 +05:45
1 parent 7aef900ab7
commit 341523ca24
3 files changed
+45 -1

No files matched your search

+16
View File
@@ -104,6 +104,9 @@ class Bluetooth(Tile):
# Initialize state
self._update_tile_state()
# Override the type_box button behavior to toggle Bluetooth
self._setup_content_button()
def _update_tile_state(self):
"""Update tile visual state based on Bluetooth status."""
self.state = self.bluetooth_client.enabled
@@ -119,6 +122,19 @@ class Bluetooth(Tile):
# Update tile icon based on Bluetooth state
self._update_tile_icon()
def _setup_content_button(self):
"""Setup the content button to toggle Bluetooth instead of showing menu."""
if hasattr(self, 'type_box'):
# Disconnect the existing click handler
self.type_box.disconnect_by_func(self.handle_click)
# Connect to Bluetooth toggle handler
self.type_box.connect("clicked", self._on_bluetooth_toggle)
def _on_bluetooth_toggle(self, *_):
"""Handle Bluetooth toggle when clicking on the main content area."""
# Toggle Bluetooth state
self.bluetooth_client.enabled = not self.bluetooth_client.enabled
def _update_tile_icon(self):
"""Update the tile icon based on Bluetooth status and connected devices."""
if not self.bluetooth_client.enabled:
+17
View File
@@ -106,6 +106,9 @@ class Network(Tile):
if self.network_client.wifi_device:
self._setup_wifi_device()
# Override the type_box button behavior to toggle WiFi
self._setup_content_button()
def handle_connection_change(self, *_):
"""Handle network connection state changes."""
self._update_tile_state()
@@ -213,6 +216,20 @@ class Network(Tile):
self._stop_animation()
self.icon.set_markup(icons.wifi_off)
def _setup_content_button(self):
"""Setup the content button to toggle WiFi instead of showing menu."""
if hasattr(self, 'type_box'):
# Disconnect the existing click handler
self.type_box.disconnect_by_func(self.handle_click)
# Connect to WiFi toggle handler
self.type_box.connect("clicked", self._on_wifi_toggle)
def _on_wifi_toggle(self, *_):
"""Handle WiFi toggle when clicking on the main content area."""
wifi = self.network_client.wifi_device
if wifi:
# Toggle WiFi state
wifi.wireless_enabled = not wifi.wireless_enabled
def create_content(self):
"""Create the detailed network content for the dashboard."""
+12 -1
View File
@@ -85,7 +85,7 @@ class Tile(Box):
)
# Container for label and properties
self.type_box = Box(
content_box = Box(
style_classes="tile-type",
orientation="v",
v_expand=True,
@@ -94,6 +94,17 @@ class Tile(Box):
children=[self.tile_label, self.props],
)
# Make the type_box clickable using a button
self.type_box = Button(
style_classes="tile-content-button",
h_expand=True,
v_expand=True,
child=content_box,
on_clicked=self.handle_click,
)
# Add hover cursor to the content area
add_hover_cursor(self.type_box)
def _create_tile_layout(self, has_menu: bool):
"""Create the tile's layout structure."""
# Create menu button if needed