| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- #pragma once
- #include <QStringList>
- #include <QWidget>
- #include "qobjectdefs.h"
- #include <QMutex>
- #include <QWaitCondition>
- #include <QTimer>
- #include "util/deviceinterface.h"
- class QSplitter;
- class UserProfileWidget;
- class ChatWindow;
- class WebSocketClient;
- class StatsWidget;
- class AudioDeviceSelectorIcon;
- class AudioDeviceSelectorIconDecoupled;
- namespace ADS {
- class DockManager;
- class DockWidget;
- }
- class MainPanel : public QWidget
- {
- Q_OBJECT
- public:
- explicit MainPanel(QWidget *parent = nullptr);
- ~MainPanel();
- void setRole(const QStringList &roleList);
- void setPushRoomId(const QString &room);
- signals:
- void logoutClicked();
- public slots:
- private:
- void setPlayerWidget(QWidget *newPlayer);
- void handleDebouncedPlay(); // 防抖处理函数
- private:
- QSplitter *splitter = nullptr;
- QWidget *playerContainer = nullptr;
- QWidget *playerWidget = nullptr;
- UserProfileWidget *userProfile = nullptr;
- ChatWindow *chatView = nullptr;
- WebSocketClient *webSocketClient = nullptr;
- StatsWidget *statsWidget = nullptr;
- bool m_isStartingPlay = false;
- QMutex m_playMutex;
- QWaitCondition m_playCond;
- QTimer *m_debounceTimer = nullptr;
- QString m_pendingRoomId;
- class PopoverButtonGroup *buttonGroup;
- AudioDeviceSelectorIcon *m_audioDeviceSelector = nullptr;
- AudioDeviceSelectorIconDecoupled *m_audioDeviceSelectorDecoupled = nullptr;
-
- // 设备选择器
- IDeviceSelector* m_microphoneSelector = nullptr;
- IDeviceSelector* m_speakerSelector = nullptr;
- // DockManager 相关
- ADS::DockManager *m_dockManager = nullptr;
-
- private slots:
- void initAudioDeviceSelectors();
- void onMicrophoneDeviceSelected(const DeviceInfo& device);
- void onSpeakerDeviceSelected(const DeviceInfo& device);
- };
|