feat: properly utilize close to tray and quit action

This commit is contained in:
2026-04-08 00:15:46 +02:00
parent 767955e008
commit 6592cd4ec1
6 changed files with 25 additions and 6 deletions
+8 -2
View File
@@ -272,6 +272,11 @@ def settings_dialog(self):
interface_layout.addWidget(interface_select)
interface_container.setLayout(interface_layout)
# Close To Tray
close_to_tray_container, close_to_tray_checkbox = create_widget(QCheckBox, "Close to Tray: ")
close_to_tray_checkbox.setChecked(state.close_to_tray)
close_to_tray_checkbox.toggled.connect(lambda checked: setattr(state, 'close_to_tray', checked))
# Save / Cancel buttons
layout = QHBoxLayout()
@@ -297,7 +302,8 @@ def settings_dialog(self):
image_opacity.value(),
image_as_wallpaper=image_mode_checkbox.isChecked(),
image_position=image_position_combo.currentText(),
accent_color=accent_color_input.text().strip()
accent_color=accent_color_input.text().strip(),
close_to_tray=close_to_tray_checkbox.isChecked()
)
cancel_btn.clicked.connect(dialog.reject)
@@ -305,7 +311,7 @@ def settings_dialog(self):
layout.addWidget(save_btn)
tabs = QtWidgets.QTabWidget()
create_tab("General", [autoresume_container, update_checkbox_container, transparent_window_container, accent_color_container], tabs=tabs, stretch=True)
create_tab("General", [autoresume_container, update_checkbox_container, transparent_window_container, accent_color_container, close_to_tray_container], tabs=tabs, stretch=True)
create_tab("Image", [enable_image_container, image_mode_container, image_position_container, image_width_container, image_offset_container, image_opacity_container], tabs=tabs, stretch=True)
create_tab("Paths", [download_path_container, image_path_container], tabs=tabs, stretch=True)
create_tab("Network", [interface_container, max_connections_container, max_downloads_container, up_speed_limit_container, down_speed_limit_container, api_url_container], tabs=tabs, stretch=True)
+8
View File
@@ -388,6 +388,14 @@ class MainWindow(QtWidgets.QMainWindow, QWidget):
super().changeEvent(event)
def closeEvent(self, event: QCloseEvent):
if state.close_to_tray is True:
event.ignore()
self.hide()
return
else:
self.shutdown(event)
def shutdown(self, event: QCloseEvent):
closehelper()
event.accept()
from utils.general.shutdown import force_exit
+1 -1
View File
@@ -42,7 +42,7 @@ def run_gui(app):
menu = QMenu()
quit = QAction("Quit")
quit.triggered.connect(app.quit)
quit.triggered.connect(lambda: (closehelper(), force_exit()))
menu.addAction(quit)
tray.setContextMenu(menu)
+4 -2
View File
@@ -15,7 +15,8 @@ def create_config():
"ignore_updates": str(state.ignore_updates),
"autoresume": str(state.autoresume),
"window_transparency": str(state.window_transparency),
"accent_color": str(state.accent_color)
"accent_color": str(state.accent_color),
"close_to_tray": str(state.close_to_tray)
}
config["Network"] = {
@@ -86,6 +87,7 @@ def read_config():
state.autoresume = config.getboolean("General", "autoresume", fallback=state.autoresume)
state.window_transparency = config.getboolean("General", "window_transparency", fallback=state.window_transparency)
state.accent_color = config.get("General", "accent_color", fallback=state.accent_color)
state.close_to_tray = config.getboolean("General", "close_to_tray", fallback=state.close_to_tray)
# Network
state.api_url = config.get("Network", "api_url", fallback=state.api_url)
@@ -147,4 +149,4 @@ def backup_config(config_path):
os.replace(config_path, backup_path)
consoleLog(f"Successfully created backup of corrupted config: {backup_path}")
except Exception as e:
consoleLog(f"Failed to create backup of corrupted config: {e}")
consoleLog(f"Failed to create backup of corrupted config: {e}")
+3 -1
View File
@@ -5,7 +5,7 @@ from utils.data.state import state
def save_settings(close=lambda: None, apiurl=None, download_path=None, down_speed_limit=None, up_speed_limit=None, image_path=None, autoresume=None, max_connections=None, max_downloads=None, bound_interface=None, image_width=None, image_offset=None, image_opacity=None, image_as_wallpaper=None, image_position=None, accent_color=None):
def save_settings(close=lambda: None, apiurl=None, download_path=None, down_speed_limit=None, up_speed_limit=None, image_path=None, autoresume=None, max_connections=None, max_downloads=None, bound_interface=None, image_width=None, image_offset=None, image_opacity=None, image_as_wallpaper=None, image_position=None, accent_color=None, close_to_tray=None):
if apiurl is not None:
state.api_url = apiurl
if download_path is not None:
@@ -36,6 +36,8 @@ def save_settings(close=lambda: None, apiurl=None, download_path=None, down_spee
state.image_position = image_position
if accent_color is not None:
state.accent_color = accent_color
if close_to_tray is not None:
state.close_to_tray = close_to_tray
update_settings() # Update LibTorrent Session Settings
consoleLog("Saved Settings")
+1
View File
@@ -30,6 +30,7 @@ class AppState(QObject):
self.interfaces: List = []
self.active_interfaces: List = []
self.bound_interface: Any = None
self.close_to_tray: bool = True
# Image
self._image_enabled: bool = False