mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2024-11-30 08:24:11 +01:00
Added UAV trail settings onto the right-click context menu on the map.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1927 ebee16cc-31ac-478f-84a7-5cbb03baadba
This commit is contained in:
parent
34dffe73de
commit
676166f045
@ -553,44 +553,6 @@ border-radius: 2px;
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QToolButton" name="toolButtonShowUAVtrail">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Show/Hide the UAV trail</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Trail</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="opmap.qrc">
|
||||
<normaloff>:/opmap/images/uav_trail.png</normaloff>:/opmap/images/uav_trail.png</iconset>
|
||||
</property>
|
||||
<property name="iconSize">
|
||||
<size>
|
||||
<width>28</width>
|
||||
<height>28</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="autoRepeat">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="toolButtonStyle">
|
||||
<enum>Qt::ToolButtonIconOnly</enum>
|
||||
</property>
|
||||
<property name="autoRaise">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
|
@ -40,7 +40,11 @@
|
||||
|
||||
#define max_digital_zoom 3 // maximum allowed digital zoom level
|
||||
|
||||
const int safe_area_radius_list[] = {5, 10, 20, 50, 100, 200, 500, 1000, 2000, 5000};
|
||||
const int safe_area_radius_list[] = {5, 10, 20, 50, 100, 200, 500, 1000, 2000, 5000}; // meters
|
||||
|
||||
const int uav_trail_time_list[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // seconds
|
||||
|
||||
const int uav_trail_distance_list[] = {1, 2, 5, 10, 20, 50, 100, 200, 500}; // meters
|
||||
|
||||
// *************************************************************************************
|
||||
|
||||
@ -131,14 +135,14 @@ OPMapGadgetWidget::OPMapGadgetWidget(QWidget *parent) : QWidget(parent)
|
||||
m_map->SetShowHome(true); // display the HOME position on the map
|
||||
m_map->SetShowUAV(true); // display the UAV position on the map
|
||||
|
||||
m_map->Home->SetSafeArea(safe_area_radius_list[3]); // set radius (meters)
|
||||
m_map->Home->SetShowSafeArea(true); // show the safe area
|
||||
m_map->Home->SetSafeArea(safe_area_radius_list[3]); // set radius (meters)
|
||||
m_map->Home->SetShowSafeArea(true); // show the safe area
|
||||
|
||||
m_map->UAV->SetTrailTime(0.5); // seconds
|
||||
m_map->UAV->SetTrailDistance(0.01); // kilometers
|
||||
m_map->UAV->SetTrailTime(uav_trail_time_list[0]); // seconds
|
||||
m_map->UAV->SetTrailDistance(uav_trail_distance_list[1]); // meters
|
||||
|
||||
// m_map->UAV->SetTrailType(UAVTrailType::ByTimeElapsed);
|
||||
m_map->UAV->SetTrailType(UAVTrailType::ByDistance);
|
||||
m_map->UAV->SetTrailType(UAVTrailType::ByTimeElapsed);
|
||||
// m_map->UAV->SetTrailType(UAVTrailType::ByDistance);
|
||||
|
||||
// **************
|
||||
|
||||
@ -218,8 +222,6 @@ OPMapGadgetWidget::OPMapGadgetWidget(QWidget *parent) : QWidget(parent)
|
||||
|
||||
m_widget->progressBarMap->setMaximum(1);
|
||||
|
||||
m_widget->toolButtonShowUAVtrail->setChecked(true);
|
||||
|
||||
/*
|
||||
#if defined(Q_OS_MAC)
|
||||
#elif defined(Q_OS_WIN)
|
||||
@ -540,16 +542,37 @@ void OPMapGadgetWidget::contextMenuEvent(QContextMenuEvent *event)
|
||||
menu.addAction(showHomeAct);
|
||||
menu.addAction(goHomeAct);
|
||||
|
||||
// ****
|
||||
// uav trails
|
||||
|
||||
menu.addSeparator()->setText(tr("UAV Trail"));
|
||||
|
||||
QMenu uavTrailTypeSubMenu(tr("UAV trail type") + " (" + mapcontrol::Helper::StrFromUAVTrailType(m_map->UAV->GetTrailType()) + ")", this);
|
||||
for (int i = 0; i < uavTrailTypeAct.count(); i++)
|
||||
uavTrailTypeSubMenu.addAction(uavTrailTypeAct.at(i));
|
||||
menu.addMenu(&uavTrailTypeSubMenu);
|
||||
|
||||
QMenu uavTrailTimeSubMenu(tr("UAV trail time") + " (" + QString::number(m_map->UAV->TrailTime()) + " sec)", this);
|
||||
for (int i = 0; i < uavTrailTimeAct.count(); i++)
|
||||
uavTrailTimeSubMenu.addAction(uavTrailTimeAct.at(i));
|
||||
menu.addMenu(&uavTrailTimeSubMenu);
|
||||
|
||||
QMenu uavTrailDistanceSubMenu(tr("UAV trail distance") + " (" + QString::number(m_map->UAV->TrailDistance()) + " meters)", this);
|
||||
for (int i = 0; i < uavTrailDistanceAct.count(); i++)
|
||||
uavTrailDistanceSubMenu.addAction(uavTrailDistanceAct.at(i));
|
||||
menu.addMenu(&uavTrailDistanceSubMenu);
|
||||
|
||||
menu.addAction(clearUAVtrailAct);
|
||||
|
||||
// ****
|
||||
|
||||
menu.addSeparator()->setText(tr("UAV"));
|
||||
|
||||
menu.addAction(showUAVAct);
|
||||
menu.addAction(showUAVtrailAct);
|
||||
menu.addAction(followUAVpositionAct);
|
||||
menu.addAction(followUAVheadingAct);
|
||||
menu.addAction(goUAVAct);
|
||||
|
||||
menu.addAction(clearUAVtrailAct);
|
||||
|
||||
// *********
|
||||
|
||||
switch (m_map_mode)
|
||||
@ -913,16 +936,6 @@ void OPMapGadgetWidget::on_toolButtonMapUAVheading_clicked()
|
||||
followUAVheadingAct->toggle();
|
||||
}
|
||||
|
||||
void OPMapGadgetWidget::on_toolButtonShowUAVtrail_clicked()
|
||||
{
|
||||
if (!m_widget || !m_map)
|
||||
return;
|
||||
|
||||
// QMutexLocker locker(&m_map_mutex);
|
||||
|
||||
showUAVtrailAct->toggle();
|
||||
}
|
||||
|
||||
void OPMapGadgetWidget::on_horizontalSliderZoom_sliderMoved(int position)
|
||||
{
|
||||
if (!m_widget || !m_map)
|
||||
@ -1390,16 +1403,6 @@ void OPMapGadgetWidget::createActions()
|
||||
followUAVheadingAct->setChecked(false);
|
||||
connect(followUAVheadingAct, SIGNAL(toggled(bool)), this, SLOT(onFollowUAVheadingAct_toggled(bool)));
|
||||
|
||||
showUAVtrailAct = new QAction(tr("Show UAV trail"), this);
|
||||
showUAVtrailAct->setStatusTip(tr("Show/Hide the UAV trail"));
|
||||
showUAVtrailAct->setCheckable(true);
|
||||
showUAVtrailAct->setChecked(true);
|
||||
connect(showUAVtrailAct, SIGNAL(toggled(bool)), this, SLOT(onShowUAVtrailAct_toggled(bool)));
|
||||
|
||||
clearUAVtrailAct = new QAction(tr("Clear UAV trail"), this);
|
||||
clearUAVtrailAct->setStatusTip(tr("Clear the UAV trail"));
|
||||
connect(clearUAVtrailAct, SIGNAL(triggered()), this, SLOT(onClearUAVtrailAct_triggered()));
|
||||
|
||||
wayPointEditorAct = new QAction(tr("&Waypoint editor"), this);
|
||||
wayPointEditorAct->setShortcut(tr("Ctrl+W"));
|
||||
wayPointEditorAct->setStatusTip(tr("Open the waypoint editor"));
|
||||
@ -1492,6 +1495,53 @@ void OPMapGadgetWidget::createActions()
|
||||
safeAreaAct.append(safeArea_act);
|
||||
}
|
||||
|
||||
// *****
|
||||
// UAV trail
|
||||
|
||||
uavTrailTypeActGroup = new QActionGroup(this);
|
||||
connect(uavTrailTypeActGroup, SIGNAL(triggered(QAction *)), this, SLOT(onUAVTrailTypeActGroup_triggered(QAction *)));
|
||||
uavTrailTypeAct.clear();
|
||||
QStringList uav_trail_type_list = mapcontrol::Helper::UAVTrailTypes();
|
||||
for (int i = 0; i < uav_trail_type_list.count(); i++)
|
||||
{
|
||||
mapcontrol::UAVTrailType::Types uav_trail_type = mapcontrol::Helper::UAVTrailTypeFromString(uav_trail_type_list[i]);
|
||||
QAction *uavTrailType_act = new QAction(mapcontrol::Helper::StrFromUAVTrailType(uav_trail_type), uavTrailTypeActGroup);
|
||||
uavTrailType_act->setCheckable(true);
|
||||
uavTrailType_act->setChecked(uav_trail_type == m_map->UAV->GetTrailType());
|
||||
uavTrailType_act->setData(i);
|
||||
uavTrailTypeAct.append(uavTrailType_act);
|
||||
}
|
||||
|
||||
clearUAVtrailAct = new QAction(tr("Clear UAV trail"), this);
|
||||
clearUAVtrailAct->setStatusTip(tr("Clear the UAV trail"));
|
||||
connect(clearUAVtrailAct, SIGNAL(triggered()), this, SLOT(onClearUAVtrailAct_triggered()));
|
||||
|
||||
uavTrailTimeActGroup = new QActionGroup(this);
|
||||
connect(uavTrailTimeActGroup, SIGNAL(triggered(QAction *)), this, SLOT(onUAVTrailTimeActGroup_triggered(QAction *)));
|
||||
uavTrailTimeAct.clear();
|
||||
for (int i = 0; i < sizeof(uav_trail_time_list) / sizeof(uav_trail_time_list[0]); i++)
|
||||
{
|
||||
int uav_trail_time = uav_trail_time_list[i];
|
||||
QAction *uavTrailTime_act = new QAction(QString::number(uav_trail_time) + " sec", uavTrailTimeActGroup);
|
||||
uavTrailTime_act->setCheckable(true);
|
||||
uavTrailTime_act->setChecked(uav_trail_time == m_map->UAV->TrailTime());
|
||||
uavTrailTime_act->setData(uav_trail_time);
|
||||
uavTrailTimeAct.append(uavTrailTime_act);
|
||||
}
|
||||
|
||||
uavTrailDistanceActGroup = new QActionGroup(this);
|
||||
connect(uavTrailDistanceActGroup, SIGNAL(triggered(QAction *)), this, SLOT(onUAVTrailDistanceActGroup_triggered(QAction *)));
|
||||
uavTrailDistanceAct.clear();
|
||||
for (int i = 0; i < sizeof(uav_trail_distance_list) / sizeof(uav_trail_distance_list[0]); i++)
|
||||
{
|
||||
int uav_trail_distance = uav_trail_distance_list[i];
|
||||
QAction *uavTrailDistance_act = new QAction(QString::number(uav_trail_distance) + " meters", uavTrailDistanceActGroup);
|
||||
uavTrailDistance_act->setCheckable(true);
|
||||
uavTrailDistance_act->setChecked(uav_trail_distance == m_map->UAV->TrailDistance());
|
||||
uavTrailDistance_act->setData(uav_trail_distance);
|
||||
uavTrailDistanceAct.append(uavTrailDistance_act);
|
||||
}
|
||||
|
||||
// *****
|
||||
|
||||
// ***********************
|
||||
@ -1663,15 +1713,17 @@ void OPMapGadgetWidget::onFollowUAVheadingAct_toggled(bool checked)
|
||||
setMapFollowingMode();
|
||||
}
|
||||
|
||||
void OPMapGadgetWidget::onShowUAVtrailAct_toggled(bool checked)
|
||||
void OPMapGadgetWidget::onUAVTrailTypeActGroup_triggered(QAction *action)
|
||||
{
|
||||
if (!m_widget || !m_map)
|
||||
return;
|
||||
|
||||
if (m_widget->toolButtonShowUAVtrail->isChecked() != checked)
|
||||
m_widget->toolButtonShowUAVtrail->setChecked(checked);
|
||||
int trail_type_idx = action->data().toInt();
|
||||
|
||||
m_map->UAV->SetShowTrail(checked);
|
||||
QStringList uav_trail_type_list = mapcontrol::Helper::UAVTrailTypes();
|
||||
mapcontrol::UAVTrailType::Types uav_trail_type = mapcontrol::Helper::UAVTrailTypeFromString(uav_trail_type_list[trail_type_idx]);
|
||||
|
||||
m_map->UAV->SetTrailType(uav_trail_type);
|
||||
}
|
||||
|
||||
void OPMapGadgetWidget::onClearUAVtrailAct_triggered()
|
||||
@ -1682,6 +1734,26 @@ void OPMapGadgetWidget::onClearUAVtrailAct_triggered()
|
||||
m_map->UAV->DeleteTrail();
|
||||
}
|
||||
|
||||
void OPMapGadgetWidget::onUAVTrailTimeActGroup_triggered(QAction *action)
|
||||
{
|
||||
if (!m_widget || !m_map)
|
||||
return;
|
||||
|
||||
int trail_time = (double)action->data().toInt();
|
||||
|
||||
m_map->UAV->SetTrailTime(trail_time);
|
||||
}
|
||||
|
||||
void OPMapGadgetWidget::onUAVTrailDistanceActGroup_triggered(QAction *action)
|
||||
{
|
||||
if (!m_widget || !m_map)
|
||||
return;
|
||||
|
||||
int trail_distance = action->data().toInt();
|
||||
|
||||
m_map->UAV->SetTrailDistance(trail_distance);
|
||||
}
|
||||
|
||||
void OPMapGadgetWidget::onOpenWayPointEditorAct_triggered()
|
||||
{
|
||||
if (!m_widget || !m_map)
|
||||
|
@ -145,7 +145,6 @@ private slots:
|
||||
void on_toolButtonMapHome_clicked();
|
||||
void on_toolButtonMapUAV_clicked();
|
||||
void on_toolButtonMapUAVheading_clicked();
|
||||
void on_toolButtonShowUAVtrail_clicked();
|
||||
void on_horizontalSliderZoom_sliderMoved(int position);
|
||||
void on_toolButtonAddWaypoint_clicked();
|
||||
void on_treeViewWaypoints_clicked(QModelIndex index);
|
||||
@ -199,8 +198,6 @@ private slots:
|
||||
void onGoUAVAct_triggered();
|
||||
void onFollowUAVpositionAct_toggled(bool checked);
|
||||
void onFollowUAVheadingAct_toggled(bool checked);
|
||||
void onShowUAVtrailAct_toggled(bool checked);
|
||||
void onClearUAVtrailAct_triggered();
|
||||
void onOpenWayPointEditorAct_triggered();
|
||||
void onAddWayPointAct_triggered();
|
||||
void onEditWayPointAct_triggered();
|
||||
@ -213,6 +210,10 @@ private slots:
|
||||
void onCenterMagicWaypointAct_triggered();
|
||||
void onShowSafeAreaAct_toggled(bool show);
|
||||
void onSafeAreaActGroup_triggered(QAction *action);
|
||||
void onUAVTrailTypeActGroup_triggered(QAction *action);
|
||||
void onClearUAVtrailAct_triggered();
|
||||
void onUAVTrailTimeActGroup_triggered(QAction *action);
|
||||
void onUAVTrailDistanceActGroup_triggered(QAction *action);
|
||||
|
||||
private:
|
||||
int min_zoom;
|
||||
@ -283,8 +284,6 @@ private:
|
||||
QAction *goUAVAct;
|
||||
QAction *followUAVpositionAct;
|
||||
QAction *followUAVheadingAct;
|
||||
QAction *showUAVtrailAct;
|
||||
QAction *clearUAVtrailAct;
|
||||
QAction *wayPointEditorAct;
|
||||
QAction *addWayPointAct;
|
||||
QAction *editWayPointAct;
|
||||
@ -298,6 +297,14 @@ private:
|
||||
QActionGroup *safeAreaActGroup;
|
||||
QList<QAction *> safeAreaAct;
|
||||
|
||||
QActionGroup *uavTrailTypeActGroup;
|
||||
QList<QAction *> uavTrailTypeAct;
|
||||
QAction *clearUAVtrailAct;
|
||||
QActionGroup *uavTrailTimeActGroup;
|
||||
QList<QAction *> uavTrailTimeAct;
|
||||
QActionGroup *uavTrailDistanceActGroup;
|
||||
QList<QAction *> uavTrailDistanceAct;
|
||||
|
||||
QActionGroup *mapModeActGroup;
|
||||
QList<QAction *> mapModeAct;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user