|
|
@ -36,16 +36,11 @@ MissionEditor::MissionEditor(QWidget *parent) |
|
|
|
: QGCQmlWidgetHolder(parent) |
|
|
|
: QGCQmlWidgetHolder(parent) |
|
|
|
, _missionItems(NULL) |
|
|
|
, _missionItems(NULL) |
|
|
|
{ |
|
|
|
{ |
|
|
|
setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding); |
|
|
|
|
|
|
|
// Get rid of layout default margins
|
|
|
|
// Get rid of layout default margins
|
|
|
|
QLayout* pl = layout(); |
|
|
|
QLayout* pl = layout(); |
|
|
|
if(pl) { |
|
|
|
if(pl) { |
|
|
|
pl->setContentsMargins(0,0,0,0); |
|
|
|
pl->setContentsMargins(0,0,0,0); |
|
|
|
} |
|
|
|
} |
|
|
|
#ifndef __android__ |
|
|
|
|
|
|
|
setMinimumWidth( 31 * ScreenToolsController::defaultFontPixelSize_s()); |
|
|
|
|
|
|
|
setMinimumHeight(33 * ScreenToolsController::defaultFontPixelSize_s()); |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Vehicle* activeVehicle = MultiVehicleManager::instance()->activeVehicle(); |
|
|
|
Vehicle* activeVehicle = MultiVehicleManager::instance()->activeVehicle(); |
|
|
|
if (activeVehicle) { |
|
|
|
if (activeVehicle) { |
|
|
@ -72,6 +67,8 @@ void MissionEditor::_newMissionItemsAvailable(void) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
_missionItems = MultiVehicleManager::instance()->activeVehicle()->missionManager()->copyMissionItems(); |
|
|
|
_missionItems = MultiVehicleManager::instance()->activeVehicle()->missionManager()->copyMissionItems(); |
|
|
|
|
|
|
|
_reSequence(); |
|
|
|
|
|
|
|
|
|
|
|
emit missionItemsChanged(); |
|
|
|
emit missionItemsChanged(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -93,30 +90,63 @@ void MissionEditor::setMissionItems(void) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void MissionEditor::saveSetting(const QString &name, const QString& value) |
|
|
|
int MissionEditor::addMissionItem(QGeoCoordinate coordinate) |
|
|
|
{ |
|
|
|
{ |
|
|
|
QSettings settings; |
|
|
|
MissionItem * newItem = new MissionItem(this, _missionItems->count(), coordinate); |
|
|
|
|
|
|
|
if (_missionItems->count() == 0) { |
|
|
|
|
|
|
|
newItem->setCommand(MavlinkQmlSingleton::MAV_CMD_NAV_TAKEOFF); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
qDebug() << "MissionItem" << newItem->coordinate(); |
|
|
|
|
|
|
|
_missionItems->append(newItem); |
|
|
|
|
|
|
|
|
|
|
|
settings.beginGroup(_settingsGroup); |
|
|
|
return _missionItems->count() - 1; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
settings.setValue(name, value); |
|
|
|
void MissionEditor::_reSequence(void) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
for (int i=0; i<_missionItems->count(); i++) { |
|
|
|
|
|
|
|
qobject_cast<MissionItem*>(_missionItems->get(i))->setSequenceNumber(i); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
QString MissionEditor::loadSetting(const QString &name, const QString& defaultValue) |
|
|
|
void MissionEditor::removeMissionItem(int index) |
|
|
|
{ |
|
|
|
{ |
|
|
|
QSettings settings; |
|
|
|
_missionItems->removeAt(index); |
|
|
|
|
|
|
|
_reSequence(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
settings.beginGroup(_settingsGroup); |
|
|
|
void MissionEditor::moveUp(int index) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
if (_missionItems->count() < 2 || index <= 0 || index >= _missionItems->count()) { |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return settings.value(name, defaultValue).toString(); |
|
|
|
MissionItem item1 = *qobject_cast<MissionItem*>(_missionItems->get(index - 1)); |
|
|
|
|
|
|
|
MissionItem item2 = *qobject_cast<MissionItem*>(_missionItems->get(index)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_missionItems->removeAt(index - 1); |
|
|
|
|
|
|
|
_missionItems->removeAt(index - 1); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_missionItems->insert(index - 1, new MissionItem(item2, _missionItems)); |
|
|
|
|
|
|
|
_missionItems->insert(index, new MissionItem(item1, _missionItems)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_reSequence(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void MissionEditor::addMissionItem(QGeoCoordinate coordinate) |
|
|
|
void MissionEditor::moveDown(int index) |
|
|
|
{ |
|
|
|
{ |
|
|
|
MissionItem * newItem = new MissionItem(this, _missionItems->count(), coordinate); |
|
|
|
if (_missionItems->count() < 2 || index >= _missionItems->count() - 1) { |
|
|
|
if (_missionItems->count() == 0) { |
|
|
|
return; |
|
|
|
newItem->setCommand(MavlinkQmlSingleton::MAV_CMD_NAV_TAKEOFF); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
qDebug() << "MissionItem" << newItem->coordinate(); |
|
|
|
|
|
|
|
_missionItems->append(newItem); |
|
|
|
MissionItem item1 = *qobject_cast<MissionItem*>(_missionItems->get(index)); |
|
|
|
|
|
|
|
MissionItem item2 = *qobject_cast<MissionItem*>(_missionItems->get(index + 1)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_missionItems->removeAt(index); |
|
|
|
|
|
|
|
_missionItems->removeAt(index); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_missionItems->insert(index, new MissionItem(item2, _missionItems)); |
|
|
|
|
|
|
|
_missionItems->insert(index + 1, new MissionItem(item1, _missionItems)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_reSequence(); |
|
|
|
} |
|
|
|
} |
|
|
|