140 lines
4.3 KiB
C++
140 lines
4.3 KiB
C++
#include "camconfig.h"
|
|
#include "mylogger.h"
|
|
#include "util.h"
|
|
|
|
|
|
CamConfigurator::CamConfigurator(Pylon::DeviceInfoList_t &deviceList, QWidget *parent) :
|
|
deviceList(deviceList), QDialog(parent), preview(nullptr) {
|
|
mode_combo = new QComboBox(this);
|
|
mode_combo->addItem("camera mode");
|
|
mode_combo->addItem("single camera");
|
|
if (deviceList.size() > 1){
|
|
mode_combo->addItem("stereo camera");
|
|
}
|
|
connect(mode_combo, SIGNAL(currentIndexChanged(int)), SLOT(modeChanged(int)));
|
|
|
|
device_combo = new QComboBox(this);
|
|
for (auto d : deviceList) {
|
|
device_combo->addItem(QString(d.GetFullName().c_str()));
|
|
}
|
|
connect(device_combo, SIGNAL(currentIndexChanged(int)), SLOT(primaryDeviceChanged(int)));
|
|
|
|
// orientation_combo = new QComboBox(this);
|
|
// orientation_combo->addItem("Vertical");
|
|
// orientation_combo->addItem("Horizontal");
|
|
// orientation_combo->setEnabled(false);
|
|
// connect(orientation_combo, SIGNAL(currentIndexChanged(int)), SLOT(orientationChanged(int)));
|
|
|
|
QWidget *header = new QWidget(this);
|
|
QGridLayout *grid = new QGridLayout(header);
|
|
grid->addWidget(new QLabel("Recording mode:", this), 0, 0);
|
|
grid->addWidget(mode_combo, 0, 1);
|
|
grid->addWidget(new QLabel("Primary device:", this), 1, 0);
|
|
grid->addWidget(device_combo, 1, 1);
|
|
header->setLayout(grid);
|
|
|
|
QVBoxLayout *vbox = new QVBoxLayout(this);
|
|
vbox->addWidget(header);
|
|
stack = new QStackedWidget(this);
|
|
stack->addWidget(new QLabel("CameraSetup, select mode!"));
|
|
stack->setCurrentIndex(0);
|
|
vbox->addWidget(stack);
|
|
|
|
buttonbox = new QDialogButtonBox(QDialogButtonBox::Ok
|
|
| QDialogButtonBox::Cancel);
|
|
connect(buttonbox, &QDialogButtonBox::accepted, this, &QDialog::accept);
|
|
connect(buttonbox, &QDialogButtonBox::rejected, this, &QDialog::reject);
|
|
vbox->addWidget(buttonbox);
|
|
//this->setLayout(vbox);
|
|
// qInfo() << "Create Camera configuration!";
|
|
}
|
|
|
|
|
|
CameraSetup* CamConfigurator::singleCameraView() {
|
|
qInfo() << "Create Single Camera configuration!";
|
|
if (preview != nullptr) {
|
|
delete preview;
|
|
preview = nullptr;
|
|
}
|
|
preview = new SingleCamera(this);
|
|
return preview;
|
|
}
|
|
|
|
|
|
CameraSetup* CamConfigurator::stereoCameraView() {
|
|
qInfo() << "Create stereoCameraConfiguration";
|
|
if (preview != nullptr) {
|
|
delete preview;
|
|
preview = nullptr;
|
|
}
|
|
preview = new DualCamera(this);
|
|
return preview;
|
|
}
|
|
|
|
|
|
void CamConfigurator::modeChanged(int idx) {
|
|
stack->setCurrentIndex(0);
|
|
if (stack->count() > 1 && preview != nullptr) {
|
|
qDebug() << "removing previous widget from stack";
|
|
stack->removeWidget(preview);
|
|
delete preview;
|
|
preview == nullptr;
|
|
}
|
|
if (idx == 1) {
|
|
qDebug() << "Mode changed to single camera mode";
|
|
qDebug() << "add new single camera preview";
|
|
preview = singleCameraView();
|
|
stack->addWidget(preview);
|
|
stack->setCurrentIndex(1);
|
|
QString device = device_combo->currentText();
|
|
preview->setPrimaryCamera(device);
|
|
} else if (idx == 2) {
|
|
qDebug() << "Mode changed to dual camera mode";
|
|
preview = stereoCameraView();
|
|
stack->addWidget(preview);
|
|
stack->setCurrentIndex(1);
|
|
|
|
QString device1 = device_combo->currentText();
|
|
preview->setPrimaryCamera(device1);
|
|
int i = device_combo->currentIndex();
|
|
if (i > 1) {
|
|
i = 1;
|
|
}
|
|
QString device2 = device_combo->itemText(1 - i);
|
|
preview->setSecondaryCamera(device2);
|
|
} else {
|
|
qDebug() << "Mode changed mode selection";
|
|
stack->setCurrentIndex(0);
|
|
}
|
|
// stack->setCurrentIndex(idx);
|
|
// TODO release camera?
|
|
// orientation_combo->setEnabled(idx == 1);
|
|
}
|
|
|
|
|
|
// void CamConfigurator::orientationChanged(int idx) {
|
|
|
|
// }
|
|
|
|
|
|
void CamConfigurator::primaryDeviceChanged(int idx) {
|
|
if (mode_combo->currentText() == "single camera") { // single camera setting
|
|
QString devicename = device_combo->currentText();
|
|
preview->setPrimaryCamera(devicename);
|
|
} else {
|
|
preview->switchArrangement();
|
|
}
|
|
}
|
|
|
|
CameraLayout CamConfigurator::layout(){
|
|
CameraLayout l;
|
|
qDebug() << "Request layout";
|
|
return preview->cameraLayout();
|
|
}
|
|
|
|
CamConfigurator::~CamConfigurator()
|
|
{
|
|
qDebug() << "CamConfig Destructor";
|
|
delete preview;
|
|
}
|