50 lines
1.4 KiB
C++
50 lines
1.4 KiB
C++
#include "mainwindow.h"
|
|
#include "ui_mainwindow.h"
|
|
#include <QHBoxLayout>
|
|
#include <QVBoxLayout>
|
|
#include <QSplitter>
|
|
#include <QTabWidget>
|
|
|
|
MainWindow::MainWindow(QWidget *parent)
|
|
: QMainWindow(parent)
|
|
, ui(new Ui::MainWindow)
|
|
{
|
|
ui->setupUi(this);
|
|
setWindowTitle("GStreamer Camera Viewer");
|
|
resize(1400, 900);
|
|
|
|
setupUI();
|
|
}
|
|
|
|
MainWindow::~MainWindow()
|
|
{
|
|
delete m_socketClient;
|
|
delete ui;
|
|
}
|
|
|
|
void MainWindow::setupUI()
|
|
{
|
|
// Create socket client
|
|
m_socketClient = new SocketClient("/tmp/vizion_control.sock", this);
|
|
|
|
// Create widgets
|
|
m_videoWidget = new VideoViewerWidget(this);
|
|
m_pipelineWidget = new GStreamerPipelineWidget(m_socketClient, this);
|
|
m_cameraWidget = new CameraControlWidget(m_socketClient, this);
|
|
|
|
// Create tab widget for controls on the right
|
|
QTabWidget* controlTabs = new QTabWidget(this);
|
|
controlTabs->addTab(m_pipelineWidget, "Pipeline Control");
|
|
controlTabs->addTab(m_cameraWidget, "Camera Control");
|
|
|
|
// Create horizontal splitter: video on left (full height), controls on right
|
|
QSplitter* mainSplitter = new QSplitter(Qt::Horizontal, this);
|
|
mainSplitter->addWidget(m_videoWidget);
|
|
mainSplitter->addWidget(controlTabs);
|
|
mainSplitter->setStretchFactor(0, 2); // Video gets more space (2/3)
|
|
mainSplitter->setStretchFactor(1, 1); // Controls get less space (1/3)
|
|
|
|
// Set as central widget
|
|
setCentralWidget(mainSplitter);
|
|
}
|