47
47
48
48
BATTERY_ICON_GUID = UUID ("7820ae75-23e3-4229-82c1-e41cb67d5b9c" )
49
49
VOLUME_ICON_GUID = UUID ("7820ae73-23e3-4229-82c1-e41cb67d5b9c" )
50
+ NETWORK_GUID = UUID ("7820ae74-23e3-4229-82c1-e41cb67d5b9c" )
50
51
51
52
52
53
class TrayMonitorThread (QThread ):
@@ -90,23 +91,26 @@ def __init__(
90
91
icon_size : int ,
91
92
pin_click_modifier : str ,
92
93
show_unpinned : bool ,
94
+ show_unpinned_button : bool ,
93
95
show_battery : bool ,
94
96
show_volume : bool ,
97
+ show_network : bool ,
95
98
):
96
99
super ().__init__ (class_name = class_name ) # type: ignore
97
100
self .label_collapsed = label_collapsed
98
101
self .label_expanded = label_expanded
99
102
self .label_position = label_position if label_position in {"left" , "right" } else "left"
100
103
self .icon_size = icon_size
101
- self .show_volume = show_volume
102
- self .show_battery = show_battery
103
104
self .show_unpinned = show_unpinned
105
+ self .show_unpinned_button = show_unpinned_button
104
106
105
107
self .filtered_guids : set [UUID ] = set ()
106
- if not self . show_battery :
108
+ if not show_battery :
107
109
self .filtered_guids .add (BATTERY_ICON_GUID )
108
- if not self . show_volume :
110
+ if not show_volume :
109
111
self .filtered_guids .add (VOLUME_ICON_GUID )
112
+ if not show_network :
113
+ self .filtered_guids .add (NETWORK_GUID )
110
114
111
115
IconWidget .icon_size = icon_size
112
116
IconWidget .pin_modifier_key = {
@@ -128,6 +132,10 @@ def __init__(
128
132
self .sort_timer .timeout .connect (self .sort_icons ) # type: ignore
129
133
self .sort_timer .setSingleShot (True )
130
134
135
+ self .pinned_vis_check_timer = QTimer (self )
136
+ self .pinned_vis_check_timer .timeout .connect (self .update_pinned_widget_visibility ) # type: ignore
137
+ self .pinned_vis_check_timer .setSingleShot (True )
138
+
131
139
self .unpinned_vis_btn = QPushButton ()
132
140
self .unpinned_vis_btn .setCheckable (True )
133
141
self .unpinned_vis_btn .clicked .connect (self .toggle_unpinned_widget_visibility ) # type: ignore
@@ -157,6 +165,8 @@ def __init__(
157
165
else :
158
166
self .widget_layout .insertWidget (- 1 , self .unpinned_vis_btn )
159
167
168
+ self .unpinned_vis_btn .setVisible (self .show_unpinned_button )
169
+
160
170
QTimer .singleShot (0 , self .setup_client ) # pyright: ignore [reportUnknownMemberType]
161
171
162
172
def setup_client (self ):
@@ -182,7 +192,7 @@ def showEvent(self, a0: QShowEvent | None) -> None:
182
192
super ().showEvent (a0 )
183
193
self .unpinned_vis_btn .setChecked (self .show_unpinned )
184
194
self .unpinned_vis_btn .setText (self .label_expanded if self .show_unpinned else self .label_collapsed )
185
- self .unpinned_widget .setVisible (self .show_unpinned )
195
+ self .unpinned_widget .setVisible (self .show_unpinned or not self . show_unpinned_button )
186
196
187
197
@pyqtSlot ()
188
198
def on_drag_started (self ):
@@ -231,7 +241,7 @@ def on_icon_modified(self, data: IconData):
231
241
self .update_icon_data (icon .data , data )
232
242
icon .update_icon ()
233
243
icon .setHidden (data .uFlags & NIF_STATE != 0 and data .dwState == 1 )
234
- self .update_pinned_widget_visibility ( )
244
+ self .pinned_vis_check_timer . start ( 300 )
235
245
236
246
@pyqtSlot (IconData )
237
247
def on_icon_deleted (self , data : IconData ) -> None :
@@ -240,7 +250,7 @@ def on_icon_deleted(self, data: IconData) -> None:
240
250
if icon is not None :
241
251
self .icons .remove (icon )
242
252
icon .deleteLater ()
243
- self .update_pinned_widget_visibility ( )
253
+ self .pinned_vis_check_timer . start ( 300 )
244
254
245
255
@pyqtSlot (object )
246
256
def on_icon_pinned_changed (self , icon : IconWidget ):
@@ -295,7 +305,7 @@ def check_icons(self):
295
305
icons_changed = True
296
306
297
307
if icons_changed :
298
- self .update_pinned_widget_visibility ( )
308
+ self .pinned_vis_check_timer . start ( 300 )
299
309
300
310
def update_icon_data (self , old_data : IconData | None , new_data : IconData ):
301
311
"""Update the icon data with the new data received from the tray monitor"""
0 commit comments