QGCToolbox.h 3.98 KB
Newer Older
1 2 3 4 5 6 7 8
/****************************************************************************
 *
 *   (c) 2009-2016 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.
 *
 ****************************************************************************/
dogmaphobic's avatar
dogmaphobic committed
9

10 11 12 13 14 15

#ifndef QGCToolbox_h
#define QGCToolbox_h

#include <QObject>

Don Gagne's avatar
Don Gagne committed
16 17 18 19 20
class AutoPilotPluginManager;
class FactSystem;
class FirmwarePluginManager;
class FlightMapSettings;
class GAudioOutput;
21
class GPSManager;
Don Gagne's avatar
Don Gagne committed
22 23
class HomePositionManager;
class JoystickManager;
Jimmy Johnson's avatar
Jimmy Johnson committed
24
class FollowMe;
25 26
class LinkManager;
class MAVLinkProtocol;
27
class MissionCommandTree;
28
class MultiVehicleManager;
dogmaphobic's avatar
dogmaphobic committed
29
class QGCMapEngineManager;
Don Gagne's avatar
Don Gagne committed
30
class QGCApplication;
dogmaphobic's avatar
dogmaphobic committed
31
class QGCImageProvider;
Don Gagne's avatar
Don Gagne committed
32
class UASMessageHandler;
Jimmy Johnson's avatar
Jimmy Johnson committed
33
class QGCPositionManager;
34
class VideoManager;
35 36 37 38 39 40 41 42

/// This is used to manage all of our top level services/tools
class QGCToolbox {

public:
    QGCToolbox(QGCApplication* app);
    ~QGCToolbox();

Don Gagne's avatar
Don Gagne committed
43 44 45 46 47 48
    AutoPilotPluginManager*     autopilotPluginManager(void)    { return _autopilotPluginManager; }
    FirmwarePluginManager*      firmwarePluginManager(void)     { return _firmwarePluginManager; }
    FlightMapSettings*          flightMapSettings(void)         { return _flightMapSettings; }
    GAudioOutput*               audioOutput(void)               { return _audioOutput; }
    HomePositionManager*        homePositionManager(void)       { return _homePositionManager; }
    JoystickManager*            joystickManager(void)           { return _joystickManager; }
dogmaphobic's avatar
dogmaphobic committed
49 50
    LinkManager*                linkManager(void)               { return _linkManager; }
    MAVLinkProtocol*            mavlinkProtocol(void)           { return _mavlinkProtocol; }
51
    MissionCommandTree*         missionCommandTree(void)        { return _missionCommandTree; }
dogmaphobic's avatar
dogmaphobic committed
52
    MultiVehicleManager*        multiVehicleManager(void)       { return _multiVehicleManager; }
dogmaphobic's avatar
dogmaphobic committed
53
    QGCMapEngineManager*        mapEngineManager(void)          { return _mapEngineManager; }
dogmaphobic's avatar
dogmaphobic committed
54
    QGCImageProvider*           imageProvider()                 { return _imageProvider; }
Don Gagne's avatar
Don Gagne committed
55
    UASMessageHandler*          uasMessageHandler(void)         { return _uasMessageHandler; }
Jimmy Johnson's avatar
Jimmy Johnson committed
56
    FollowMe*                   followMe(void)                  { return _followMe; }
Jimmy Johnson's avatar
Jimmy Johnson committed
57
    QGCPositionManager*         qgcPositionManager(void)        { return _qgcPositionManager; }
58
    VideoManager*               videoManager(void)              { return _videoManager; }
Don Gagne's avatar
Don Gagne committed
59 60 61
#ifndef __mobile__
    GPSManager*                 gpsManager(void)                { return _gpsManager; }
#endif
62 63

private:
Don Gagne's avatar
Don Gagne committed
64
    GAudioOutput*               _audioOutput;
dogmaphobic's avatar
dogmaphobic committed
65
    AutoPilotPluginManager*     _autopilotPluginManager;
Don Gagne's avatar
Don Gagne committed
66 67
    FactSystem*                 _factSystem;
    FirmwarePluginManager*      _firmwarePluginManager;
dogmaphobic's avatar
dogmaphobic committed
68
    FlightMapSettings*          _flightMapSettings;
Don Gagne's avatar
Don Gagne committed
69
#ifndef __mobile__
70
    GPSManager*                 _gpsManager;
Don Gagne's avatar
Don Gagne committed
71
#endif
dogmaphobic's avatar
dogmaphobic committed
72
    HomePositionManager*        _homePositionManager;
Don Gagne's avatar
Don Gagne committed
73
    QGCImageProvider*           _imageProvider;
dogmaphobic's avatar
dogmaphobic committed
74
    JoystickManager*            _joystickManager;
Don Gagne's avatar
Don Gagne committed
75 76
    LinkManager*                _linkManager;
    MAVLinkProtocol*            _mavlinkProtocol;
77
    MissionCommandTree*         _missionCommandTree;
Don Gagne's avatar
Don Gagne committed
78
    MultiVehicleManager*        _multiVehicleManager;
dogmaphobic's avatar
dogmaphobic committed
79
    QGCMapEngineManager*         _mapEngineManager;
dogmaphobic's avatar
dogmaphobic committed
80
    UASMessageHandler*          _uasMessageHandler;
Jimmy Johnson's avatar
Jimmy Johnson committed
81
    FollowMe*                   _followMe;
Jimmy Johnson's avatar
Jimmy Johnson committed
82
    QGCPositionManager*         _qgcPositionManager;
83
    VideoManager*               _videoManager;
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
};

/// This is the base class for all tools
class QGCTool : public QObject {
    Q_OBJECT

public:
    // All tools are parented to QGCAppliation and go through a two phase creation. First all tools are newed,
    // and then setToolbox is called on all tools. The prevents creating an circular dependencies at constructor
    // time.
    QGCTool(QGCApplication* app);

    virtual void setToolbox(QGCToolbox* toolbox);

protected:
    QGCApplication* _app;
    QGCToolbox*     _toolbox;
};

#endif