void OutputCalibrationPage::setWizardPage()
{
    qDebug() << "Wizard index: " << m_currentWizardIndex;
    m_calibrationUtil->stopChannelOutput();

    QApplication::processEvents();

    int currentPageIndex = m_wizardIndexes[m_currentWizardIndex];
    qDebug() << "Current page: " << currentPageIndex;
    ui->calibrationStack->setCurrentIndex(currentPageIndex);

    int currentChannel = getCurrentChannel();
    qDebug() << "Current channel: " << currentChannel;
    if (currentChannel >= 0) {
        if (currentPageIndex == 1) {
            ui->motorNeutralSlider->setValue(m_actuatorSettings[currentChannel].channelNeutral);
        } else if (currentPageIndex == 2) {
            ui->servoCenterSlider->setValue(m_actuatorSettings[currentChannel].channelNeutral);
        } else if (currentPageIndex == 3) {
            ui->servoMinAngleSlider->setMaximum(m_actuatorSettings[currentChannel].channelNeutral);
            ui->servoMinAngleSlider->setValue(m_actuatorSettings[currentChannel].channelMin);
        } else if (currentPageIndex == 4) {
            ui->servoMaxAngleSlider->setMinimum(m_actuatorSettings[currentChannel].channelNeutral);
            ui->servoMaxAngleSlider->setValue(m_actuatorSettings[currentChannel].channelMax);
        }
    }
    setupVehicleHighlightedPart();
}
void OutputCalibrationPage::startWizard()
{
    ui->calibrationStack->setCurrentIndex(m_wizardIndexes[0]);
    setupVehicleHighlightedPart();

    if (getWizard()->getESCType() == SetupWizard::ESC_ONESHOT) {
        ui->motorNeutralSlider->setMinimum(125);
        ui->motorNeutralSlider->setMaximum(140);
        ui->motorNeutralSlider->setPageStep(1);
        ui->motorNeutralSlider->setSingleStep(1);
    }
}
void OutputCalibrationPage::setWizardPage()
{
    qDebug() << "Wizard index: " << m_currentWizardIndex;

    QApplication::processEvents();

    int currentPageIndex = m_wizardIndexes[m_currentWizardIndex];
    qDebug() << "Current page: " << currentPageIndex;
    ui->calibrationStack->setCurrentIndex(currentPageIndex);

    QList<quint16> currentChannels;
    getCurrentChannels(currentChannels);
    int currentChannel = currentChannels[0];
    qDebug() << "Current channel: " << currentChannel + 1;
    if (currentChannel >= 0) {
        if (currentPageIndex == 1) {
            ui->motorNeutralSlider->setValue(m_actuatorSettings[currentChannel].channelNeutral);
            ui->motorPWMValue->setText(QString(tr("Output value : <b>%1</b> µs")).arg(m_actuatorSettings[currentChannel].channelNeutral));
            // Reversable motor found
            if (m_actuatorSettings[currentChannel].isReversableMotor) {
                ui->motorNeutralSlider->setMinimum(m_actuatorSettings[currentChannel].channelMin);
                ui->motorNeutralSlider->setMaximum(m_actuatorSettings[currentChannel].channelMax);
                ui->motorInfo->setText(tr("<html><head/><body><p><span style=\" font-size:10pt;\">To find </span><span style=\" font-size:10pt; font-weight:600;\">the neutral rate for this reversable motor</span><span style=\" font-size:10pt;\">, press the Start button below and slide the slider to the right or left until you find the value where the motor doesn't start. <br/><br/>When done press button again to stop.</span></p></body></html>"));
            }
        } else if (currentPageIndex == 2) {
            ui->servoPWMValue->setText(tr("Output value : <b>%1</b> µs").arg(m_actuatorSettings[currentChannel].channelNeutral));
            if (m_actuatorSettings[currentChannel].channelMax < m_actuatorSettings[currentChannel].channelMin &&
                !ui->reverseCheckbox->isChecked()) {
                ui->reverseCheckbox->setChecked(true);
            } else {
                ui->reverseCheckbox->setChecked(false);
            }
            enableServoSliders(false);
            if (ui->reverseCheckbox->isChecked()) {
                ui->servoMaxAngleSlider->setValue(m_actuatorSettings[currentChannel].channelMax);
                ui->servoCenterAngleSlider->setValue(m_actuatorSettings[currentChannel].channelNeutral);
                ui->servoMinAngleSlider->setValue(m_actuatorSettings[currentChannel].channelMin);
            } else {
                ui->servoMinAngleSlider->setValue(m_actuatorSettings[currentChannel].channelMin);
                ui->servoCenterAngleSlider->setValue(m_actuatorSettings[currentChannel].channelNeutral);
                ui->servoMaxAngleSlider->setValue(m_actuatorSettings[currentChannel].channelMax);
            }
        }
    }
    setupVehicleHighlightedPart();
    // Hide arrows
    showElementMovement(true, 0);
    showElementMovement(false, 0);
}
void OutputCalibrationPage::startWizard()
{
    ui->calibrationStack->setCurrentIndex(m_wizardIndexes[0]);
    enableAllMotorsCheckBox(true);
    setupVehicleHighlightedPart();
}
void OutputCalibrationPage::startWizard()
{
    ui->calibrationStack->setCurrentIndex(m_wizardIndexes[0]);
    setupVehicleHighlightedPart();
}