QGCToolbox

4361 ワード

QGCTool

    QGCTool::QGCTool(QGCApplication *app,QGCToolbox *toolbox):QObject(toolbox),_app(app),_toolbox(NULL)

QGCToolboxヘッダファイル

    class FactSystem;
    ...
    class SettingsManager;
//         service/tools
    class QGCToolbox: public QObject{
        Q_OBJECT
    public:
        QGCToolbox(QGCApplication *app);
        FirmwarePluginManager * firmwarePluginManager(void)
    {
        return _firmwarePluginManager;
    }       
        GAudioOutput * audioOutput(void)
    {
        return _audioOutput;
    }       

...

private:
    void setChildToolboxes(void);
    void _scanAndLoadPlugins(QGCApplication *app);

    ...
    GAudioOutput * _audioOutput;
    ...

    SettingsManager * _settingsManager;

    friend  class QGCApplication;
};


QGCToolboxソースファイル

    QGCToolbox::QGCToolbox(QGCApplication *app)
    : _audioOutput(NULL)
    , _factSystem(NULL)
    , _firmwarePluginManager(NULL)
#ifndef __mobile__
    , _gpsManager(NULL)
#endif
    , _imageProvider(NULL)
    , _joystickManager(NULL)
    , _linkManagr(NULL)
    , _mavlinkProtocol(NULL)
    , _missionCommandtree(NULL)
    , _multiVehicleManager(NULL)
    , _mapEngineManager(NULL)
    , _uasMessageHandler(NULL)
    , _followMe(NULL)
    , _qgcPositionManager(NULL)
    , _videoManager(NULL)
    , _mavlinkLogManager(NULL)
    , _corePlugin(NULL)
    , _settingsManager(NULL)
{
    //settingsManager      ,            

    _settingsManager=new SettingsManager(app,this);

    //      

    _scanAndLoadPlugins(app);

    //       
    _audioOutput =new GAudioOutput(app,this);
}

QGCToolbox::setChildToolboxes(void)

    //SettingsManager         
    _settingsManager->setToolbox(this);
...

    _corePlugin->setToolbox(this);
...

    _mavlinkLogManager->setToolbox(this);


プラグインのロード

QGCToolbox::_scanAndLoadPlugins(QGCApplication* app){
#if defined(QGC_CUSTOM_BUILD)
    //        
    _corePlugin=(QGCCorePlugin *) new CUSTOMCLASS(app,app->toolbox());
    if(_corePlugin){
        retutn ;
    }
#endif
    _corePlugin=new QGCCorePlugin(app,app->toolbox());
}





}