QGCParamSlider.cc 4.4 KB
Newer Older
1 2 3
#include <QMenu>
#include <QContextMenuEvent>

4 5
#include "QGCParamSlider.h"
#include "ui_QGCParamSlider.h"
6
#include "UASInterface.h"
7 8

QGCParamSlider::QGCParamSlider(QWidget *parent) :
9 10 11 12 13 14 15
    QGCToolWidgetItem("Slider", parent),
    parameterName(""),
    parameterValue(0.0f),
    parameterScalingFactor(0.0),
    parameterMin(0.0f),
    parameterMax(0.0f),
    component(0),
16 17 18
    ui(new Ui::QGCParamSlider)
{
    ui->setupUi(this);
pixhawk's avatar
pixhawk committed
19 20 21 22 23 24

    scaledInt = ui->valueSlider->maximum() - ui->valueSlider->minimum();

    ui->editDoneButton->show();
    ui->editMaxLabel->show();
    ui->editMinLabel->show();
25
    ui->editNameLabel->show();
pixhawk's avatar
pixhawk committed
26 27 28 29 30 31 32 33
    ui->editInstructionsLabel->show();
    ui->editRefreshParamsButton->show();
    ui->editSelectParamComboBox->show();
    ui->editSelectComponentComboBox->show();
    ui->editStatusLabel->show();
    ui->editMinSpinBox->show();
    ui->editMaxSpinBox->show();
    connect(ui->editDoneButton, SIGNAL(clicked()), this, SLOT(endEditMode()));
34 35 36 37 38 39 40
}

QGCParamSlider::~QGCParamSlider()
{
    delete ui;
}

41 42
void QGCParamSlider::startEditMode()
{
pixhawk's avatar
pixhawk committed
43 44 45
    ui->editDoneButton->show();
    ui->editMaxLabel->show();
    ui->editMinLabel->show();
46
    ui->editNameLabel->show();
pixhawk's avatar
pixhawk committed
47 48 49 50 51 52 53
    ui->editInstructionsLabel->show();
    ui->editRefreshParamsButton->show();
    ui->editSelectParamComboBox->show();
    ui->editSelectComponentComboBox->show();
    ui->editStatusLabel->show();
    ui->editMinSpinBox->show();
    ui->editMaxSpinBox->show();
54 55 56 57 58
    isInEditMode = true;
}

void QGCParamSlider::endEditMode()
{
pixhawk's avatar
pixhawk committed
59 60 61
    ui->editDoneButton->hide();
    ui->editMaxLabel->hide();
    ui->editMinLabel->hide();
62
    ui->editNameLabel->hide();
pixhawk's avatar
pixhawk committed
63 64 65 66 67 68 69
    ui->editInstructionsLabel->hide();
    ui->editRefreshParamsButton->hide();
    ui->editSelectParamComboBox->hide();
    ui->editSelectComponentComboBox->hide();
    ui->editStatusLabel->hide();
    ui->editMinSpinBox->hide();
    ui->editMaxSpinBox->hide();
70
    isInEditMode = false;
lm's avatar
lm committed
71
    emit editingFinished();
72 73
}

74 75 76 77 78 79 80 81 82 83 84 85
void QGCParamSlider::sendParameter()
{
    if (QGCToolWidgetItem::uas)
    {
        QGCToolWidgetItem::uas->setParameter(component, parameterName, parameterValue);
    }
    else
    {
        qDebug() << __FILE__ << __LINE__ << "NO UAS SET, DOING NOTHING";
    }
}

pixhawk's avatar
pixhawk committed
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
void QGCParamSlider::setSliderValue(int sliderValue)
{
    parameterValue = scaledIntToFloat(sliderValue);
    QString unit("");
    ui->valueLabel->setText(QString("%1 %2").arg(parameterValue, 0, 'f', 3).arg(unit));
}

void QGCParamSlider::setParameterValue(int uas, int component, QString parameterName, float value)
{
    parameterValue = value;
    QString unit("");
    ui->valueLabel->setText(QString("%1 %2").arg(value, 0, 'f', 3).arg(unit));
    ui->valueSlider->setValue(floatToScaledInt(value));
}

101 102 103 104 105 106 107 108 109 110 111
void QGCParamSlider::changeEvent(QEvent *e)
{
    QWidget::changeEvent(e);
    switch (e->type()) {
    case QEvent::LanguageChange:
        ui->retranslateUi(this);
        break;
    default:
        break;
    }
}
lm's avatar
lm committed
112

pixhawk's avatar
pixhawk committed
113
float QGCParamSlider::scaledIntToFloat(int sliderValue)
lm's avatar
lm committed
114
{
pixhawk's avatar
pixhawk committed
115 116
    return (((double)sliderValue)/scaledInt)*(parameterMax - parameterMin);
}
lm's avatar
lm committed
117

pixhawk's avatar
pixhawk committed
118 119 120
int QGCParamSlider::floatToScaledInt(float value)
{
    return ((value - parameterMin)/(parameterMax - parameterMin))*scaledInt;
lm's avatar
lm committed
121 122
}

pixhawk's avatar
pixhawk committed
123
void QGCParamSlider::writeSettings(QSettings& settings)
lm's avatar
lm committed
124
{
pixhawk's avatar
pixhawk committed
125 126 127 128 129 130 131 132 133
    settings.setValue("TYPE", "SLIDER");
    settings.setValue("QGC_PARAM_SLIDER_DESCRIPTION", ui->nameLabel->text());
    //settings.setValue("QGC_PARAM_SLIDER_BUTTONTEXT", ui->actionButton->text());
    settings.setValue("QGC_PARAM_SLIDER_PARAMID", ui->editSelectParamComboBox->currentText());
    settings.setValue("QGC_PARAM_SLIDER_COMPONENTID", ui->editSelectComponentComboBox->currentText());
    settings.setValue("QGC_PARAM_SLIDER_MIN", ui->editMinSpinBox->value());
    settings.setValue("QGC_PARAM_SLIDER_MAX", ui->editMaxSpinBox->value());
    settings.sync();
}
lm's avatar
lm committed
134

pixhawk's avatar
pixhawk committed
135 136 137 138
void QGCParamSlider::readSettings(const QSettings& settings)
{
    ui->nameLabel->setText(settings.value("QGC_PARAM_SLIDER_DESCRIPTION").toString());
    //settings.setValue("QGC_PARAM_SLIDER_BUTTONTEXT", ui->actionButton->text());
139 140 141 142
    ui->editSelectParamComboBox->setEditText(settings.value("QGC_PARAM_SLIDER_PARAMID").toString());
    ui->editSelectComponentComboBox->setEditText(settings.value("QGC_PARAM_SLIDER_COMPONENTID").toString());
    ui->editMinSpinBox->setValue(settings.value("QGC_PARAM_SLIDER_MIN").toFloat());
    ui->editMaxSpinBox->setValue(settings.value("QGC_PARAM_SLIDER_MAX").toFloat());
pixhawk's avatar
pixhawk committed
143
    qDebug() << "DONE READING SETTINGS";
lm's avatar
lm committed
144
}