Amélioration du module d'auto-close
This commit is contained in:
@@ -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
|
||||
# ------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user