mirror of
https://github.com/YACReader/yacreader
synced 2025-05-27 10:50:27 -04:00
238 lines
9.3 KiB
C++
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);
|
|
}
|