AirMapRestrictionManager.h 1.6 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11
/****************************************************************************
 *
 *   (c) 2017 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
 *
 * QGroundControl is licensed according to the terms in the file
 * COPYING.md in the root of the source code directory.
 *
 ****************************************************************************/

#pragma once

Gus Grubba's avatar
Gus Grubba committed
12
#include "LifetimeChecker.h"
13
#include "AirspaceRestrictionProvider.h"
Gus Grubba's avatar
Gus Grubba committed
14
#include "AirMapSharedState.h"
15
#include "QGCGeoBoundingCube.h"
16

Gus Grubba's avatar
Gus Grubba committed
17 18 19
#include <QList>
#include <QGeoCoordinate>

Gus Grubba's avatar
Gus Grubba committed
20
#include "airmap/geometry.h"
Gus Grubba's avatar
Gus Grubba committed
21

22 23 24 25 26 27 28 29 30
/**
 * @file AirMapRestrictionManager.h
 * Class to download polygons from AirMap
 */

class AirMapRestrictionManager : public AirspaceRestrictionProvider, public LifetimeChecker
{
    Q_OBJECT
public:
31 32 33
    AirMapRestrictionManager            (AirMapSharedState& shared);
    QmlObjectListModel* polygons        () override { return &_polygons; }
    QmlObjectListModel* circles         () override { return &_circles; }
34
    void                setROI          (const QGCGeoBoundingCube &roi) override;
35 36

signals:
37
    void error                          (const QString& what, const QString& airmapdMessage, const QString& airmapdDetails);
38 39

private:
40
    void            _requestRestrictions(const QGCGeoBoundingCube& roi);
41 42
    void            _addPolygonToList   (const airmap::Geometry::Polygon& polygon);

43 44 45 46
    enum class State {
        Idle,
        RetrieveItems,
    };
47 48

    AirMapSharedState&  _shared;
49
    QGCGeoBoundingCube  _lastROI;
50 51 52
    State               _state = State::Idle;
    QmlObjectListModel  _polygons;
    QmlObjectListModel  _circles;
53 54
};