1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-02-06 21:54:15 +01:00

GCS/OPMap- handles home icon doubleclick.

Visual changes to the waypoint editor.
This commit is contained in:
PT_Dreamer 2012-06-24 20:05:27 +01:00
parent b84af5c338
commit 55af80ffaf
4 changed files with 108 additions and 79 deletions

View File

@ -35,5 +35,6 @@
<file>images/plus3.png</file> <file>images/plus3.png</file>
<file>images/forward_alt.png</file> <file>images/forward_alt.png</file>
<file>images/star.png</file> <file>images/star.png</file>
<file>images/down_alt.png</file>
</qresource> </qresource>
</RCC> </RCC>

View File

@ -13,7 +13,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>606</width> <width>606</width>
<height>375</height> <height>387</height>
</rect> </rect>
</property> </property>
<property name="sizePolicy"> <property name="sizePolicy">
@ -83,30 +83,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="6" column="0"> <item row="11" column="0">
<widget class="QLabel" name="label_3">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Altitude </string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="6" column="3">
<widget class="QLabel" name="label_6">
<property name="text">
<string>meters</string>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QLabel" name="label_8"> <widget class="QLabel" name="label_8">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred"> <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
@ -122,7 +99,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="8" column="2" colspan="2"> <item row="11" column="2" colspan="2">
<widget class="QLineEdit" name="lineEditDescription"/> <widget class="QLineEdit" name="lineEditDescription"/>
</item> </item>
<item row="2" column="2"> <item row="2" column="2">
@ -157,16 +134,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="6" column="2">
<widget class="QDoubleSpinBox" name="doubleSpinBoxAltitude">
<property name="minimum">
<double>-5000.000000000000000</double>
</property>
<property name="maximum">
<double>5000.000000000000000</double>
</property>
</widget>
</item>
<item row="3" column="3"> <item row="3" column="3">
<widget class="QLabel" name="lbDegLong"> <widget class="QLabel" name="lbDegLong">
<property name="text"> <property name="text">
@ -197,28 +164,28 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="2"> <item row="6" column="2">
<widget class="QSpinBox" name="spinBoxDistance"> <widget class="QSpinBox" name="spinBoxDistance">
<property name="maximum"> <property name="maximum">
<number>999999999</number> <number>999999999</number>
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="3"> <item row="6" column="3">
<widget class="QLabel" name="lbDistanceMeters"> <widget class="QLabel" name="lbDistanceMeters">
<property name="text"> <property name="text">
<string>meters</string> <string>meters</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="3"> <item row="7" column="3">
<widget class="QLabel" name="lbBearingDeg"> <widget class="QLabel" name="lbBearingDeg">
<property name="text"> <property name="text">
<string>degrees</string> <string>degrees</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="0"> <item row="7" column="0">
<widget class="QLabel" name="lbBearing"> <widget class="QLabel" name="lbBearing">
<property name="text"> <property name="text">
<string>Bearing </string> <string>Bearing </string>
@ -228,14 +195,14 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="2"> <item row="7" column="2">
<widget class="QDoubleSpinBox" name="doubleSpinBoxBearing"> <widget class="QDoubleSpinBox" name="doubleSpinBoxBearing">
<property name="maximum"> <property name="maximum">
<double>360.000000000000000</double> <double>360.000000000000000</double>
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="0"> <item row="6" column="0">
<widget class="QLabel" name="lbDistance"> <widget class="QLabel" name="lbDistance">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred"> <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
@ -285,7 +252,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="7" column="0"> <item row="10" column="0">
<widget class="QLabel" name="label_4"> <widget class="QLabel" name="label_4">
<property name="text"> <property name="text">
<string>Velocity </string> <string>Velocity </string>
@ -295,9 +262,62 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="7" column="2"> <item row="10" column="2">
<widget class="QDoubleSpinBox" name="doubleSpinBoxVelocity"/> <widget class="QDoubleSpinBox" name="doubleSpinBoxVelocity"/>
</item> </item>
<item row="4" column="0">
<widget class="QLabel" name="label_3">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Altitude </string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="QDoubleSpinBox" name="doubleSpinBoxAltitude">
<property name="minimum">
<double>-5000.000000000000000</double>
</property>
<property name="maximum">
<double>5000.000000000000000</double>
</property>
</widget>
</item>
<item row="4" column="3">
<widget class="QLabel" name="label_6">
<property name="text">
<string>meters</string>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Relative altitude </string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="8" column="2">
<widget class="QDoubleSpinBox" name="doubleSpinBoxRelativeAltitude"/>
</item>
<item row="8" column="3">
<widget class="QLabel" name="label_9">
<property name="text">
<string>meters</string>
</property>
</widget>
</item>
</layout> </layout>
</item> </item>
</layout> </layout>

View File

@ -161,6 +161,8 @@ OPMapGadgetWidget::OPMapGadgetWidget(QWidget *parent) : QWidget(parent)
m_map->Home->SetSafeArea(safe_area_radius_list[0]); // set radius (meters) m_map->Home->SetSafeArea(safe_area_radius_list[0]); // set radius (meters)
m_map->Home->SetShowSafeArea(true); // show the safe area m_map->Home->SetShowSafeArea(true); // show the safe area
if(m_map->Home)
connect(m_map->Home,SIGNAL(homedoubleclick(HomeItem*)),this,SLOT(onHomeDoubleClick(HomeItem*)));
m_map->UAV->SetTrailTime(uav_trail_time_list[0]); // seconds m_map->UAV->SetTrailTime(uav_trail_time_list[0]); // seconds
m_map->UAV->SetTrailDistance(uav_trail_distance_list[1]); // meters m_map->UAV->SetTrailDistance(uav_trail_distance_list[1]); // meters
@ -213,39 +215,16 @@ OPMapGadgetWidget::OPMapGadgetWidget(QWidget *parent) : QWidget(parent)
if(m_map->GPS) if(m_map->GPS)
m_map->GPS->SetUAVPos(m_home_position.coord, 0.0); // set the UAV position m_map->GPS->SetUAVPos(m_home_position.coord, 0.0); // set the UAV position
qDebug()<<"here0";
model=new flightDataModel(this); model=new flightDataModel(this);
qDebug()<<"here1";
table=new pathPlanner(); table=new pathPlanner();
qDebug()<<"here2";
selectionModel=new QItemSelectionModel(model); selectionModel=new QItemSelectionModel(model);
qDebug()<<"here3"; mapProxy=new modelMapProxy(this,m_map,model,selectionModel);
proxy=new modelMapProxy(this,m_map,model,selectionModel);
qDebug()<<"here4";
table->setModel(model,selectionModel); table->setModel(model,selectionModel);
qDebug()<<"here5";
table->show();
qDebug()<<"here6";
waypoint_edit_dialog=new opmap_edit_waypoint_dialog(NULL,model,selectionModel); waypoint_edit_dialog=new opmap_edit_waypoint_dialog(NULL,model,selectionModel);
qDebug()<<"here7"; UAVProxy=new modelUavoProxy(this,model);
connect(table,SIGNAL(sendPathPlanToUAV()),UAVProxy,SLOT(modelToObjects()));
connect(table,SIGNAL(receivePathPlanFromUAV()),UAVProxy,SLOT(objectsToModel()));
/*
distBearing db;
db.distance=100;
db.bearing=0;
WayPointItem * p1=m_map->WPCreate(db,10,"aaa");
db.distance=100;
db.bearing=45;
WayPointItem * p2=m_map->WPCreate(db,10,"bbb");
m_map->WPCircleCreate(p2,p1,true);
t_waypoint *wp = new t_waypoint;
wp->map_wp_item=p1;
m_waypoint_list.append(wp);
wp=new t_waypoint;
wp->map_wp_item=p2;
m_waypoint_list.append(wp);
*/
magicWayPoint=m_map->magicWPCreate(); magicWayPoint=m_map->magicWPCreate();
magicWayPoint->setVisible(false); magicWayPoint->setVisible(false);
@ -310,6 +289,18 @@ OPMapGadgetWidget::~OPMapGadgetWidget()
delete m_map; delete m_map;
m_map = NULL; m_map = NULL;
} }
if(model)
delete model;
if(table)
delete table;
if(selectionModel)
delete selectionModel;
if(mapProxy)
delete mapProxy;
if(waypoint_edit_dialog)
delete waypoint_edit_dialog;
if(UAVProxy)
delete UAVProxy;
} }
// ************************************************************************************* // *************************************************************************************
@ -530,6 +521,12 @@ void OPMapGadgetWidget::contextMenuEvent(QContextMenuEvent *event)
// **************** // ****************
} }
void OPMapGadgetWidget::closeEvent(QCloseEvent *event)
{
table->close();
QWidget::closeEvent(event);
}
// ************************************************************************************* // *************************************************************************************
// timer signals // timer signals
@ -1295,7 +1292,6 @@ void OPMapGadgetWidget::createActions()
wayPointEditorAct = new QAction(tr("&Waypoint editor"), this); wayPointEditorAct = new QAction(tr("&Waypoint editor"), this);
wayPointEditorAct->setShortcut(tr("Ctrl+W")); wayPointEditorAct->setShortcut(tr("Ctrl+W"));
wayPointEditorAct->setStatusTip(tr("Open the waypoint editor")); wayPointEditorAct->setStatusTip(tr("Open the waypoint editor"));
wayPointEditorAct->setEnabled(true); // temporary
connect(wayPointEditorAct, SIGNAL(triggered()), this, SLOT(onOpenWayPointEditorAct_triggered())); connect(wayPointEditorAct, SIGNAL(triggered()), this, SLOT(onOpenWayPointEditorAct_triggered()));
addWayPointActFromContextMenu = new QAction(tr("&Add waypoint"), this); addWayPointActFromContextMenu = new QAction(tr("&Add waypoint"), this);
@ -1702,7 +1698,7 @@ void OPMapGadgetWidget::onUAVTrailDistanceActGroup_triggered(QAction *action)
void OPMapGadgetWidget::onOpenWayPointEditorAct_triggered() void OPMapGadgetWidget::onOpenWayPointEditorAct_triggered()
{ {
//TODO table->show();
} }
void OPMapGadgetWidget::onAddWayPointAct_triggeredFromContextMenu() void OPMapGadgetWidget::onAddWayPointAct_triggeredFromContextMenu()
{ {
@ -1722,7 +1718,7 @@ void OPMapGadgetWidget::onAddWayPointAct_triggered(internals::PointLatLng coord)
return; return;
// m_map->WPCreate(coord, 0, ""); // m_map->WPCreate(coord, 0, "");
proxy->createWayPoint(coord); mapProxy->createWayPoint(coord);
//wp->map_wp_item->picture.load(QString::fromUtf8(":/opmap/images/waypoint_marker1.png")); //wp->map_wp_item->picture.load(QString::fromUtf8(":/opmap/images/waypoint_marker1.png"));
//wp->map_wp_item->picture.load(QString::fromUtf8(":/opmap/images/waypoint_marker2.png")); //wp->map_wp_item->picture.load(QString::fromUtf8(":/opmap/images/waypoint_marker2.png"));
@ -1748,7 +1744,6 @@ void OPMapGadgetWidget::onEditWayPointAct_triggered()
return; return;
waypoint_edit_dialog->editWaypoint(m_mouse_waypoint); waypoint_edit_dialog->editWaypoint(m_mouse_waypoint);
m_mouse_waypoint = NULL; m_mouse_waypoint = NULL;
} }
@ -1788,7 +1783,7 @@ void OPMapGadgetWidget::onDeleteWayPointAct_triggered()
if (!m_mouse_waypoint) if (!m_mouse_waypoint)
return; return;
proxy->deleteWayPoint(m_mouse_waypoint->Number()); mapProxy->deleteWayPoint(m_mouse_waypoint->Number());
} }
void OPMapGadgetWidget::onClearWayPointsAct_triggered() void OPMapGadgetWidget::onClearWayPointsAct_triggered()
@ -1799,7 +1794,7 @@ void OPMapGadgetWidget::onClearWayPointsAct_triggered()
if (m_map_mode != Normal_MapMode) if (m_map_mode != Normal_MapMode)
return; return;
proxy->deleteAll(); mapProxy->deleteAll();
} }
@ -2117,3 +2112,8 @@ void OPMapGadgetWidget::on_tbFind_clicked()
m_widget->leFind->setPalette(pal); m_widget->leFind->setPalette(pal);
} }
} }
void OPMapGadgetWidget::onHomeDoubleClick(HomeItem *)
{
new homeEditor(m_map->Home,this);
}

View File

@ -34,6 +34,7 @@
#include "flightdatamodel.h" #include "flightdatamodel.h"
#include "pathplanner.h" #include "pathplanner.h"
#include "modelmapproxy.h" #include "modelmapproxy.h"
#include "modeluavoproxy.h"
#include <QtGui/QWidget> #include <QtGui/QWidget>
#include <QtGui/QMenu> #include <QtGui/QMenu>
@ -59,6 +60,8 @@
#include <QItemSelectionModel> #include <QItemSelectionModel>
#include "opmap_edit_waypoint_dialog.h" #include "opmap_edit_waypoint_dialog.h"
#include "homeeditor.h"
// ****************************************************** // ******************************************************
namespace Ui namespace Ui
@ -124,6 +127,7 @@ protected:
void resizeEvent(QResizeEvent *event); void resizeEvent(QResizeEvent *event);
void mouseMoveEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event);
void contextMenuEvent(QContextMenuEvent *event); void contextMenuEvent(QContextMenuEvent *event);
void closeEvent(QCloseEvent *);
private slots: private slots:
void wpDoubleClickEvent(WayPointItem *wp); void wpDoubleClickEvent(WayPointItem *wp);
void updatePosition(); void updatePosition();
@ -202,7 +206,7 @@ private slots:
void onMaxUpdateRateActGroup_triggered(QAction *action); void onMaxUpdateRateActGroup_triggered(QAction *action);
void onChangeDefaultLocalAndZoom(); void onChangeDefaultLocalAndZoom();
void on_tbFind_clicked(); void on_tbFind_clicked();
void onHomeDoubleClick(HomeItem*);
private: private:
// ***** // *****
@ -244,6 +248,10 @@ private:
mapcontrol::WayPointItem *m_mouse_waypoint; mapcontrol::WayPointItem *m_mouse_waypoint;
modelUavoProxy * UAVProxy;
QMutex m_map_mutex; QMutex m_map_mutex;
bool m_telemetry_connected; bool m_telemetry_connected;
@ -334,7 +342,7 @@ private:
flightDataModel * model; flightDataModel * model;
pathPlanner * table; pathPlanner * table;
modelMapProxy * proxy; modelMapProxy * mapProxy;
QItemSelectionModel * selectionModel; QItemSelectionModel * selectionModel;
}; };