Amélioration du module d'auto-close

This commit is contained in:
2026-03-24 12:54:17 +01:00
parent 8f0f2b2776
commit 5bdbd82232

View File

@@ -37,6 +37,9 @@ class MainWindow(QMainWindow):
self.stored_user_id = self.config.get_discord_user() self.stored_user_id = self.config.get_discord_user()
self.queue_thread = None self.queue_thread = None
self.queue_position_value = None self.queue_position_value = None
self.close_timer = None
self.countdown_timer = None
self.remaining_time = 0 # en secondes
# UI # UI
self.ui = QUiLoader().load(f"{bundle_dir}/ui/mainwindow_vertical_pager.ui", self) self.ui = QUiLoader().load(f"{bundle_dir}/ui/mainwindow_vertical_pager.ui", self)
@@ -186,7 +189,7 @@ class MainWindow(QMainWindow):
self.ui.connexion_btn.setEnabled(False) self.ui.connexion_btn.setEnabled(False)
# fermer l'application après 60 secondes (60000 ms) # fermer l'application après 60 secondes (60000 ms)
QTimer.singleShot(60000, self.close) self.schedule_close()
except ApiError as exc: except ApiError as exc:
@@ -245,6 +248,53 @@ class MainWindow(QMainWindow):
self.ui.connexion_btn.style().unpolish(self.ui.connexion_btn) self.ui.connexion_btn.style().unpolish(self.ui.connexion_btn)
self.ui.connexion_btn.style().polish(self.ui.connexion_btn) self.ui.connexion_btn.style().polish(self.ui.connexion_btn)
# ------------------------------------------------------------------
# Schedule de fermeture du launcher
# ------------------------------------------------------------------
def schedule_close(self, delay: int = 60000):
# Normalisation du délai
if not isinstance(delay, int) or delay <= 0:
delay = 60000
# Conversion en secondes
self.remaining_time = delay // 1000
# 🔁 Annule les timers existants
if self.close_timer:
self.close_timer.stop()
self.close_timer.deleteLater()
if self.countdown_timer:
self.countdown_timer.stop()
self.countdown_timer.deleteLater()
# ⏱ Timer de fermeture
self.close_timer = QTimer(self)
self.close_timer.setSingleShot(True)
self.close_timer.timeout.connect(self.close)
self.close_timer.start(delay)
# ⏳ Timer de countdown (1 seconde)
self.countdown_timer = QTimer(self)
self.countdown_timer.timeout.connect(self._update_countdown)
self.countdown_timer.start(1000)
# Affichage initial
self._update_countdown()
# on affiche un compteur avant fermeture automatique
def _update_countdown(self):
if self.remaining_time <= 0:
if self.countdown_timer:
self.countdown_timer.stop()
return
minutes = self.remaining_time // 60
seconds = self.remaining_time % 60
self.ui.queue_lbl.setText(f"⏳ Fermeture dans {minutes:02d}:{seconds:02d}")
self.remaining_time -= 1
# ------------------------------------------------------------------ # ------------------------------------------------------------------
# Queue managment # Queue managment
# ------------------------------------------------------------------ # ------------------------------------------------------------------