diff --git a/src/ui/main_window.py b/src/ui/main_window.py index ef27176..9856ba8 100644 --- a/src/ui/main_window.py +++ b/src/ui/main_window.py @@ -37,6 +37,9 @@ class MainWindow(QMainWindow): self.stored_user_id = self.config.get_discord_user() self.queue_thread = None self.queue_position_value = None + self.close_timer = None + self.countdown_timer = None + self.remaining_time = 0 # en secondes # UI 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) # fermer l'application après 60 secondes (60000 ms) - QTimer.singleShot(60000, self.close) + self.schedule_close() 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().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 # ------------------------------------------------------------------