WIP: whitelist, queue
This commit is contained in:
@@ -6,6 +6,7 @@ from PySide6 import QtGui
|
||||
from PySide6.QtCore import Qt
|
||||
from PySide6.QtUiTools import QUiLoader
|
||||
from PySide6.QtWidgets import QMainWindow, QSizePolicy
|
||||
from PySide6.QtCore import QThread, Signal
|
||||
|
||||
from config.config_manager import ConfigManager
|
||||
from config.constants import PlayerServerInfo, Urls
|
||||
@@ -25,14 +26,13 @@ if platform.startswith('linux'):
|
||||
environ["QT_QPA_PLATFORM"] = "xcb"
|
||||
|
||||
class MainWindow(QMainWindow):
|
||||
#update = Signal(str) # Reçoit les callbacks de QueueManager
|
||||
|
||||
def __init__(self, bundle_dir: str, config_manager: ConfigManager):
|
||||
super().__init__()
|
||||
|
||||
self.config = config_manager
|
||||
|
||||
WhiteList.checkwhitelist(Urls.API_URL.value, self.config.get_discord_user())
|
||||
if PlayerServerInfo.is_whitelist:
|
||||
QueueManager(self.config.get_discord_user())
|
||||
self.queue_thread = None
|
||||
|
||||
# UI
|
||||
self.ui = QUiLoader().load(f"{bundle_dir}/ui/mainwindow_vertical_pager.ui", self)
|
||||
@@ -49,6 +49,10 @@ class MainWindow(QMainWindow):
|
||||
self.ui.queue_position.hide()
|
||||
self.ui.stackedWidget.setCurrentIndex(1)
|
||||
|
||||
WhiteList.checkwhitelist(Urls.API_URL.value, self.config.get_discord_user())
|
||||
if PlayerServerInfo.is_whitelist:
|
||||
self.start_queue()
|
||||
|
||||
# Test bouton en contruction
|
||||
en_chantier = False
|
||||
# on set la css du bouton en fonction de la valeur de la variable en_chantier
|
||||
@@ -99,10 +103,8 @@ class MainWindow(QMainWindow):
|
||||
# si le jouer n'est pas whitelisté, on affiche la page pour se faire whitelister
|
||||
if not PlayerServerInfo.is_whitelist:
|
||||
self.ui.stackedWidget.setCurrentIndex(2)
|
||||
|
||||
# pour le moment on cache les controle queue
|
||||
self.ui.queue_lbl.setVisible(False)
|
||||
self.ui.queue_position.setVisible(False)
|
||||
else:
|
||||
self.start_queue() # ← Tout à la fin, UI complètement prête
|
||||
|
||||
self.show()
|
||||
|
||||
@@ -171,6 +173,9 @@ class MainWindow(QMainWindow):
|
||||
# ------------------------------------------------------------------
|
||||
|
||||
def closeEvent(self, event) -> None:
|
||||
if self.queue_thread and self.queue_thread.isRunning():
|
||||
self.queue_thread.stop()
|
||||
self.queue_thread.wait() # Attend que le thread se termine proprement
|
||||
self.config.save()
|
||||
super().closeEvent(event)
|
||||
|
||||
@@ -182,3 +187,56 @@ class MainWindow(QMainWindow):
|
||||
self.ui.connexion_btn.setProperty("en_chantier", valeur) # propriété Qt
|
||||
self.ui.connexion_btn.style().unpolish(self.ui.connexion_btn)
|
||||
self.ui.connexion_btn.style().polish(self.ui.connexion_btn)
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
# Queue managment
|
||||
# ------------------------------------------------------------------
|
||||
def start_queue(self):
|
||||
user_id = self.config.get_discord_user()
|
||||
self.queue_thread = QueueThread(user_id)
|
||||
self.queue_thread.update.connect(self.handle_update)
|
||||
self.queue_thread.start()
|
||||
|
||||
# 🧪 TEMP - Simule une position en queue pour tester l'UI
|
||||
self.handle_update("position:3:10")
|
||||
|
||||
def handle_update(self, message: str):
|
||||
# print(f"[handle_update] reçu: {message}") # ← Debug
|
||||
if message == "ok":
|
||||
self.ui.queue_lbl.setVisible(False)
|
||||
self.ui.queue_position.setVisible(False)
|
||||
#self.ui.connexion_btn.setEnabled(True)
|
||||
#self.ui.connexion_btn.setText("Lancer FiveM")
|
||||
#self.launch_fivem()
|
||||
|
||||
elif message == "ready":
|
||||
self.ui.queue_lbl.setVisible(True)
|
||||
self.ui.queue_position.setVisible(False)
|
||||
self.ui.queue_lbl.setText("🚀 C'est votre tour !")
|
||||
self.launch_fivem()
|
||||
|
||||
elif message.startswith("position:"):
|
||||
_, pos, total = message.split(":")
|
||||
self.ui.queue_lbl.setVisible(True)
|
||||
self.ui.queue_position.setVisible(True)
|
||||
#self.ui.queue_position.setText(f"{pos} / {total}") <- si on veux le total de slots
|
||||
self.ui.queue_position.setText(f"{pos}")
|
||||
|
||||
def launch_fivem(self):
|
||||
pass
|
||||
|
||||
class QueueThread(QThread):
|
||||
update = Signal(str) # Reçoit les callbacks de QueueManager
|
||||
|
||||
def __init__(self, user_id: str):
|
||||
super().__init__()
|
||||
self.manager = QueueManager(
|
||||
user_id=user_id,
|
||||
on_update=self.update.emit # Le callback envoie un Signal Qt
|
||||
)
|
||||
|
||||
def run(self):
|
||||
self.manager.start()
|
||||
|
||||
def stop(self):
|
||||
self.manager.stop()
|
||||
|
||||
Reference in New Issue
Block a user