QGCToolbox.h 4.53 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
class FactSystem;
class FirmwarePluginManager;
18
class AudioOutput;
19
class GPSManager;
Don Gagne's avatar
Don Gagne committed
20
class JoystickManager;
Jimmy Johnson's avatar
Jimmy Johnson committed
21
class FollowMe;
22 23
class LinkManager;
class MAVLinkProtocol;
24
class MissionCommandTree;
25
class MultiVehicleManager;
dogmaphobic's avatar
dogmaphobic committed
26
class QGCMapEngineManager;
Don Gagne's avatar
Don Gagne committed
27
class QGCApplication;
dogmaphobic's avatar
dogmaphobic committed
28
class QGCImageProvider;
Don Gagne's avatar
Don Gagne committed
29
class UASMessageHandler;
Jimmy Johnson's avatar
Jimmy Johnson committed
30
class QGCPositionManager;
31
class VideoManager;
Gus Grubba's avatar
Gus Grubba committed
32
class MAVLinkLogManager;
33
class QGCCorePlugin;
34
class SettingsManager;
35
#if defined(QGC_AIRMAP_ENABLED)
36
class AirspaceManager;
37
#endif
38 39

/// This is used to manage all of our top level services/tools
40 41
class QGCToolbox : public QObject {
    Q_OBJECT
42 43 44 45

public:
    QGCToolbox(QGCApplication* app);

Don Gagne's avatar
Don Gagne committed
46
    FirmwarePluginManager*      firmwarePluginManager(void)     { return _firmwarePluginManager; }
47
    AudioOutput*                audioOutput(void)               { return _audioOutput; }
Don Gagne's avatar
Don Gagne committed
48
    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; }
Gus Grubba's avatar
Gus Grubba committed
59
    MAVLinkLogManager*          mavlinkLogManager(void)         { return _mavlinkLogManager; }
60
    QGCCorePlugin*              corePlugin(void)                { return _corePlugin; }
61
    SettingsManager*            settingsManager(void)           { return _settingsManager; }
62
#if defined(QGC_AIRMAP_ENABLED)
63
    AirspaceManager*            airspaceManager(void)           { return _airspaceManager; }
64
#endif
Don Gagne's avatar
Don Gagne committed
65 66 67
#ifndef __mobile__
    GPSManager*                 gpsManager(void)                { return _gpsManager; }
#endif
68 69

private:
70
    void setChildToolboxes(void);
71 72
    void _scanAndLoadPlugins(QGCApplication *app);

73

74
    AudioOutput*                _audioOutput;
Don Gagne's avatar
Don Gagne committed
75 76
    FactSystem*                 _factSystem;
    FirmwarePluginManager*      _firmwarePluginManager;
Don Gagne's avatar
Don Gagne committed
77
#ifndef __mobile__
78
    GPSManager*                 _gpsManager;
Don Gagne's avatar
Don Gagne committed
79
#endif
Don Gagne's avatar
Don Gagne committed
80
    QGCImageProvider*           _imageProvider;
dogmaphobic's avatar
dogmaphobic committed
81
    JoystickManager*            _joystickManager;
Don Gagne's avatar
Don Gagne committed
82 83
    LinkManager*                _linkManager;
    MAVLinkProtocol*            _mavlinkProtocol;
84
    MissionCommandTree*         _missionCommandTree;
Don Gagne's avatar
Don Gagne committed
85
    MultiVehicleManager*        _multiVehicleManager;
86
    QGCMapEngineManager*        _mapEngineManager;
dogmaphobic's avatar
dogmaphobic committed
87
    UASMessageHandler*          _uasMessageHandler;
Jimmy Johnson's avatar
Jimmy Johnson committed
88
    FollowMe*                   _followMe;
Jimmy Johnson's avatar
Jimmy Johnson committed
89
    QGCPositionManager*         _qgcPositionManager;
90
    VideoManager*               _videoManager;
Gus Grubba's avatar
Gus Grubba committed
91
    MAVLinkLogManager*          _mavlinkLogManager;
92
    QGCCorePlugin*              _corePlugin;
93
    SettingsManager*            _settingsManager;
94
#if defined(QGC_AIRMAP_ENABLED)
95
    AirspaceManager*            _airspaceManager;
96
#endif
97
    friend class QGCApplication;
98 99 100 101 102 103 104
};

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

public:
105 106 107 108
    // All tools must be parented to the QGCToolbox and go through a two phase creation. In the constructor the toolbox
    // should only be passed to QGCTool constructor for correct parenting. It should not be referenced or set in the
    // protected member. Then in the second phase of setToolbox calls is where you can reference the toolbox.
    QGCTool(QGCApplication* app, QGCToolbox* toolbox);
109

110
    // If you override this method, you must call the base class.
111 112 113 114 115 116 117 118
    virtual void setToolbox(QGCToolbox* toolbox);

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

#endif