| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- #include "MainPanel.h"
- #include <QSplitter>
- #include <QVBoxLayout>
- #include <QListWidget>
- #include "widgets/userprofilewidget.h"
- #include "widgets/chatView/chatwindow.h"
- #include "widgets/bubbletip.h"
- #include "api/roomapi.h"
- #include "api/userapi.h"
- #include "appevent.h"
- #include "ui/av_recorder.h"
- #include "AvPlayer2/PlayWidget.h"
- #include <QDebug>
- MainPanel::MainPanel(QWidget *parent)
- : QWidget(parent)
- , userProfile(nullptr)
- , chatView(nullptr)
- {
- // setupUI
- userProfile = new UserProfileWidget(this);
- chatView = new ChatWindow();
- chatView->setMinimumWidth(400);
- QWidget *rightWidget = new QWidget;
- QVBoxLayout *vbox = new QVBoxLayout(rightWidget);
- vbox->setContentsMargins(0, 0, 0, 0);
- vbox->addWidget(userProfile, 0);
- vbox->addWidget(chatView, 1);
- roomListWidget = new QListWidget;
- splitter = new QSplitter(Qt::Horizontal, this);
- playerContainer = new QWidget(this);
- splitter->addWidget(roomListWidget);
- splitter->addWidget(playerContainer);
- splitter->addWidget(rightWidget);
- splitter->setStretchFactor(0, 10);
- splitter->setStretchFactor(1, 60);
- splitter->setStretchFactor(2, 30);
- QVBoxLayout *mainLayout = new QVBoxLayout(this);
- mainLayout->addWidget(splitter, 1);
- mainLayout->setContentsMargins(0, 0, 0, 0);
- mainLayout->setSpacing(0);
- setLayout(mainLayout);
- // initConnect
- connect(AppEvent::instance(), &AppEvent::connectionStateChanged, this, [this](bool connected) {
- if (userProfile) {
- userProfile->setStatus(connected ? "在线" : "离线");
- }
- });
- }
- MainPanel::~MainPanel()
- {
- if (userProfile) {
- delete userProfile;
- userProfile = nullptr;
- }
- }
- void MainPanel::setPlayerWidget(QWidget *newPlayer)
- {
- if (playerWidget) {
- playerWidget->setParent(nullptr);
- playerWidget->deleteLater();
- }
- playerWidget = newPlayer;
- playerWidget->setParent(playerContainer);
- QLayout *oldLayout = playerContainer->layout();
- if (oldLayout) {
- QLayoutItem *item;
- while ((item = oldLayout->takeAt(0)) != nullptr) {
- if (item->widget())
- item->widget()->setParent(nullptr);
- delete item;
- }
- delete oldLayout;
- }
- QVBoxLayout *vbox = new QVBoxLayout(playerContainer);
- vbox->setContentsMargins(0, 0, 0, 0);
- vbox->addWidget(playerWidget);
- }
- void MainPanel::setRole(const QStringList &roleList)
- {
- QWidget *newPlayer = nullptr;
- if (roleList.contains("role.admin")) {
- newPlayer = new AvRecorder(this);
- } else {
- newPlayer = new PlayWidget(this);
- }
- setPlayerWidget(newPlayer);
- }
|