#include "yacreader_gl_flow_config_widget.h" #include "yacreader_spin_slider_widget.h" #include "yacreader_flow_gl.h" //TODO #include #include #include #include #include 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); }