Browse Source

Add actual, selected Ruleset IDs to Flight Manager (when uploading a flight)

QGC4.4
Gus Grubba 7 years ago
parent
commit
8990886685
  1. 28
      src/Airmap/AirMapFlightManager.cc
  2. 14
      src/Airmap/AirMapRulesetsManager.cc
  3. 4
      src/Airmap/AirMapRulesetsManager.h

28
src/Airmap/AirMapFlightManager.cc

@ -9,6 +9,8 @@ @@ -9,6 +9,8 @@
#include "AirMapFlightManager.h"
#include "AirMapManager.h"
#include "AirMapRulesetsManager.h"
#include "QGCApplication.h"
#include "MissionItem.h"
#include "QGCMAVLink.h"
@ -178,18 +180,20 @@ void AirMapFlightManager::_uploadFlight() @@ -178,18 +180,20 @@ void AirMapFlightManager::_uploadFlight()
FlightPlans::Create::Parameters params;
params.max_altitude = _flight.maxAltitude;
params.buffer = 2.f;
params.latitude = _flight.takeoffCoord.latitude();
params.longitude = _flight.takeoffCoord.longitude();
params.pilot.id = _pilotID.toStdString();
params.start_time = Clock::universal_time() + Minutes{5};
params.end_time = Clock::universal_time() + Hours{2}; // TODO: user-configurable?
params.rulesets = { // TODO: which ones to use?
"che_drone_rules",
"che_notam",
"che_airmap_rules",
"che_nature_preserve"
};
params.buffer = 2.f;
params.latitude = _flight.takeoffCoord.latitude();
params.longitude = _flight.takeoffCoord.longitude();
params.pilot.id = _pilotID.toStdString();
params.start_time = Clock::universal_time() + Minutes{5};
params.end_time = Clock::universal_time() + Hours{2}; // TODO: user-configurable?
//-- Rules
AirMapRulesetsManager* pRulesMgr = dynamic_cast<AirMapRulesetsManager*>(qgcApp()->toolbox()->airspaceManager()->rulesets());
if(pRulesMgr) {
foreach(QString ruleset, pRulesMgr->rulesetsIDs()) {
params.rulesets.push_back(ruleset.toStdString());
}
}
// geometry: LineString
Geometry::LineString lineString;

14
src/Airmap/AirMapRulesetsManager.cc

@ -143,3 +143,17 @@ AirMapRulesetsManager::_selectedChanged() @@ -143,3 +143,17 @@ AirMapRulesetsManager::_selectedChanged()
emit selectedRulesChanged();
//-- TODO: Do whatever it is you do to select a rule
}
//-----------------------------------------------------------------------------
QStringList
AirMapRulesetsManager::rulesetsIDs()
{
QStringList list;
for(int i = 0; i < _rules.count(); i++) {
AirMapRule* rule = qobject_cast<AirMapRule*>(_rules.get(i));
if(rule && rule->selected()) {
list << rule->id();
}
}
return list;
}

4
src/Airmap/AirMapRulesetsManager.h

@ -14,6 +14,7 @@ @@ -14,6 +14,7 @@
#include "AirMapSharedState.h"
#include <QGeoCoordinate>
#include <QStringList>
#include <airmap/rulesets.h>
@ -60,6 +61,9 @@ public: @@ -60,6 +61,9 @@ public:
void setROI (const QGeoCoordinate& center) override;
//-- Selected rules
QStringList rulesetsIDs ();
signals:
void error (const QString& what, const QString& airmapdMessage, const QString& airmapdDetails);

Loading…
Cancel
Save