WaypointList.cc 18.9 KB
Newer Older
pixhawk's avatar
pixhawk committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
/*=====================================================================

PIXHAWK Micro Air Vehicle Flying Robotics Toolkit

(c) 2009, 2010 PIXHAWK PROJECT  <http://pixhawk.ethz.ch>

This file is part of the PIXHAWK project

    PIXHAWK is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    PIXHAWK is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with PIXHAWK. If not, see <http://www.gnu.org/licenses/>.

======================================================================*/

/**
 * @file
 *   @brief Waypoint list widget
 *
 *   @author Lorenz Meier <mavteam@student.ethz.ch>
 *   @author Benjamin Knecht <mavteam@student.ethz.ch>
30
 *   @author Petri Tanskanen <mavteam@student.ethz.ch>
pixhawk's avatar
pixhawk committed
31 32 33 34 35 36 37 38 39
 *
 */

#include "WaypointList.h"
#include "ui_WaypointList.h"
#include <UASInterface.h>
#include <UASManager.h>
#include <QDebug>
#include <QFileDialog>
40
#include <QMessageBox>
41
#include <QMouseEvent>
pixhawk's avatar
pixhawk committed
42 43

WaypointList::WaypointList(QWidget *parent, UASInterface* uas) :
44 45 46 47 48 49 50
    QWidget(parent),
    uas(NULL),
    mavX(0.0),
    mavY(0.0),
    mavZ(0.0),
    mavYaw(0.0),
    m_ui(new Ui::WaypointList)
pixhawk's avatar
pixhawk committed
51 52 53
{
    m_ui->setupUi(this);

54
    listLayout = new QVBoxLayout(m_ui->editableListWidget);
55
    listLayout->setSpacing(0);
pixhawk's avatar
pixhawk committed
56 57
    listLayout->setMargin(0);
    listLayout->setAlignment(Qt::AlignTop);
58
    m_ui->editableListWidget->setLayout(listLayout);
pixhawk's avatar
pixhawk committed
59 60 61 62 63 64

    // ADD WAYPOINT
    // Connect add action, set right button icon and connect action to this class
    connect(m_ui->addButton, SIGNAL(clicked()), m_ui->actionAddWaypoint, SIGNAL(triggered()));
    connect(m_ui->actionAddWaypoint, SIGNAL(triggered()), this, SLOT(add()));

65
    // ADD WAYPOINT AT CURRENT POSITION
66
    connect(m_ui->positionAddButton, SIGNAL(clicked()), this, SLOT(addCurrentPositionWaypoint()));
67

pixhawk's avatar
pixhawk committed
68 69 70
    // SEND WAYPOINTS
    connect(m_ui->transmitButton, SIGNAL(clicked()), this, SLOT(transmit()));

71
    // REQUEST WAYPOINTS
72
    connect(m_ui->readButton, SIGNAL(clicked()), this, SLOT(read()));
73

pixhawk's avatar
pixhawk committed
74 75 76 77
    // SAVE/LOAD WAYPOINTS
    connect(m_ui->saveButton, SIGNAL(clicked()), this, SLOT(saveWaypoints()));
    connect(m_ui->loadButton, SIGNAL(clicked()), this, SLOT(loadWaypoints()));

78
    //connect(UASManager::instance(), SIGNAL(activeUASSet(UASInterface*)), this, SLOT(setUAS(UASInterface*)));
pixhawk's avatar
pixhawk committed
79

80 81


pixhawk's avatar
pixhawk committed
82 83
    // SET UAS AFTER ALL SIGNALS/SLOTS ARE CONNECTED
    setUAS(uas);
84 85 86

    // STATUS LABEL
    updateStatusLabel("");
87 88

    this->setVisible(false);
89
    loadFileGlobalWP = false;
90
    readGlobalWP = false;
91 92 93
    centerMapCoordinate.setX(0.0);
    centerMapCoordinate.setY(0.0);

pixhawk's avatar
pixhawk committed
94 95 96 97 98 99 100
}

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

101
void WaypointList::updatePosition(UASInterface* uas, double x, double y, double z, quint64 usec)
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
{
    Q_UNUSED(uas);
    Q_UNUSED(usec);
    mavX = x;
    mavY = y;
    mavZ = z;
}

void WaypointList::updateAttitude(UASInterface* uas, double roll, double pitch, double yaw, quint64 usec)
{
    Q_UNUSED(uas);
    Q_UNUSED(usec);
    Q_UNUSED(roll);
    Q_UNUSED(pitch);
    mavYaw = yaw;
}

pixhawk's avatar
pixhawk committed
119 120
void WaypointList::setUAS(UASInterface* uas)
{
lm's avatar
lm committed
121 122
    if (this->uas == NULL && uas != NULL)
    {
pixhawk's avatar
pixhawk committed
123
        this->uas = uas;
pixhawk's avatar
pixhawk committed
124

125
        connect(uas, SIGNAL(localPositionChanged(UASInterface*,double,double,double,quint64)),  this, SLOT(updatePosition(UASInterface*,double,double,double,quint64)));
126
        connect(uas, SIGNAL(attitudeChanged(UASInterface*,double,double,double,quint64)),       this, SLOT(updateAttitude(UASInterface*,double,double,double,quint64)));
pixhawk's avatar
pixhawk committed
127

pixhawk's avatar
pixhawk committed
128 129
        connect(uas->getWaypointManager(), SIGNAL(updateStatusString(const QString &)),        this, SLOT(updateStatusLabel(const QString &)));
        connect(uas->getWaypointManager(), SIGNAL(waypointListChanged(void)),                  this, SLOT(waypointListChanged(void)));
130
        connect(uas->getWaypointManager(), SIGNAL(waypointChanged(int,Waypoint*)), this, SLOT(updateWaypoint(int,Waypoint*)));
pixhawk's avatar
pixhawk committed
131
        connect(uas->getWaypointManager(), SIGNAL(currentWaypointChanged(quint16)),            this, SLOT(currentWaypointChanged(quint16)));
132 133
        //connect(uas->getWaypointManager(),SIGNAL(loadWPFile()),this,SLOT(setIsLoadFileWP()));
        //connect(uas->getWaypointManager(),SIGNAL(readGlobalWPFromUAS(bool)),this,SLOT(setIsReadGlobalWP(bool)));
pixhawk's avatar
pixhawk committed
134 135 136
    }
}

pixhawk's avatar
pixhawk committed
137 138
void WaypointList::saveWaypoints()
{
lm's avatar
lm committed
139 140
    if (uas)
    {
pixhawk's avatar
pixhawk committed
141
        QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"), "./waypoints.txt", tr("Waypoint File (*.txt)"));
pixhawk's avatar
pixhawk committed
142
        uas->getWaypointManager()->saveWaypoints(fileName);
pixhawk's avatar
pixhawk committed
143 144 145 146 147
    }
}

void WaypointList::loadWaypoints()
{
lm's avatar
lm committed
148 149
    if (uas)
    {
pixhawk's avatar
pixhawk committed
150
        QString fileName = QFileDialog::getOpenFileName(this, tr("Load File"), ".", tr("Waypoint File (*.txt)"));
pixhawk's avatar
pixhawk committed
151
        uas->getWaypointManager()->loadWaypoints(fileName);
152
    }
pixhawk's avatar
pixhawk committed
153 154 155 156
}

void WaypointList::transmit()
{
lm's avatar
lm committed
157 158
    if (uas)
    {
pixhawk's avatar
pixhawk committed
159
        uas->getWaypointManager()->writeWaypoints();
pixhawk's avatar
pixhawk committed
160 161 162 163 164
    }
}

void WaypointList::read()
{
lm's avatar
lm committed
165 166
    if (uas)
    {
pixhawk's avatar
pixhawk committed
167
        uas->getWaypointManager()->readWaypoints();
pixhawk's avatar
pixhawk committed
168 169 170 171 172
    }
}

void WaypointList::add()
{
173 174
    if (uas)
    {
pixhawk's avatar
pixhawk committed
175 176
        const QVector<Waypoint *> &waypoints = uas->getWaypointManager()->getWaypointList();
        Waypoint *wp;
177 178
        if (waypoints.size() > 0)
        {
pixhawk's avatar
pixhawk committed
179 180
            // Create waypoint with last frame
            Waypoint *last = waypoints.at(waypoints.size()-1);
lm's avatar
lm committed
181 182
            wp = new Waypoint(0, last->getX(), last->getY(), last->getZ(), last->getParam1(), last->getParam2(), last->getParam3(), last->getParam4(),
                              last->getAutoContinue(), false, last->getFrame(), last->getAction());
pixhawk's avatar
pixhawk committed
183
            uas->getWaypointManager()->addWaypoint(wp);
184 185 186 187
        }
        else
        {
            // Create first waypoint at current MAV position
188
            addCurrentPositionWaypoint();
189
        }
pixhawk's avatar
pixhawk committed
190 191 192
    }
}

193
void WaypointList::addCurrentPositionWaypoint()
lm's avatar
lm committed
194
{
pixhawk's avatar
pixhawk committed
195
    if (uas)
pixhawk's avatar
pixhawk committed
196
    {
197 198 199 200
        const QVector<Waypoint *> &waypoints = uas->getWaypointManager()->getWaypointList();
        Waypoint *wp;
        Waypoint *last = 0;
        if (waypoints.size() > 0)
pixhawk's avatar
pixhawk committed
201
        {
202 203 204 205 206 207 208 209 210
            last = waypoints.at(waypoints.size()-1);
        }

        if (uas->globalPositionKnown())
        {
            float acceptanceRadiusGlobal = 10.0f;
            float holdTime = 0.0f;
            float yawGlobal = 0.0f;
            if (last)
211
            {
212 213 214
                acceptanceRadiusGlobal = last->getAcceptanceRadius();
                holdTime = last->getHoldTime();
                yawGlobal = last->getYaw();
215
            }
216
            // Create global frame waypoint per default
217
            wp = new Waypoint(0, uas->getLatitude(), uas->getLongitude(), uas->getAltitude(), 0, acceptanceRadiusGlobal, holdTime, yawGlobal, true, true, MAV_FRAME_GLOBAL_RELATIVE_ALT, MAV_CMD_NAV_WAYPOINT);
218
            uas->getWaypointManager()->addWaypoint(wp);
lm's avatar
lm committed
219
            updateStatusLabel(tr("Added GLOBAL, ALTITUDE OVER GROUND waypoint"));
220 221 222 223 224 225
        }
        else if (uas->localPositionKnown())
        {
            float acceptanceRadiusLocal = 0.2f;
            float holdTime = 0.5f;
            if (last)
226
            {
227 228
                acceptanceRadiusLocal = last->getAcceptanceRadius();
                holdTime = last->getHoldTime();
229
            }
230
            // Create local frame waypoint as second option
lm's avatar
lm committed
231
            wp = new Waypoint(0, uas->getLocalX(), uas->getLocalY(), uas->getLocalZ(), uas->getYaw(), acceptanceRadiusLocal, holdTime, 0.0, true, true, MAV_FRAME_LOCAL_NED, MAV_CMD_NAV_WAYPOINT);
232
            uas->getWaypointManager()->addWaypoint(wp);
lm's avatar
lm committed
233
            updateStatusLabel(tr("Added LOCAL (NED) waypoint"));
234 235 236 237 238
        }
        else
        {
            // Do nothing
            updateStatusLabel(tr("Not adding waypoint, no position known of MAV known yet."));
pixhawk's avatar
pixhawk committed
239
        }
pixhawk's avatar
pixhawk committed
240 241 242
    }
}

pixhawk's avatar
pixhawk committed
243 244 245 246 247
void WaypointList::updateStatusLabel(const QString &string)
{
    m_ui->statusLabel->setText(string);
}

248
void WaypointList::changeCurrentWaypoint(quint16 seq)
pixhawk's avatar
pixhawk committed
249
{
250 251
    if (uas)
    {
pixhawk's avatar
pixhawk committed
252
        uas->getWaypointManager()->setCurrentWaypoint(seq);
253
    }
pixhawk's avatar
pixhawk committed
254 255
}

256
void WaypointList::currentWaypointChanged(quint16 seq)
257
{
258 259
    if (uas)
    {
pixhawk's avatar
pixhawk committed
260
        const QVector<Waypoint *> &waypoints = uas->getWaypointManager()->getWaypointList();
261

262 263 264 265
        if (seq < waypoints.size())
        {
            for(int i = 0; i < waypoints.size(); i++)
            {
266 267
                WaypointView* widget = wpViews.find(waypoints[i]).value();

268 269
                if (waypoints[i]->getId() == seq)
                {
270
                    widget->setCurrent(true);
271 272 273
                }
                else
                {
274 275 276 277 278 279 280
                    widget->setCurrent(false);
                }
            }
        }
    }
}

281 282 283 284 285 286 287
void WaypointList::updateWaypoint(int uas, Waypoint* wp)
{
    Q_UNUSED(uas);
    WaypointView *wpv = wpViews.value(wp);
    wpv->updateValues();
}

288
void WaypointList::waypointListChanged()
pixhawk's avatar
pixhawk committed
289
{
290
    if (uas) {
pixhawk's avatar
pixhawk committed
291 292 293 294
        // Prevent updates to prevent visual flicker
        this->setUpdatesEnabled(false);
        const QVector<Waypoint *> &waypoints = uas->getWaypointManager()->getWaypointList();

295
        if (!wpViews.empty()) {
296 297
            QMapIterator<Waypoint*,WaypointView*> viewIt(wpViews);
            viewIt.toFront();
298
            while(viewIt.hasNext()) {
299 300 301
                viewIt.next();
                Waypoint *cur = viewIt.key();
                int i;
302 303
                for (i = 0; i < waypoints.size(); i++) {
                    if (waypoints[i] == cur) {
304
                        break;
lm's avatar
lm committed
305 306
                    }
                }
307
                if (i == waypoints.size()) {
308 309 310 311
                    WaypointView* widget = wpViews.find(cur).value();
                    widget->hide();
                    listLayout->removeWidget(widget);
                    wpViews.remove(cur);
lm's avatar
lm committed
312
                }
pixhawk's avatar
pixhawk committed
313 314
            }
        }
315

316
        // then add/update the views for each waypoint in the list
317
        for(int i = 0; i < waypoints.size(); i++) {
318
            Waypoint *wp = waypoints[i];
319
            if (!wpViews.contains(wp)) {
320 321 322 323 324 325 326 327 328 329 330 331
                WaypointView* wpview = new WaypointView(wp, this);
                wpViews.insert(wp, wpview);
                connect(wpview, SIGNAL(moveDownWaypoint(Waypoint*)),    this, SLOT(moveDown(Waypoint*)));
                connect(wpview, SIGNAL(moveUpWaypoint(Waypoint*)),      this, SLOT(moveUp(Waypoint*)));
                connect(wpview, SIGNAL(removeWaypoint(Waypoint*)),      this, SLOT(removeWaypoint(Waypoint*)));
                connect(wpview, SIGNAL(currentWaypointChanged(quint16)), this, SLOT(currentWaypointChanged(quint16)));
                connect(wpview, SIGNAL(changeCurrentWaypoint(quint16)), this, SLOT(changeCurrentWaypoint(quint16)));
                listLayout->insertWidget(i, wpview);
            }
            WaypointView *wpv = wpViews.value(wp);

            //check if ordering has changed
332
            if(listLayout->itemAt(i)->widget() != wpv) {
333 334 335
                listLayout->removeWidget(wpv);
                listLayout->insertWidget(i, wpv);
            }
lm's avatar
lm committed
336

337 338 339
            wpv->updateValues();    // update the values of the ui elements in the view
        }
        this->setUpdatesEnabled(true);
lm's avatar
lm committed
340
        loadFileGlobalWP = false;
341
    }
lm's avatar
lm committed
342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396
}

//void WaypointList::waypointListChanged()
//{
//    if (uas)
//    {
//        // Prevent updates to prevent visual flicker
//        this->setUpdatesEnabled(false);
//        // Get all waypoints
//        const QVector<Waypoint *> &waypoints = uas->getWaypointManager()->getWaypointList();

////        // Store the current state, then check which widgets to update
////        // and which ones to delete
////        QList<Waypoint*> oldWaypoints = wpViews.keys();

////        foreach (Waypoint* wp, waypoints)
////        {
////            WaypointView* wpview;
////            // Create any new waypoint
////            if (!wpViews.contains(wp))
////            {
////                wpview = new WaypointView(wp, this);
////                wpViews.insert(wp, wpview);
////                connect(wpview, SIGNAL(moveDownWaypoint(Waypoint*)),    this, SLOT(moveDown(Waypoint*)));
////                connect(wpview, SIGNAL(moveUpWaypoint(Waypoint*)),      this, SLOT(moveUp(Waypoint*)));
////                connect(wpview, SIGNAL(removeWaypoint(Waypoint*)),      this, SLOT(removeWaypoint(Waypoint*)));
////                connect(wpview, SIGNAL(currentWaypointChanged(quint16)), this, SLOT(currentWaypointChanged(quint16)));
////                connect(wpview, SIGNAL(changeCurrentWaypoint(quint16)), this, SLOT(changeCurrentWaypoint(quint16)));
////                listLayout->addWidget(wpview);
////            }
////            else
////            {
////                // Update existing waypoints
////                wpview = wpViews.value(wp);

////            }
////            // Mark as updated by removing from old list
////            oldWaypoints.removeAt(oldWaypoints.indexOf(wp));

////            wpview->updateValues();    // update the values of the ui elements in the view

////        }

////        // The old list now contains all wps to be deleted
////        foreach (Waypoint* wp, oldWaypoints)
////        {
////            // Delete waypoint view and entry in list
////            WaypointView* wpv = wpViews.value(wp);
////            if (wpv)
////            {
////                listLayout->removeWidget(wpv);
////                delete wpv;
////            }
////            wpViews.remove(wp);
////        }
397

pixhawk's avatar
pixhawk committed
398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416
//        if (!wpViews.empty())
//        {
//            QMapIterator<Waypoint*,WaypointView*> viewIt(wpViews);
//            viewIt.toFront();
//            while(viewIt.hasNext())
//            {
//                viewIt.next();
//                Waypoint *cur = viewIt.key();
//                int i;
//                for (i = 0; i < waypoints.size(); i++)
//                {
//                    if (waypoints[i] == cur)
//                    {
//                        break;
//                    }
//                }
//                if (i == waypoints.size())
//                {
//                    WaypointView* widget = wpViews.find(cur).value();
lm's avatar
lm committed
417 418 419 420 421
//                    if (widget)
//                    {
//                        widget->hide();
//                        listLayout->removeWidget(widget);
//                    }
pixhawk's avatar
pixhawk committed
422 423 424 425
//                    wpViews.remove(cur);
//                }
//            }
//        }
426

pixhawk's avatar
pixhawk committed
427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445
//        // then add/update the views for each waypoint in the list
//        for(int i = 0; i < waypoints.size(); i++)
//        {
//            Waypoint *wp = waypoints[i];
//            if (!wpViews.contains(wp))
//            {
//                WaypointView* wpview = new WaypointView(wp, this);
//                wpViews.insert(wp, wpview);
//                connect(wpview, SIGNAL(moveDownWaypoint(Waypoint*)),    this, SLOT(moveDown(Waypoint*)));
//                connect(wpview, SIGNAL(moveUpWaypoint(Waypoint*)),      this, SLOT(moveUp(Waypoint*)));
//                connect(wpview, SIGNAL(removeWaypoint(Waypoint*)),      this, SLOT(removeWaypoint(Waypoint*)));
//                connect(wpview, SIGNAL(currentWaypointChanged(quint16)), this, SLOT(currentWaypointChanged(quint16)));
//                connect(wpview, SIGNAL(changeCurrentWaypoint(quint16)), this, SLOT(changeCurrentWaypoint(quint16)));
//            }
//            WaypointView *wpv = wpViews.value(wp);
//            wpv->updateValues();    // update the values of the ui elements in the view
//            listLayout->addWidget(wpv);

//        }
lm's avatar
lm committed
446 447 448 449
//        this->setUpdatesEnabled(true);
//    }
////    loadFileGlobalWP = false;
//}
pixhawk's avatar
pixhawk committed
450

451
void WaypointList::moveUp(Waypoint* wp)
pixhawk's avatar
pixhawk committed
452
{
453
    if (uas) {
pixhawk's avatar
pixhawk committed
454
        const QVector<Waypoint *> &waypoints = uas->getWaypointManager()->getWaypointList();
455 456 457

        //get the current position of wp in the local storage
        int i;
458
        for (i = 0; i < waypoints.size(); i++) {
459 460
            if (waypoints[i] == wp)
                break;
461 462
        }

463
        // if wp was found and its not the first entry, move it
464
        if (i < waypoints.size() && i > 0) {
pixhawk's avatar
pixhawk committed
465
            uas->getWaypointManager()->moveWaypoint(i, i-1);
pixhawk's avatar
pixhawk committed
466 467 468 469
        }
    }
}

470
void WaypointList::moveDown(Waypoint* wp)
pixhawk's avatar
pixhawk committed
471
{
472
    if (uas) {
pixhawk's avatar
pixhawk committed
473
        const QVector<Waypoint *> &waypoints = uas->getWaypointManager()->getWaypointList();
474

475 476
        //get the current position of wp in the local storage
        int i;
477
        for (i = 0; i < waypoints.size(); i++) {
478 479
            if (waypoints[i] == wp)
                break;
pixhawk's avatar
pixhawk committed
480 481
        }

482
        // if wp was found and its not the last entry, move it
483
        if (i < waypoints.size()-1) {
pixhawk's avatar
pixhawk committed
484
            uas->getWaypointManager()->moveWaypoint(i, i+1);
pixhawk's avatar
pixhawk committed
485 486 487 488 489 490
        }
    }
}

void WaypointList::removeWaypoint(Waypoint* wp)
{
491
    if (uas) {
pixhawk's avatar
pixhawk committed
492
        uas->getWaypointManager()->removeWaypoint(wp->getId());
pixhawk's avatar
pixhawk committed
493 494 495 496 497 498 499 500 501 502 503 504 505 506
    }
}

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

507 508 509 510


void WaypointList::on_clearWPListButton_clicked()
{
511

tecnosapiens's avatar
tecnosapiens committed
512

513 514 515 516 517 518
    if (uas) {
        emit clearPathclicked();
        const QVector<Waypoint *> &waypoints = uas->getWaypointManager()->getWaypointList();
        while(!waypoints.isEmpty()) { //for(int i = 0; i <= waypoints.size(); i++)
            WaypointView* widget = wpViews.find(waypoints[0]).value();
            widget->remove();
519
        }
520
    } else {
lm's avatar
lm committed
521 522 523 524 525
//        if(isGlobalWP)
//        {
//           emit clearPathclicked();
//        }
    }
526 527
}

pixhawk's avatar
pixhawk committed
528
///** @brief The MapWidget informs that a waypoint global was changed on the map */
529

pixhawk's avatar
pixhawk committed
530 531 532 533 534 535 536 537
//void WaypointList::waypointGlobalChanged(QPointF coordinate, int indexWP)
//{
//    if (uas)
//    {
//        const QVector<Waypoint *> &waypoints = uas->getWaypointManager()->getWaypointList();
//        if (waypoints.size() > 0)
//        {
//            Waypoint *temp = waypoints.at(indexWP);
538

pixhawk's avatar
pixhawk committed
539 540
//            temp->setX(coordinate.x());
//            temp->setY(coordinate.y());
541

pixhawk's avatar
pixhawk committed
542 543 544 545
//            //WaypointGlobalView* widget = wpGlobalViews.find(waypoints[indexWP]).value();
//            //widget->updateValues();
//        }
//    }
546 547


pixhawk's avatar
pixhawk committed
548
//}
549

550 551 552 553 554 555 556 557 558 559 560 561 562
///** @brief The MapWidget informs that a waypoint global was changed on the map */

//void WaypointList::waypointGlobalPositionChanged(Waypoint* wp)
//{
//    QPointF coordinate;
//    coordinate.setX(wp->getX());
//    coordinate.setY(wp->getY());

//   emit ChangeWaypointGlobalPosition(wp->getId(), coordinate);


//}

563
void WaypointList::clearWPWidget()
564
{
565 566 567 568 569 570 571
    if (uas) {
        const QVector<Waypoint *> &waypoints = uas->getWaypointManager()->getWaypointList();
        while(!waypoints.isEmpty()) { //for(int i = 0; i <= waypoints.size(); i++)
            WaypointView* widget = wpViews.find(waypoints[0]).value();
            widget->remove();
        }
    }
572
}
573

pixhawk's avatar
pixhawk committed
574 575 576 577
//void WaypointList::setIsLoadFileWP()
//{
//    loadFileGlobalWP = true;
//}
578

pixhawk's avatar
pixhawk committed
579 580 581 582 583 584
//void WaypointList::setIsReadGlobalWP(bool value)
//{
//    // FIXME James Check this
//    Q_UNUSED(value);
//    // readGlobalWP = value;
//}