MainPanel.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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 UserProfileWidget;
  10. class ChatWindow;
  11. class WebSocketClient;
  12. class StatsWidget;
  13. namespace ADS {
  14. class DockManager;
  15. class DockWidget;
  16. }
  17. class MainPanel : public QWidget
  18. {
  19. Q_OBJECT
  20. public:
  21. explicit MainPanel(QWidget *parent = nullptr);
  22. ~MainPanel();
  23. void setRole(const QStringList &roleList);
  24. void setPushRoomId(const QString &room);
  25. signals:
  26. void logoutClicked();
  27. public slots:
  28. private:
  29. void setPlayerWidget(QWidget *newPlayer);
  30. void handleDebouncedPlay(); // 防抖处理函数
  31. private:
  32. QSplitter *splitter = nullptr;
  33. QWidget *playerContainer = nullptr;
  34. QWidget *playerWidget = nullptr;
  35. UserProfileWidget *userProfile = nullptr;
  36. ChatWindow *chatView = 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. // DockManager 相关
  45. ADS::DockManager *m_dockManager = nullptr;
  46. };