MainPanel.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #pragma once
  2. #include <QStringList>
  3. #include <QWidget>
  4. #include "qobjectdefs.h"
  5. #include <QMutex>
  6. #include <QWaitCondition>
  7. #include <QTimer>
  8. class QSplitter;
  9. class QListWidget;
  10. class UserProfileWidget;
  11. class ChatWindow;
  12. class QListWidgetItem;
  13. class WebSocketClient;
  14. class StatsWidget;
  15. class MainPanel : public QWidget
  16. {
  17. Q_OBJECT
  18. public:
  19. explicit MainPanel(QWidget *parent = nullptr);
  20. ~MainPanel();
  21. void setRole(const QStringList &roleList);
  22. void setPushRoomId(const QString &room);
  23. QListWidget *roomListWidget() { return m_roomListWidget; }
  24. signals:
  25. void logoutClicked();
  26. private:
  27. void setPlayerWidget(QWidget *newPlayer);
  28. void roomItemChanged(QListWidgetItem *item);
  29. void handleDebouncedPlay(); // 防抖处理函数
  30. private:
  31. QSplitter *splitter = nullptr;
  32. QWidget *playerContainer = nullptr;
  33. QWidget *playerWidget = nullptr;
  34. UserProfileWidget *userProfile = nullptr;
  35. ChatWindow *chatView = nullptr;
  36. QListWidget *m_roomListWidget = nullptr;
  37. WebSocketClient *webSocketClient = nullptr;
  38. StatsWidget *statsWidget = nullptr;
  39. bool m_isStartingPlay = false;
  40. QMutex m_playMutex;
  41. QWaitCondition m_playCond;
  42. QTimer *m_debounceTimer = nullptr;
  43. QString m_pendingRoomId;
  44. };