scar-chat7/client/ui/video_grid_widget.h
2025-12-07 12:00:44 -07:00

41 lines
855 B
C++

#pragma once
#include <QWidget>
#include <QGridLayout>
#include <QLabel>
#include <vector>
namespace scar {
struct VideoStream {
QString streamId;
QString username;
QLabel* videoLabel;
};
class VideoGridWidget : public QWidget {
Q_OBJECT
public:
explicit VideoGridWidget(QWidget* parent = nullptr);
void addStream(const QString& streamId, const QString& username);
void removeStream(const QString& streamId);
void updateFrame(const QString& streamId, const QPixmap& frame);
void clear();
int streamCount() const { return streams_.size(); }
private:
void updateGridLayout();
int calculateColumns(int streamCount);
QGridLayout* gridLayout_;
QLabel* placeholderLabel_;
std::vector<VideoStream> streams_;
static constexpr int MAX_STREAMS = 256;
};
} // namespace scar