/*===================================================================== QGroundControl Open Source Ground Control Station (c) 2009, 2010 QGROUNDCONTROL PROJECT This file is part of the QGROUNDCONTROL project QGROUNDCONTROL 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. QGROUNDCONTROL 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 QGROUNDCONTROL. If not, see . ======================================================================*/ /** * @file * @brief Definition of list of waypoints widget * * @author Lorenz Meier * @author Benjamin Knecht * @author Petri Tanskanen * */ #ifndef WAYPOINTLIST_H #define WAYPOINTLIST_H #include #include #include #include #include "MissionItem.h" #include "UASInterface.h" #include "WaypointEditableView.h" #include "WaypointViewOnlyView.h" namespace Ui { class WaypointList; } class WaypointList : public QWidget { Q_OBJECT Q_DISABLE_COPY(WaypointList) public: WaypointList(QWidget* parent = NULL, UASWaypointManager* wpm = NULL); virtual ~WaypointList(); public slots: void updatePosition(UASInterface*, double x, double y, double z, quint64 usec); void updateAttitude(UASInterface*, double roll, double pitch, double yaw, quint64 usec); void setUAS(UASInterface* uas); //MissionItem list operations /** @brief Save the local waypoint list to a file */ void saveWaypoints(); /** @brief Load a waypoint list from a file */ void loadWaypoints(); /** @brief Transmit the local waypoint list to the UAS */ void transmit(); /** @brief Read the remote waypoint list to both tabs */ void read(); /** @brief Read the remote waypoint list to "view"-tab only*/ void refresh(); /** @brief Add a waypoint to "edit"-tab */ void addEditable(); /** @brief Add a waypoint to "edit"-tab on current MAV position or on generic position (home) */ void addEditable(bool onCurrentPosition); /** @brief Add a waypoint at the current MAV position */ void addCurrentPositionWaypoint(); /** @brief Add a waypoint by mouse click over the map */ //Update events /** @brief sets statusLabel string */ void updateStatusLabel(const QString &string); /** @brief The user wants to change the current waypoint */ void changeCurrentWaypoint(quint16 seq); /** @brief Current waypoint in edit-tab was changed, so the list must be updated (to contain only one waypoint checked as "current") */ void currentWaypointEditableChanged(quint16 seq); /** @brief Current waypoint on UAV was changed, update view-tab */ void currentWaypointViewOnlyChanged(quint16 seq); /** @brief The waypoint manager informs that one editable waypoint was changed */ void updateWaypointEditable(int uas, MissionItem* wp); /** @brief The waypoint manager informs that one viewonly waypoint was changed */ void updateWaypointViewOnly(int uas, MissionItem* wp); /** @brief The waypoint manager informs that the editable waypoint list was changed */ void waypointEditableListChanged(void); /** @brief The waypoint manager informs that the waypoint list on the MAV was changed */ void waypointViewOnlyListChanged(void); // /** @brief The MapWidget informs that a waypoint global was changed on the map */ // void waypointGlobalChanged(const QPointF coordinate, const int indexWP); void clearWPWidget(); //void changeWPPositionBySpinBox(MissionItem* wp); // MissionItem operations void moveUp(MissionItem* wp); void moveDown(MissionItem* wp); void removeWaypoint(MissionItem* wp); // void setIsLoadFileWP(); // void setIsReadGlobalWP(bool value); signals: void clearPathclicked(); void createWaypointAtMap(const QPointF coordinate); protected: virtual void changeEvent(QEvent *e); protected: QMap wpEditableViews; QMap wpViewOnlyViews; QVBoxLayout* viewOnlyListLayout; QVBoxLayout* editableListLayout; UASInterface* uas; UASWaypointManager* WPM; double mavX; double mavY; double mavZ; double mavYaw; QPointF centerMapCoordinate; bool loadFileGlobalWP; bool readGlobalWP; bool showOfflineWarning; private: Ui::WaypointList *m_ui; private slots: void on_clearWPListButton_clicked(); }; #endif // WAYPOINTLIST_H