WaypointEditableView.h 3.97 KB
Newer Older
pixhawk's avatar
pixhawk committed
1
/*===================================================================
2
QGroundControl Open Source Ground Control Station
pixhawk's avatar
pixhawk committed
3

4
(c) 2009, 2010 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
pixhawk's avatar
pixhawk committed
5

6
This file is part of the QGROUNDCONTROL project
pixhawk's avatar
pixhawk committed
7

8
    QGROUNDCONTROL is free software: you can redistribute it and/or modify
pixhawk's avatar
pixhawk committed
9 10 11
    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.
12

13
    QGROUNDCONTROL is distributed in the hope that it will be useful,
pixhawk's avatar
pixhawk committed
14 15 16
    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.
17

pixhawk's avatar
pixhawk committed
18
    You should have received a copy of the GNU General Public License
19
    along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
20

pixhawk's avatar
pixhawk committed
21 22 23 24 25 26 27 28
======================================================================*/

/**
 * @file
 *   @brief Displays one waypoint
 *
 *   @author Lorenz Meier <mavteam@student.ethz.ch>
 *   @author Benjamin Knecht <mavteam@student.ethz.ch>
29
 *   @author Petri Tanskanen <mavteam@student.ethz.ch>
30
 *   @author Alex Trofimov <talex@student.ethz.ch>
pixhawk's avatar
pixhawk committed
31 32
 */

33 34
#ifndef WAYPOINTEDITABLEVIEW_H
#define WAYPOINTEDITABLEVIEW_H
pixhawk's avatar
pixhawk committed
35 36 37

#include <QtGui/QWidget>
#include "Waypoint.h"
38
#include <iostream>
pixhawk's avatar
pixhawk committed
39

40
enum QGC_WAYPOINTEDITABLEVIEW_MODE {
41
    QGC_WAYPOINTEDITABLEVIEW_MODE_DEFAULT,
42
    QGC_WAYPOINTEDITABLEVIEW_MODE_DIRECT_EDITING
43 44
};

45 46
namespace Ui
{
47
class WaypointEditableView;
pixhawk's avatar
pixhawk committed
48
}
49
class QGCMissionNavWaypoint;
50 51 52 53 54
class QGCMissionNavLoiterUnlim;
class QGCMissionNavLoiterTurns;
class QGCMissionNavLoiterTime;
class QGCMissionDoJump;
class QGCMissionConditionDelay;
pixhawk's avatar
pixhawk committed
55
class QGCMissionOther;
56

57
class WaypointEditableView : public QWidget
58
{
pixhawk's avatar
pixhawk committed
59
    Q_OBJECT
60
    Q_DISABLE_COPY(WaypointEditableView)
pixhawk's avatar
pixhawk committed
61
public:
62 63
    explicit WaypointEditableView(Waypoint* wp, QWidget* parent);
    virtual ~WaypointEditableView();
64

pixhawk's avatar
pixhawk committed
65
public:
pixhawk's avatar
pixhawk committed
66
    void setCurrent(bool state);
67

pixhawk's avatar
pixhawk committed
68 69 70 71
public slots:
    void moveUp();
    void moveDown();
    void remove();
pixhawk's avatar
pixhawk committed
72 73
    /** @brief Waypoint matching this widget has been deleted */
    void deleted(QObject* waypoint);
74
    void changedAutoContinue(int);    
75
    void changedFrame(int state);
76
    void updateActionView(int action);
77
    void initializeActionView(int action);
78

pixhawk's avatar
pixhawk committed
79
    void changedCurrent(int);
80
    void updateValues(void);
81 82 83 84 85 86 87 88 89
    void changedAction(int state); //change commandID, including the view
    void changedCommand(int mav_cmd_id); //only update WP->command, but do not change the view. Should only be used for "other" waypoint-type.
    void changedParam1(double value);
    void changedParam2(double value);
    void changedParam3(double value);
    void changedParam4(double value);
    void changedParam5(double value);
    void changedParam6(double value);
    void changedParam7(double value);
90

91 92
protected slots:

pixhawk's avatar
pixhawk committed
93 94 95
protected:
    virtual void changeEvent(QEvent *e);
    Waypoint* wp;
96 97
    QGC_WAYPOINTEDITABLEVIEW_MODE viewMode;
    // Widgets for every mission element
98
    QGCMissionNavWaypoint* MissionNavWaypointWidget;
99 100 101 102 103
    QGCMissionNavLoiterUnlim* MissionNavLoiterUnlimWidget;
    QGCMissionNavLoiterTurns* MissionNavLoiterTurnsWidget;
    QGCMissionNavLoiterTime* MissionNavLoiterTimeWidget;
    QGCMissionDoJump* MissionDoJumpWidget;
    QGCMissionConditionDelay* MissionConditionDelayWidget;
pixhawk's avatar
pixhawk committed
104
    QGCMissionOther* MissionOtherWidget;
105

106

pixhawk's avatar
pixhawk committed
107
private:
108
    Ui::WaypointEditableView *m_ui;
109

pixhawk's avatar
pixhawk committed
110 111 112
signals:
    void moveUpWaypoint(Waypoint*);
    void moveDownWaypoint(Waypoint*);
113
    void removeWaypoint(Waypoint*);    
114
    void changeCurrentWaypoint(quint16);
pixhawk's avatar
pixhawk committed
115
    void setYaw(double);
116 117 118 119 120 121 122 123 124 125

    void commandBroadcast(int mav_cmd_id);
    void frameBroadcast(MAV_FRAME frame);
    void param1Broadcast(double value);
    void param2Broadcast(double value);
    void param3Broadcast(double value);
    void param4Broadcast(double value);
    void param5Broadcast(double value);
    void param6Broadcast(double value);
    void param7Broadcast(double value);
pixhawk's avatar
pixhawk committed
126 127
};

128
#endif // WAYPOINTEDITABLEVIEW_H