WaypointView.cc 18.6 KB
Newer Older
pixhawk's avatar
pixhawk committed
1
/*===================================================================
pixhawk's avatar
pixhawk committed
2 3 4 5 6 7 8 9
======================================================================*/

/**
 * @file
 *   @brief Displays one waypoint
 *
 *   @author Lorenz Meier <mavteam@student.ethz.ch>
 *   @author Benjamin Knecht <mavteam@student.ethz.ch>
10
 *   @author Petri Tanskanen <mavteam@student.ethz.ch>
pixhawk's avatar
pixhawk committed
11 12 13 14 15 16
 *
 */

#include <QDoubleSpinBox>
#include <QDebug>

17 18
#include <cmath>
#include <qmath.h>
pixhawk's avatar
pixhawk committed
19

pixhawk's avatar
pixhawk committed
20 21
#include "WaypointView.h"
#include "ui_WaypointView.h"
22
#include "ui_QGCCustomWaypointAction.h"
pixhawk's avatar
pixhawk committed
23 24

WaypointView::WaypointView(Waypoint* wp, QWidget* parent) :
pixhawk's avatar
pixhawk committed
25
        QWidget(parent),
26
        customCommand(new Ui_QGCCustomWaypointAction),
27
        viewMode(QGC_WAYPOINTVIEW_MODE_NAV),
pixhawk's avatar
pixhawk committed
28
        m_ui(new Ui::WaypointView)
pixhawk's avatar
pixhawk committed
29 30 31 32
{
    m_ui->setupUi(this);

    this->wp = wp;
pixhawk's avatar
pixhawk committed
33
    connect(wp, SIGNAL(destroyed(QObject*)), this, SLOT(deleted(QObject*)));
34

35 36 37
    // CUSTOM COMMAND WIDGET
    customCommand->setupUi(m_ui->customActionWidget);

38
    // add actions
39 40 41 42 43 44 45
    m_ui->comboBox_action->addItem(tr("NAV: Waypoint"),MAV_CMD_NAV_WAYPOINT);
    m_ui->comboBox_action->addItem(tr("NAV: TakeOff"),MAV_CMD_NAV_TAKEOFF);
    m_ui->comboBox_action->addItem(tr("NAV: Loiter Unlim."),MAV_CMD_NAV_LOITER_UNLIM);
    m_ui->comboBox_action->addItem(tr("NAV: Loiter Time"),MAV_CMD_NAV_LOITER_TIME);
    m_ui->comboBox_action->addItem(tr("NAV: Loiter Turns"),MAV_CMD_NAV_LOITER_TURNS);
    m_ui->comboBox_action->addItem(tr("NAV: Ret. to Launch"),MAV_CMD_NAV_RETURN_TO_LAUNCH);
    m_ui->comboBox_action->addItem(tr("NAV: Land"),MAV_CMD_NAV_LAND);
lm's avatar
lm committed
46 47 48 49
//    m_ui->comboBox_action->addItem(tr("NAV: Target"),MAV_CMD_NAV_TARGET);
    //m_ui->comboBox_action->addItem(tr("IF: Delay over"),MAV_CMD_CONDITION_DELAY);
    //m_ui->comboBox_action->addItem(tr("IF: Yaw angle is"),MAV_CMD_CONDITION_YAW);
    //m_ui->comboBox_action->addItem(tr("DO: Jump to Index"),MAV_CMD_DO_JUMP);
50
    m_ui->comboBox_action->addItem(tr("Other"), MAV_CMD_ENUM_END);
51 52 53 54

    // add frames 
    m_ui->comboBox_frame->addItem("Global",MAV_FRAME_GLOBAL);
    m_ui->comboBox_frame->addItem("Local",MAV_FRAME_LOCAL);
55 56 57 58 59
    m_ui->comboBox_frame->addItem("Mission",MAV_FRAME_MISSION);

    // Initialize view correctly
    updateActionView(wp->getAction());
    updateFrameView(wp->getFrame());
60

pixhawk's avatar
pixhawk committed
61
    // Read values and set user interface
62
    updateValues();
pixhawk's avatar
pixhawk committed
63

64 65 66 67 68 69
    // Check for mission frame
    if (wp->getFrame() == MAV_FRAME_MISSION)
    {
        m_ui->comboBox_action->setCurrentIndex(m_ui->comboBox_action->count()-1);
    }

70 71 72 73
    connect(m_ui->posNSpinBox, SIGNAL(valueChanged(double)), wp, SLOT(setX(double)));
    connect(m_ui->posESpinBox, SIGNAL(valueChanged(double)), wp, SLOT(setY(double)));
    connect(m_ui->posDSpinBox, SIGNAL(valueChanged(double)), wp, SLOT(setZ(double)));

74 75
    connect(m_ui->latSpinBox, SIGNAL(valueChanged(double)), wp, SLOT(setX(double)));
    connect(m_ui->lonSpinBox, SIGNAL(valueChanged(double)), wp, SLOT(setY(double)));
76
    connect(m_ui->altSpinBox, SIGNAL(valueChanged(double)), wp, SLOT(setZ(double)));
lm's avatar
lm committed
77
    connect(m_ui->yawSpinBox, SIGNAL(valueChanged(int)), wp, SLOT(setYaw(int)));
pixhawk's avatar
pixhawk committed
78 79 80 81 82

    connect(m_ui->upButton, SIGNAL(clicked()), this, SLOT(moveUp()));
    connect(m_ui->downButton, SIGNAL(clicked()), this, SLOT(moveDown()));
    connect(m_ui->removeButton, SIGNAL(clicked()), this, SLOT(remove()));

pixhawk's avatar
pixhawk committed
83 84
    connect(m_ui->autoContinue, SIGNAL(stateChanged(int)), this, SLOT(changedAutoContinue(int)));
    connect(m_ui->selectedBox, SIGNAL(stateChanged(int)), this, SLOT(changedCurrent(int)));
85 86
    connect(m_ui->comboBox_action, SIGNAL(activated(int)), this, SLOT(changedAction(int)));
    connect(m_ui->comboBox_frame, SIGNAL(activated(int)), this, SLOT(changedFrame(int)));
pixhawk's avatar
pixhawk committed
87

88 89
    connect(m_ui->orbitSpinBox, SIGNAL(valueChanged(double)), wp, SLOT(setLoiterOrbit(double)));
    connect(m_ui->acceptanceSpinBox, SIGNAL(valueChanged(double)), wp, SLOT(setAcceptanceRadius(double)));
lm's avatar
lm committed
90
    connect(m_ui->holdTimeSpinBox, SIGNAL(valueChanged(double)), wp, SLOT(setHoldTime(double)));
91
    connect(m_ui->turnsSpinBox, SIGNAL(valueChanged(int)), wp, SLOT(setTurns(int)));
92
    connect(m_ui->takeOffAngleSpinBox, SIGNAL(valueChanged(double)), wp, SLOT(setParam1(double)));
93 94 95 96 97 98 99

    // Connect actions
    connect(customCommand->commandSpinBox, SIGNAL(valueChanged(int)),   wp, SLOT(setAction(int)));
    connect(customCommand->param1SpinBox, SIGNAL(valueChanged(double)), wp, SLOT(setParam1(double)));
    connect(customCommand->param2SpinBox, SIGNAL(valueChanged(double)), wp, SLOT(setParam2(double)));
    connect(customCommand->param3SpinBox, SIGNAL(valueChanged(double)), wp, SLOT(setParam3(double)));
    connect(customCommand->param4SpinBox, SIGNAL(valueChanged(double)), wp, SLOT(setParam4(double)));
100 101
    connect(customCommand->param5SpinBox, SIGNAL(valueChanged(double)), wp, SLOT(setParam5(double)));
    connect(customCommand->param6SpinBox, SIGNAL(valueChanged(double)), wp, SLOT(setParam6(double)));
lm's avatar
lm committed
102
    connect(customCommand->param7SpinBox, SIGNAL(valueChanged(double)), wp, SLOT(setParam7(double)));
pixhawk's avatar
pixhawk committed
103 104
}

pixhawk's avatar
pixhawk committed
105 106 107 108 109 110 111 112 113 114
void WaypointView::moveUp()
{
    emit moveUpWaypoint(wp);
}

void WaypointView::moveDown()
{
    emit moveDownWaypoint(wp);
}

Alejandro's avatar
Alejandro committed
115

pixhawk's avatar
pixhawk committed
116 117 118
void WaypointView::remove()
{
    emit removeWaypoint(wp);
119
    deleteLater();
pixhawk's avatar
pixhawk committed
120 121
}

pixhawk's avatar
pixhawk committed
122
void WaypointView::changedAutoContinue(int state)
pixhawk's avatar
pixhawk committed
123 124
{
    if (state == 0)
125
        wp->setAutocontinue(false);
pixhawk's avatar
pixhawk committed
126
    else
127
        wp->setAutocontinue(true);
pixhawk's avatar
pixhawk committed
128 129
}

130
void WaypointView::updateActionView(int action)
131 132
{
    // expose ui based on action
133

134 135
    switch(action)
    {
136
    case MAV_CMD_NAV_TAKEOFF:
137 138 139 140 141 142 143
        m_ui->orbitSpinBox->hide();
        m_ui->yawSpinBox->hide();
        m_ui->turnsSpinBox->hide();
        m_ui->autoContinue->hide();
        m_ui->holdTimeSpinBox->hide();
        m_ui->acceptanceSpinBox->hide();
        m_ui->customActionWidget->hide();
144 145
        m_ui->takeOffAngleSpinBox->show();
        break;
146
    case MAV_CMD_NAV_LAND:
147 148 149 150 151 152 153 154 155
        m_ui->orbitSpinBox->hide();
        m_ui->takeOffAngleSpinBox->hide();
        m_ui->yawSpinBox->hide();
        m_ui->turnsSpinBox->hide();
        m_ui->autoContinue->hide();
        m_ui->holdTimeSpinBox->hide();
        m_ui->acceptanceSpinBox->hide();
        m_ui->customActionWidget->hide();
        break;
156
    case MAV_CMD_NAV_RETURN_TO_LAUNCH:
157 158 159 160 161 162 163 164
        m_ui->orbitSpinBox->hide();
        m_ui->takeOffAngleSpinBox->hide();
        m_ui->yawSpinBox->hide();
        m_ui->turnsSpinBox->hide();
        m_ui->autoContinue->hide();
        m_ui->holdTimeSpinBox->hide();
        m_ui->acceptanceSpinBox->hide();
        m_ui->customActionWidget->hide();
165
        break;
166
    case MAV_CMD_NAV_WAYPOINT:
167 168 169
        m_ui->orbitSpinBox->hide();
        m_ui->takeOffAngleSpinBox->hide();
        m_ui->turnsSpinBox->hide();
lm's avatar
lm committed
170
        m_ui->holdTimeSpinBox->show();
171 172
        m_ui->customActionWidget->hide();

173
        m_ui->autoContinue->show();
174 175
        m_ui->acceptanceSpinBox->show();
        m_ui->yawSpinBox->show();
176
        break;
177
    case MAV_CMD_NAV_LOITER_UNLIM:
178 179 180 181 182 183 184 185 186
        m_ui->takeOffAngleSpinBox->hide();
        m_ui->yawSpinBox->hide();
        m_ui->turnsSpinBox->hide();
        m_ui->autoContinue->hide();
        m_ui->holdTimeSpinBox->hide();
        m_ui->acceptanceSpinBox->hide();
        m_ui->customActionWidget->hide();
        m_ui->orbitSpinBox->show();
        break;
187
    case MAV_CMD_NAV_LOITER_TURNS:
188 189 190 191 192 193 194 195 196
        m_ui->takeOffAngleSpinBox->hide();
        m_ui->yawSpinBox->hide();
        m_ui->autoContinue->hide();
        m_ui->holdTimeSpinBox->hide();
        m_ui->acceptanceSpinBox->hide();
        m_ui->customActionWidget->hide();
        m_ui->orbitSpinBox->show();
        m_ui->turnsSpinBox->show();
        break;
197
    case MAV_CMD_NAV_LOITER_TIME:
198 199 200 201 202 203
        m_ui->takeOffAngleSpinBox->hide();
        m_ui->yawSpinBox->hide();
        m_ui->turnsSpinBox->hide();
        m_ui->autoContinue->hide();
        m_ui->acceptanceSpinBox->hide();
        m_ui->customActionWidget->hide();
204 205 206
        m_ui->orbitSpinBox->show();
        m_ui->holdTimeSpinBox->show();
        break;
207
    case MAV_CMD_NAV_ORIENTATION_TARGET:
208 209 210 211 212 213 214 215 216 217
        m_ui->orbitSpinBox->hide();
        m_ui->takeOffAngleSpinBox->hide();
        m_ui->turnsSpinBox->hide();
        m_ui->holdTimeSpinBox->show();
        m_ui->customActionWidget->hide();

        m_ui->autoContinue->show();
        m_ui->acceptanceSpinBox->hide();
        m_ui->yawSpinBox->hide();
        break;
218
    default:
219
        break;
220 221 222
    }
}

223 224 225 226
/**
 * @param index The index of the combo box of the action entry, NOT the action ID
 */
void WaypointView::changedAction(int index)
227 228
{
    // set waypoint action
229
    int actionIndex = m_ui->comboBox_action->itemData(index).toUInt();
230
    if (actionIndex < MAV_CMD_ENUM_END && actionIndex >= 0)
231
    {
232
        MAV_CMD action = (MAV_CMD) actionIndex;
233 234 235 236 237 238 239 240 241
        wp->setAction(action);
    }

    // Expose ui based on action
    // Change to mission frame
    // if action is unknown

    switch(actionIndex)
    {
242 243 244 245 246 247 248
    case MAV_CMD_NAV_TAKEOFF:
    case MAV_CMD_NAV_LAND:
    case MAV_CMD_NAV_RETURN_TO_LAUNCH:
    case MAV_CMD_NAV_WAYPOINT:
    case MAV_CMD_NAV_LOITER_UNLIM:
    case MAV_CMD_NAV_LOITER_TURNS:
    case MAV_CMD_NAV_LOITER_TIME:
249 250 251
        changeViewMode(QGC_WAYPOINTVIEW_MODE_NAV);
        // Update frame view
        updateFrameView(m_ui->comboBox_frame->currentIndex());
252 253
        // Update view
        updateActionView(actionIndex);
254
        break;
255
    case MAV_CMD_ENUM_END:
256 257
    default:
        // Switch to mission frame
258
        changeViewMode(QGC_WAYPOINTVIEW_MODE_DIRECT_EDITING);
259 260 261
        break;
    }
}
262

263
void WaypointView::changeViewMode(QGC_WAYPOINTVIEW_MODE mode)
264
{
lm's avatar
lm committed
265
    viewMode = mode;
266
    switch (mode)
267
    {
268
    case QGC_WAYPOINTVIEW_MODE_NAV:
269 270 271 272
    case QGC_WAYPOINTVIEW_MODE_CONDITION:
        // Hide everything, show condition widget
        // TODO
    case QGC_WAYPOINTVIEW_MODE_DO:
273

274
        break;
275
    case QGC_WAYPOINTVIEW_MODE_DIRECT_EDITING:
276 277 278 279 280 281 282 283 284 285 286 287 288 289
        // Hide almost everything
        m_ui->orbitSpinBox->hide();
        m_ui->takeOffAngleSpinBox->hide();
        m_ui->yawSpinBox->hide();
        m_ui->turnsSpinBox->hide();
        m_ui->holdTimeSpinBox->hide();
        m_ui->acceptanceSpinBox->hide();
        m_ui->posDSpinBox->hide();
        m_ui->posESpinBox->hide();
        m_ui->posNSpinBox->hide();
        m_ui->latSpinBox->hide();
        m_ui->lonSpinBox->hide();
        m_ui->altSpinBox->hide();

lm's avatar
lm committed
290 291 292
        int action_index = m_ui->comboBox_action->findData(MAV_CMD_ENUM_END);
        m_ui->comboBox_action->setCurrentIndex(action_index);

293 294 295 296 297 298 299 300 301
        // Show action widget
        if (!m_ui->customActionWidget->isVisible())
        {
            m_ui->customActionWidget->show();
        }
        if (!m_ui->autoContinue->isVisible())
        {
            m_ui->autoContinue->show();
        }
302
        break;
303
    }
lm's avatar
lm committed
304

305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332
}

void WaypointView::updateFrameView(int frame)
{
    switch(frame)
    {
    case MAV_FRAME_GLOBAL:
        m_ui->posNSpinBox->hide();
        m_ui->posESpinBox->hide();
        m_ui->posDSpinBox->hide();
        m_ui->lonSpinBox->show();
        m_ui->latSpinBox->show();
        m_ui->altSpinBox->show();
        // Coordinate frame
        m_ui->comboBox_frame->show();
        m_ui->customActionWidget->hide();
        break;
    case MAV_FRAME_LOCAL:
        m_ui->lonSpinBox->hide();
        m_ui->latSpinBox->hide();
        m_ui->altSpinBox->hide();
        m_ui->posNSpinBox->show();
        m_ui->posESpinBox->show();
        m_ui->posDSpinBox->show();
        // Coordinate frame
        m_ui->comboBox_frame->show();
        m_ui->customActionWidget->hide();
        break;
333 334 335 336 337
    default:
        std::cerr << "unknown frame" << std::endl;
    }
}

pixhawk's avatar
pixhawk committed
338 339
void WaypointView::deleted(QObject* waypoint)
{
340
    Q_UNUSED(waypoint);
lm's avatar
lm committed
341 342 343 344
//    if (waypoint == this->wp)
//    {
//        deleteLater();
//    }
pixhawk's avatar
pixhawk committed
345 346
}

347 348 349 350 351 352 353 354 355
void WaypointView::changedFrame(int index)
{
    // set waypoint action
    MAV_FRAME frame = (MAV_FRAME)m_ui->comboBox_frame->itemData(index).toUInt();
    wp->setFrame(frame);

    updateFrameView(frame);
}

pixhawk's avatar
pixhawk committed
356
void WaypointView::changedCurrent(int state)
pixhawk's avatar
pixhawk committed
357
{
pixhawk's avatar
pixhawk committed
358 359
    if (state == 0)
    {
pixhawk's avatar
pixhawk committed
360 361 362
        m_ui->selectedBox->setChecked(true);
        m_ui->selectedBox->setCheckState(Qt::Checked);
        wp->setCurrent(false);
pixhawk's avatar
pixhawk committed
363 364 365
    }
    else
    {
pixhawk's avatar
pixhawk committed
366
        wp->setCurrent(true);
367
        emit changeCurrentWaypoint(wp->getId());   //the slot changeCurrentWaypoint() in WaypointList sets all other current flags to false
pixhawk's avatar
pixhawk committed
368
    }
pixhawk's avatar
pixhawk committed
369 370
}

371 372
void WaypointView::updateValues()
{
pixhawk's avatar
pixhawk committed
373 374 375 376 377 378 379
    // Check if we just lost the wp, delete the widget
    // accordingly
    if (!wp)
    {
        deleteLater();
        return;
    }
380 381
    // Deactivate signals from the WP
    wp->blockSignals(true);
382 383
    // update frame
    MAV_FRAME frame = wp->getFrame();
384
    int frame_index = m_ui->comboBox_frame->findData(frame);
385 386 387
    if (m_ui->comboBox_frame->currentIndex() != frame_index)
    {
        m_ui->comboBox_frame->setCurrentIndex(frame_index);
388
        updateFrameView(frame);
389
    }
390 391 392
    switch(frame)
    {
    case(MAV_FRAME_LOCAL):
pixhawk's avatar
pixhawk committed
393 394 395 396 397 398 399 400 401 402 403 404 405 406
        {
            if (m_ui->posNSpinBox->value() != wp->getX())
            {
                m_ui->posNSpinBox->setValue(wp->getX());
            }
            if (m_ui->posESpinBox->value() != wp->getY())
            {
                m_ui->posESpinBox->setValue(wp->getY());
            }
            if (m_ui->posDSpinBox->value() != wp->getZ())
            {
                m_ui->posDSpinBox->setValue(wp->getZ());
            }
        }
407 408
        break;
    case(MAV_FRAME_GLOBAL):
pixhawk's avatar
pixhawk committed
409
        {
410
            if (m_ui->latSpinBox->value() != wp->getX())
pixhawk's avatar
pixhawk committed
411
            {
412
                m_ui->latSpinBox->setValue(wp->getX());
pixhawk's avatar
pixhawk committed
413
            }
414
            if (m_ui->lonSpinBox->value() != wp->getY())
pixhawk's avatar
pixhawk committed
415
            {
416
                m_ui->lonSpinBox->setValue(wp->getY());
pixhawk's avatar
pixhawk committed
417 418 419 420 421 422
            }
            if (m_ui->altSpinBox->value() != wp->getZ())
            {
                m_ui->altSpinBox->setValue(wp->getZ());
            }
        }
423
        break;
424 425
    default:
        // Do nothing
426
        break;
427 428
    }

429
    // Update action
430
    MAV_CMD action = wp->getAction();
431
    int action_index = m_ui->comboBox_action->findData(action);
432 433 434
    // Set to "Other" action if it was -1
    if (action_index == -1)
    {
435
        action_index = m_ui->comboBox_action->findData(MAV_CMD_ENUM_END);
436 437
    }
    // Only update if changed
pixhawk's avatar
pixhawk committed
438 439
    if (m_ui->comboBox_action->currentIndex() != action_index)
    {
440 441
        // If action is unknown, set direct editing mode
        if (wp->getAction() < 0 || wp->getAction() > MAV_CMD_NAV_TAKEOFF)
442
        {
443 444 445 446
            changeViewMode(QGC_WAYPOINTVIEW_MODE_DIRECT_EDITING);
        }
        else
        {
lm's avatar
lm committed
447 448 449 450 451 452
            if (viewMode != QGC_WAYPOINTVIEW_MODE_DIRECT_EDITING)
            {
                // Action ID known, update
                m_ui->comboBox_action->setCurrentIndex(action_index);
                updateActionView(action);
            }
453
        }
pixhawk's avatar
pixhawk committed
454
    }
455 456
    switch(action)
    {
457
    case MAV_CMD_NAV_TAKEOFF:
458
        break;
459
    case MAV_CMD_NAV_LAND:
460
        break;
461
    case MAV_CMD_NAV_WAYPOINT:
462
        break;
463
    case MAV_CMD_NAV_LOITER_UNLIM:
464 465 466 467 468
        break;
    default:
        std::cerr << "unknown action" << std::endl;
    }

lm's avatar
lm committed
469
    if (m_ui->yawSpinBox->value() != wp->getYaw())
pixhawk's avatar
pixhawk committed
470
    {
lm's avatar
lm committed
471
        if (!m_ui->yawSpinBox->isVisible()) m_ui->yawSpinBox->blockSignals(true);
lm's avatar
lm committed
472
        m_ui->yawSpinBox->setValue(wp->getYaw());
lm's avatar
lm committed
473
        if (!m_ui->yawSpinBox->isVisible()) m_ui->yawSpinBox->blockSignals(false);
pixhawk's avatar
pixhawk committed
474
    }
pixhawk's avatar
pixhawk committed
475 476 477 478 479 480 481 482
    if (m_ui->selectedBox->isChecked() != wp->getCurrent())
    {
        m_ui->selectedBox->setChecked(wp->getCurrent());
    }
    if (m_ui->autoContinue->isChecked() != wp->getAutoContinue())
    {
        m_ui->autoContinue->setChecked(wp->getAutoContinue());
    }
pixhawk's avatar
pixhawk committed
483
    m_ui->idLabel->setText(QString("%1").arg(wp->getId()));
484
    if (m_ui->orbitSpinBox->value() != wp->getLoiterOrbit())
pixhawk's avatar
pixhawk committed
485
    {
lm's avatar
lm committed
486
        if (!m_ui->orbitSpinBox->isVisible()) m_ui->orbitSpinBox->blockSignals(true);
487
        m_ui->orbitSpinBox->setValue(wp->getLoiterOrbit());
lm's avatar
lm committed
488
        if (!m_ui->orbitSpinBox->isVisible()) m_ui->orbitSpinBox->blockSignals(false);
489 490 491
    }
    if (m_ui->acceptanceSpinBox->value() != wp->getAcceptanceRadius())
    {
lm's avatar
lm committed
492
        if (!m_ui->acceptanceSpinBox->isVisible()) m_ui->acceptanceSpinBox->blockSignals(true);
493
        m_ui->acceptanceSpinBox->setValue(wp->getAcceptanceRadius());
lm's avatar
lm committed
494
        if (!m_ui->acceptanceSpinBox->isVisible()) m_ui->acceptanceSpinBox->blockSignals(false);
pixhawk's avatar
pixhawk committed
495 496 497
    }
    if (m_ui->holdTimeSpinBox->value() != wp->getHoldTime())
    {
lm's avatar
lm committed
498
        if (!m_ui->holdTimeSpinBox->isVisible()) m_ui->holdTimeSpinBox->blockSignals(true);
pixhawk's avatar
pixhawk committed
499
        m_ui->holdTimeSpinBox->setValue(wp->getHoldTime());
lm's avatar
lm committed
500
        if (!m_ui->holdTimeSpinBox->isVisible()) m_ui->holdTimeSpinBox->blockSignals(false);
pixhawk's avatar
pixhawk committed
501
    }
502 503
    if (m_ui->turnsSpinBox->value() != wp->getTurns())
    {
lm's avatar
lm committed
504
        if (!m_ui->turnsSpinBox->isVisible()) m_ui->turnsSpinBox->blockSignals(true);
505
        m_ui->turnsSpinBox->setValue(wp->getTurns());
lm's avatar
lm committed
506
        if (!m_ui->turnsSpinBox->isVisible()) m_ui->turnsSpinBox->blockSignals(false);
507 508 509
    }
    if (m_ui->takeOffAngleSpinBox->value() != wp->getParam1())
    {
lm's avatar
lm committed
510
        if (!m_ui->takeOffAngleSpinBox->isVisible()) m_ui->takeOffAngleSpinBox->blockSignals(true);
511
        m_ui->takeOffAngleSpinBox->setValue(wp->getParam1());
lm's avatar
lm committed
512
        if (!m_ui->takeOffAngleSpinBox->isVisible()) m_ui->takeOffAngleSpinBox->blockSignals(false);
513
    }
514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541

    // UPDATE CUSTOM ACTION WIDGET

    if (customCommand->commandSpinBox->value() != wp->getAction())
    {
        customCommand->commandSpinBox->setValue(wp->getAction());
        qDebug() << "Changed action";
    }
    // Param 1
    if (customCommand->param1SpinBox->value() != wp->getParam1())
    {
        customCommand->param1SpinBox->setValue(wp->getParam1());
    }
    // Param 2
    if (customCommand->param2SpinBox->value() != wp->getParam2())
    {
        customCommand->param2SpinBox->setValue(wp->getParam2());
    }
    // Param 3
    if (customCommand->param3SpinBox->value() != wp->getParam3())
    {
        customCommand->param3SpinBox->setValue(wp->getParam3());
    }
    // Param 4
    if (customCommand->param4SpinBox->value() != wp->getParam4())
    {
        customCommand->param4SpinBox->setValue(wp->getParam4());
    }
542 543 544 545 546 547 548 549 550 551
    // Param 5
    if (customCommand->param5SpinBox->value() != wp->getParam5())
    {
        customCommand->param5SpinBox->setValue(wp->getParam5());
    }
    // Param 6
    if (customCommand->param6SpinBox->value() != wp->getParam6())
    {
        customCommand->param6SpinBox->setValue(wp->getParam6());
    }
lm's avatar
lm committed
552 553 554 555 556
    // Param 7
    if (customCommand->param7SpinBox->value() != wp->getParam7())
    {
        customCommand->param7SpinBox->setValue(wp->getParam7());
    }
557

558
    wp->blockSignals(false);
559 560
}

pixhawk's avatar
pixhawk committed
561
void WaypointView::setCurrent(bool state)
pixhawk's avatar
pixhawk committed
562
{
563
    m_ui->selectedBox->blockSignals(true);
564
    m_ui->selectedBox->setChecked(state);
565
    m_ui->selectedBox->blockSignals(false);
pixhawk's avatar
pixhawk committed
566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582
}

WaypointView::~WaypointView()
{
    delete m_ui;
}

void WaypointView::changeEvent(QEvent *e)
{
    switch (e->type()) {
    case QEvent::LanguageChange:
        m_ui->retranslateUi(this);
        break;
    default:
        break;
    }
}