WaypointList.h 2.79 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 Definition of list of waypoints 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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
 *
 */

#ifndef WAYPOINTLIST_H
#define WAYPOINTLIST_H

#include <QtGui/QWidget>
#include <QMap>
#include <QVBoxLayout>
#include <QTimer>
#include "Waypoint.h"
#include "UASInterface.h"
#include "WaypointView.h"

namespace Ui {
    class WaypointList;
}

class WaypointList : public QWidget {
    Q_OBJECT
    Q_DISABLE_COPY(WaypointList)
        public:
            WaypointList(QWidget* parent = NULL, UASInterface* uas = NULL);
    virtual ~WaypointList();

public slots:
    void setUAS(UASInterface* uas);
    void redrawList();
pixhawk's avatar
pixhawk committed
59 60 61 62 63 64 65
    void reenableTransmit();

    //UI Buttons
    void saveWaypoints();
    void loadWaypoints();    
    void transmit();
    void add();
pixhawk's avatar
pixhawk committed
66 67 68
    void moveUp(Waypoint* wp);
    void moveDown(Waypoint* wp);
    void setCurrentWaypoint(Waypoint* wp);
pixhawk's avatar
pixhawk committed
69

70 71 72
    /** @brief sets statusLabel string */
    void updateStatusLabel(const QString &string);

pixhawk's avatar
pixhawk committed
73
    //To be moved to UASWaypointManager (?)
74
    void setWaypoint(int uasId, quint16 id, double x, double y, double z, double yaw, bool autocontinue, bool current);
pixhawk's avatar
pixhawk committed
75
    void addWaypoint(Waypoint* wp);
76 77
    void removeWaypoint(Waypoint* wp);
    void waypointReached(UASInterface* uas, quint16 waypointId);
pixhawk's avatar
pixhawk committed
78 79 80

protected:
    virtual void changeEvent(QEvent *e);
pixhawk's avatar
pixhawk committed
81

pixhawk's avatar
pixhawk committed
82 83 84 85 86 87 88 89 90 91
    QVector<Waypoint*> waypoints;
    QMap<Waypoint*, WaypointView*> wpViews;
    QVBoxLayout* listLayout;
    QTimer* transmitDelay;
    UASInterface* uas;

private:
    Ui::WaypointList *m_ui;

signals:
92 93 94 95
    //void waypointChanged(Waypoint*);
    //void currentWaypointChanged(int);
    //void removeWaypointId(int);
    void sendWaypoints(const QVector<Waypoint*> &);
pixhawk's avatar
pixhawk committed
96 97 98 99 100
    void requestWaypoints();
    void clearWaypointList();
};

#endif // WAYPOINTLIST_H