yacreader/custom_widgets/yacreader_gl_flow_config_widget.cpp
Luis Ángel San Martín 5aa02a19bb clang-format
2021-10-18 21:56:52 +02:00

238 lines
9.3 KiB
C++

#include "yacreader_gl_flow_config_widget.h"
#include "yacreader_spin_slider_widget.h"
#include "yacreader_flow_gl.h" //TODO
#include <QVBoxLayout>
#include <QGroupBox>
#include <QRadioButton>
#include <QLabel>
#include <QPushButton>
YACReaderGLFlowConfigWidget::YACReaderGLFlowConfigWidget(QWidget *parent /* = 0 */)
: QWidget(parent)
{
QVBoxLayout *layout = new QVBoxLayout(this);
// PRESETS------------------------------------------------------------------
QGroupBox *groupBox = new QGroupBox(tr("Presets:"));
radioClassic = new QRadioButton(tr("Classic look"));
// connect(radioClassic,SIGNAL(toggled(bool)),this,SLOT(setClassicConfig()));
radioStripe = new QRadioButton(tr("Stripe look"));
// connect(radioStripe,SIGNAL(toggled(bool)),this,SLOT(setStripeConfig()));
radioOver = new QRadioButton(tr("Overlapped Stripe look"));
// connect(radioOver,SIGNAL(toggled(bool)),this,SLOT(setOverlappedStripeConfig()));
radionModern = new QRadioButton(tr("Modern look"));
// connect(radionModern,SIGNAL(toggled(bool)),this,SLOT(setModernConfig()));
radioDown = new QRadioButton(tr("Roulette look"));
// connect(radioDown,SIGNAL(toggled(bool)),this,SLOT(setRouletteConfig()));
QVBoxLayout *vbox = new QVBoxLayout;
QHBoxLayout *opt1 = new QHBoxLayout;
opt1->addWidget(radioClassic);
QLabel *lOpt1 = new QLabel();
lOpt1->setPixmap(QPixmap(":/images/flow1.png"));
opt1->addStretch();
opt1->addWidget(lOpt1);
vbox->addLayout(opt1);
QHBoxLayout *opt2 = new QHBoxLayout;
opt2->addWidget(radioStripe);
QLabel *lOpt2 = new QLabel();
lOpt2->setPixmap(QPixmap(":/images/flow2.png"));
opt2->addStretch();
opt2->addWidget(lOpt2);
vbox->addLayout(opt2);
QHBoxLayout *opt3 = new QHBoxLayout;
opt3->addWidget(radioOver);
QLabel *lOpt3 = new QLabel();
lOpt3->setPixmap(QPixmap(":/images/flow3.png"));
opt3->addStretch();
opt3->addWidget(lOpt3);
vbox->addLayout(opt3);
QHBoxLayout *opt4 = new QHBoxLayout;
opt4->addWidget(radionModern);
QLabel *lOpt4 = new QLabel();
lOpt4->setPixmap(QPixmap(":/images/flow4.png"));
opt4->addStretch();
opt4->addWidget(lOpt4);
vbox->addLayout(opt4);
QHBoxLayout *opt5 = new QHBoxLayout;
opt5->addWidget(radioDown);
QLabel *lOpt5 = new QLabel();
lOpt5->setPixmap(QPixmap(":/images/flow5.png"));
opt5->addStretch();
opt5->addWidget(lOpt5);
vbox->addLayout(opt5);
showAdvancedOptions = new QPushButton(tr("Show advanced settings"));
showAdvancedOptions->setCheckable(true);
connect(showAdvancedOptions, &QAbstractButton::toggled, this, &YACReaderGLFlowConfigWidget::avancedOptionToogled);
vbox->addWidget(showAdvancedOptions, 0, Qt::AlignRight);
groupBox->setLayout(vbox);
// OPTIONS------------------------------------------------------------------
optionsGroupBox = new QGroupBox(tr("Custom:"));
xRotation = new YACReaderSpinSliderWidget(this);
xRotation->setText(tr("View angle"));
xRotation->setRange(0, 90);
// connect(xRotation,SIGNAL(valueChanged(int)),this,SIGNAL(optionsChanged()));
// connect(xRotation,SIGNAL(valueChanged(int)),this,SLOT(saveXRotation(int)));
yPosition = new YACReaderSpinSliderWidget(this);
yPosition->setText(tr("Position"));
yPosition->setRange(-100, 100);
// connect(yPosition,SIGNAL(valueChanged(int)),this,SIGNAL(optionsChanged()));
// connect(yPosition,SIGNAL(valueChanged(int)),this,SLOT(saveYPosition(int)));
coverDistance = new YACReaderSpinSliderWidget(this);
coverDistance->setText(tr("Cover gap"));
coverDistance->setRange(0, 150);
// connect(coverDistance,SIGNAL(valueChanged(int)),this,SIGNAL(optionsChanged()));
// connect(coverDistance,SIGNAL(valueChanged(int)),this,SLOT(saveCoverDistance(int)));
centralDistance = new YACReaderSpinSliderWidget(this);
centralDistance->setText(tr("Central gap"));
centralDistance->setRange(0, 150);
// connect(centralDistance,SIGNAL(valueChanged(int)),this,SIGNAL(optionsChanged()));
// connect(centralDistance,SIGNAL(valueChanged(int)),this,SLOT(saveCentralDistance(int)));
zoomLevel = new YACReaderSpinSliderWidget(this);
zoomLevel->setText(tr("Zoom"));
zoomLevel->setRange(-20, 0);
// connect(zoomLevel,SIGNAL(valueChanged(int)),this,SIGNAL(optionsChanged()));
// connect(zoomLevel,SIGNAL(valueChanged(int)),this,SLOT(saveZoomLevel(int)));
yCoverOffset = new YACReaderSpinSliderWidget(this);
yCoverOffset->setText(tr("Y offset"));
yCoverOffset->setRange(-50, 50);
// connect(yCoverOffset,SIGNAL(valueChanged(int)),this,SIGNAL(optionsChanged()));
// connect(yCoverOffset,SIGNAL(valueChanged(int)),this,SLOT(saveYCoverOffset(int)));
zCoverOffset = new YACReaderSpinSliderWidget(this);
zCoverOffset->setText(tr("Z offset"));
zCoverOffset->setRange(-50, 50);
// connect(zCoverOffset,SIGNAL(valueChanged(int)),this,SIGNAL(optionsChanged()));
// connect(zCoverOffset,SIGNAL(valueChanged(int)),this,SLOT(saveZCoverOffset(int)));
coverRotation = new YACReaderSpinSliderWidget(this);
coverRotation->setText(tr("Cover Angle"));
coverRotation->setRange(0, 360);
// connect(coverRotation,SIGNAL(valueChanged(int)),this,SIGNAL(optionsChanged()));
// connect(coverRotation,SIGNAL(valueChanged(int)),this,SLOT(saveCoverRotation(int)));
fadeOutDist = new YACReaderSpinSliderWidget(this);
fadeOutDist->setText(tr("Visibility"));
fadeOutDist->setRange(0, 10);
// connect(fadeOutDist,SIGNAL(valueChanged(int)),this,SIGNAL(optionsChanged()));
// connect(fadeOutDist,SIGNAL(valueChanged(int)),this,SLOT(saveFadeOutDist(int)));
lightStrength = new YACReaderSpinSliderWidget(this);
lightStrength->setText(tr("Light"));
lightStrength->setRange(0, 10);
// connect(lightStrength,SIGNAL(valueChanged(int)),this,SIGNAL(optionsChanged()));
// connect(lightStrength,SIGNAL(valueChanged(int)),this,SLOT(saveLightStrength(int)));
maxAngle = new YACReaderSpinSliderWidget(this);
maxAngle->setText(tr("Max angle"));
maxAngle->setRange(0, 90);
// connect(maxAngle,SIGNAL(valueChanged(int)),this,SIGNAL(optionsChanged()));
// connect(maxAngle,SIGNAL(valueChanged(int)),this,SLOT(saveMaxAngle(int)));
QVBoxLayout *optionsLayoutStretch = new QVBoxLayout;
optionsLayoutStretch->setContentsMargins(0, 0, 0, 0);
QGridLayout *optionsLayout = new QGridLayout;
optionsLayout->addWidget(xRotation, 0, 0);
optionsLayout->addWidget(yPosition, 0, 1);
optionsLayout->addWidget(coverDistance, 1, 0);
optionsLayout->addWidget(centralDistance, 1, 1);
optionsLayout->addWidget(zoomLevel, 2, 0);
optionsLayout->addWidget(yCoverOffset, 2, 1);
optionsLayout->addWidget(zCoverOffset, 3, 0);
optionsLayout->addWidget(coverRotation, 3, 1);
optionsLayout->addWidget(fadeOutDist, 4, 0);
optionsLayout->addWidget(lightStrength, 4, 1);
optionsLayout->addWidget(maxAngle, 5, 0);
optionsLayoutStretch->addLayout(optionsLayout);
optionsLayoutStretch->addStretch();
optionsGroupBox->setLayout(optionsLayoutStretch);
QHBoxLayout *groupBoxesLayout = new QHBoxLayout;
groupBoxesLayout->addWidget(groupBox);
groupBoxesLayout->addWidget(optionsGroupBox);
optionsGroupBox->hide();
QHBoxLayout *performanceSliderLayout = new QHBoxLayout;
performanceSliderLayout->addWidget(new QLabel(tr("Low Performance")));
performanceSliderLayout->addWidget(performanceSlider = new QSlider(Qt::Horizontal));
performanceSliderLayout->addWidget(new QLabel(tr("High Performance")));
performanceSlider->setMinimum(0);
performanceSlider->setMaximum(3);
performanceSlider->setSingleStep(1);
performanceSlider->setPageStep(1);
performanceSlider->setTickInterval(1);
performanceSlider->setTickPosition(QSlider::TicksRight);
QHBoxLayout *vSyncLayout = new QHBoxLayout;
vSyncCheck = new QCheckBox(tr("Use VSync (improve the image quality in fullscreen mode, worse performance)"));
vSyncLayout->addStretch();
vSyncLayout->addWidget(vSyncCheck);
QVBoxLayout *performanceLayout = new QVBoxLayout;
performanceLayout->addLayout(performanceSliderLayout);
performanceLayout->addLayout(vSyncLayout);
QGroupBox *performanceGroupBox = new QGroupBox(tr("Performance:"));
// connect(performanceSlider, SIGNAL(valueChanged(int)),this,SLOT(savePerformance(int)));
// connect(performanceSlider, SIGNAL(valueChanged(int)),this,SLOT(optionsChanged()));
performanceGroupBox->setLayout(performanceLayout);
layout->addLayout(groupBoxesLayout);
layout->addWidget(performanceGroupBox);
layout->setContentsMargins(0, 0, 0, 0);
setLayout(layout);
}
void YACReaderGLFlowConfigWidget::avancedOptionToogled(bool show)
{
if (show)
optionsGroupBox->show();
else
optionsGroupBox->hide();
}
void YACReaderGLFlowConfigWidget::setValues(Preset preset)
{
xRotation->setValue(preset.cfRX);
yPosition->setValue(preset.cfY * 100);
coverDistance->setValue(preset.xDistance * 100);
centralDistance->setValue(preset.centerDistance * 100);
zoomLevel->setValue(preset.cfZ);
yCoverOffset->setValue(preset.yDistance * 100);
zCoverOffset->setValue(preset.zDistance * 100);
coverRotation->setValue(preset.rotation * -1);
fadeOutDist->setValue(preset.animationFadeOutDist);
lightStrength->setValue(preset.viewRotateLightStrenght);
maxAngle->setValue(preset.viewAngle);
}