MainPanel.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #pragma once
  2. #include <QStringList>
  3. #include <QWidget>
  4. #include "qobjectdefs.h"
  5. #include <QMutex>
  6. #include <QWaitCondition>
  7. #include <QTimer>
  8. #include "util/deviceinterface.h"
  9. class QSplitter;
  10. class UserProfileWidget;
  11. class ChatWindow;
  12. class WebSocketClient;
  13. class StatsWidget;
  14. class AudioDeviceSelectorIcon;
  15. class AudioDeviceSelectorIconDecoupled;
  16. namespace ADS {
  17. class DockManager;
  18. class DockWidget;
  19. }
  20. class MainPanel : public QWidget
  21. {
  22. Q_OBJECT
  23. public:
  24. explicit MainPanel(QWidget *parent = nullptr);
  25. ~MainPanel();
  26. void setRole(const QStringList &roleList);
  27. void setPushRoomId(const QString &room);
  28. signals:
  29. void logoutClicked();
  30. public slots:
  31. private:
  32. void setPlayerWidget(QWidget *newPlayer);
  33. void handleDebouncedPlay(); // 防抖处理函数
  34. private:
  35. QSplitter *splitter = nullptr;
  36. QWidget *playerContainer = nullptr;
  37. QWidget *playerWidget = nullptr;
  38. UserProfileWidget *userProfile = nullptr;
  39. ChatWindow *chatView = nullptr;
  40. WebSocketClient *webSocketClient = nullptr;
  41. StatsWidget *statsWidget = nullptr;
  42. bool m_isStartingPlay = false;
  43. QMutex m_playMutex;
  44. QWaitCondition m_playCond;
  45. QTimer *m_debounceTimer = nullptr;
  46. QString m_pendingRoomId;
  47. class PopoverButtonGroup *buttonGroup;
  48. AudioDeviceSelectorIcon *m_audioDeviceSelector = nullptr;
  49. AudioDeviceSelectorIconDecoupled *m_audioDeviceSelectorDecoupled = nullptr;
  50. // 设备选择器
  51. IDeviceSelector* m_microphoneSelector = nullptr;
  52. IDeviceSelector* m_speakerSelector = nullptr;
  53. // DockManager 相关
  54. ADS::DockManager *m_dockManager = nullptr;
  55. private slots:
  56. void initAudioDeviceSelectors();
  57. void onMicrophoneDeviceSelected(const DeviceInfo& device);
  58. void onSpeakerDeviceSelected(const DeviceInfo& device);
  59. };