QGroundControlQmlGlobal.h 10.1 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.
 *
 ****************************************************************************/
Gus Grubba's avatar
Gus Grubba committed
9

10 11 12 13 14 15 16

/// @file
///     @author Don Gagne <don@thegagnes.com>

#ifndef QGroundControlQmlGlobal_H
#define QGroundControlQmlGlobal_H

17
#include "QGCToolbox.h"
dogmaphobic's avatar
dogmaphobic committed
18
#include "QGCApplication.h"
Don Gagne's avatar
Don Gagne committed
19
#include "LinkManager.h"
20
#include "SettingsFact.h"
21
#include "FactMetaData.h"
Jimmy Johnson's avatar
Jimmy Johnson committed
22
#include "SimulatedPosition.h"
23
#include "QGCLoggingCategory.h"
24

25 26 27 28
#ifdef QT_DEBUG
#include "MockLink.h"
#endif

29 30
class QGCToolbox;

31
class QGroundControlQmlGlobal : public QGCTool
32 33 34 35
{
    Q_OBJECT

public:
36 37 38
    QGroundControlQmlGlobal(QGCApplication* app);
    ~QGroundControlQmlGlobal();

39 40
    Q_PROPERTY(QString              appName             READ appName                CONSTANT)

Don Gagne's avatar
Don Gagne committed
41 42
    Q_PROPERTY(LinkManager*         linkManager         READ linkManager            CONSTANT)
    Q_PROPERTY(MultiVehicleManager* multiVehicleManager READ multiVehicleManager    CONSTANT)
Don Gagne's avatar
Don Gagne committed
43
    Q_PROPERTY(QGCMapEngineManager* mapEngineManager    READ mapEngineManager       CONSTANT)
Jimmy Johnson's avatar
Jimmy Johnson committed
44
    Q_PROPERTY(QGCPositionManager*  qgcPositionManger   READ qgcPositionManger      CONSTANT)
45
    Q_PROPERTY(MissionCommandTree*  missionCommandTree  READ missionCommandTree     CONSTANT)
46
    Q_PROPERTY(VideoManager*        videoManager        READ videoManager           CONSTANT)
Gus Grubba's avatar
Gus Grubba committed
47
    Q_PROPERTY(MAVLinkLogManager*   mavlinkLogManager   READ mavlinkLogManager      CONSTANT)
48
    Q_PROPERTY(QGCCorePlugin*       corePlugin          READ corePlugin             CONSTANT)
49 50
    Q_PROPERTY(SettingsManager*     settingsManager     READ settingsManager        CONSTANT)

51
    Q_PROPERTY(int      supportedFirmwareCount          READ supportedFirmwareCount CONSTANT)
Gus Grubba's avatar
Gus Grubba committed
52 53 54 55 56

    Q_PROPERTY(qreal                zOrderTopMost       READ zOrderTopMost          CONSTANT) ///< z order for top most items, toolbar, main window sub view
    Q_PROPERTY(qreal                zOrderWidgets       READ zOrderWidgets          CONSTANT) ///< z order value to widgets, for example: zoom controls, hud widgetss
    Q_PROPERTY(qreal                zOrderMapItems      READ zOrderMapItems         CONSTANT) ///< z order value for map items, for example: mission item indicators

Gus Grubba's avatar
Gus Grubba committed
57
    //-------------------------------------------------------------------------
58
    // MavLink Protocol
Don Gagne's avatar
Don Gagne committed
59
    Q_PROPERTY(bool     isVersionCheckEnabled   READ isVersionCheckEnabled      WRITE setIsVersionCheckEnabled      NOTIFY isVersionCheckEnabledChanged)
60
    Q_PROPERTY(int      mavlinkSystemID         READ mavlinkSystemID            WRITE setMavlinkSystemID            NOTIFY mavlinkSystemIDChanged)
dogmaphobic's avatar
dogmaphobic committed
61

62 63
    Q_PROPERTY(QGeoCoordinate flightMapPosition     READ flightMapPosition      WRITE setFlightMapPosition          NOTIFY flightMapPositionChanged)
    Q_PROPERTY(double         flightMapZoom         READ flightMapZoom          WRITE setFlightMapZoom              NOTIFY flightMapZoomChanged)
Don Gagne's avatar
Don Gagne committed
64

Don Gagne's avatar
Don Gagne committed
65 66 67 68
    Q_PROPERTY(QString  parameterFileExtension  READ parameterFileExtension CONSTANT)
    Q_PROPERTY(QString  missionFileExtension    READ missionFileExtension   CONSTANT)
    Q_PROPERTY(QString  telemetryFileExtension  READ telemetryFileExtension CONSTANT)

69 70
    /// Returns the string for distance units which has configued by user
    Q_PROPERTY(QString appSettingsDistanceUnitsString READ appSettingsDistanceUnitsString CONSTANT)
71
    Q_PROPERTY(QString appSettingsAreaUnitsString READ appSettingsAreaUnitsString CONSTANT)
72

73 74
    Q_PROPERTY(QString qgcVersion       READ qgcVersion         CONSTANT)
    Q_PROPERTY(bool    skipSetupPage    READ skipSetupPage      WRITE setSkipSetupPage NOTIFY skipSetupPageChanged)
75

76 77 78 79 80
    Q_INVOKABLE void    saveGlobalSetting       (const QString& key, const QString& value);
    Q_INVOKABLE QString loadGlobalSetting       (const QString& key, const QString& defaultValue);
    Q_INVOKABLE void    saveBoolGlobalSetting   (const QString& key, bool value);
    Q_INVOKABLE bool    loadBoolGlobalSetting   (const QString& key, bool defaultValue);

81 82
    Q_INVOKABLE void    deleteAllSettingsNextBoot       () { _app->deleteAllSettingsNextBoot(); }
    Q_INVOKABLE void    clearDeleteAllSettingsNextBoot  () { _app->clearDeleteAllSettingsNextBoot(); }
83

84 85 86 87
    Q_INVOKABLE void    startPX4MockLink            (bool sendStatusText);
    Q_INVOKABLE void    startGenericMockLink        (bool sendStatusText);
    Q_INVOKABLE void    startAPMArduCopterMockLink  (bool sendStatusText);
    Q_INVOKABLE void    startAPMArduPlaneMockLink   (bool sendStatusText);
88
    Q_INVOKABLE void    startAPMArduSubMockLink     (bool sendStatusText);
89 90
    Q_INVOKABLE void    stopAllMockLinks            (void);

91 92 93 94 95 96 97 98
    /// Converts from meters to the user specified distance unit
    Q_INVOKABLE QVariant metersToAppSettingsDistanceUnits(const QVariant& meters) const { return FactMetaData::metersToAppSettingsDistanceUnits(meters); }

    /// Converts from user specified distance unit to meters
    Q_INVOKABLE QVariant appSettingsDistanceUnitsToMeters(const QVariant& distance) const { return FactMetaData::appSettingsDistanceUnitsToMeters(distance); }

    QString appSettingsDistanceUnitsString(void) const { return FactMetaData::appSettingsDistanceUnitsString(); }

99 100 101 102 103 104 105 106
    /// Converts from square meters to the user specified area unit
    Q_INVOKABLE QVariant squareMetersToAppSettingsAreaUnits(const QVariant& meters) const { return FactMetaData::squareMetersToAppSettingsAreaUnits(meters); }

    /// Converts from user specified area unit to square meters
    Q_INVOKABLE QVariant appSettingsAreaUnitsToSquareMeters(const QVariant& area) const { return FactMetaData::appSettingsAreaUnitsToSquareMeters(area); }

    QString appSettingsAreaUnitsString(void) const { return FactMetaData::appSettingsAreaUnitsString(); }

107 108 109 110
    /// Returns the list of available logging category names.
    Q_INVOKABLE QStringList loggingCategories(void) const { return QGCLoggingCategoryRegister::instance()->registeredCategories(); }

    /// Turns on/off logging for the specified category. State is saved in app settings.
Don Gagne's avatar
Don Gagne committed
111
    Q_INVOKABLE void setCategoryLoggingOn(const QString& category, bool enable) { QGCLoggingCategoryRegister::instance()->setCategoryLoggingOn(category, enable); }
112 113

    /// Returns true if logging is turned on for the specified category.
Don Gagne's avatar
Don Gagne committed
114
    Q_INVOKABLE bool categoryLoggingOn(const QString& category) { return QGCLoggingCategoryRegister::instance()->categoryLoggingOn(category); }
115 116 117 118

    /// Updates the logging filter rules after settings have changed
    Q_INVOKABLE void updateLoggingFilterRules(void) { QGCLoggingCategoryRegister::instance()->setFilterRulesFromSettings(QString()); }

119 120
    Q_INVOKABLE bool linesIntersect(QPointF xLine1, QPointF yLine1, QPointF xLine2, QPointF yLine2);

121 122
    Q_INVOKABLE QString urlToLocalFile(QUrl url) { return url.toLocalFile(); }

123
    // Property accesors
Gus Grubba's avatar
Gus Grubba committed
124

125
    QString                 appName             ()  { return qgcApp()->applicationName(); }
126 127 128 129 130 131 132 133 134
    LinkManager*            linkManager         ()  { return _linkManager; }
    MultiVehicleManager*    multiVehicleManager ()  { return _multiVehicleManager; }
    QGCMapEngineManager*    mapEngineManager    ()  { return _mapEngineManager; }
    QGCPositionManager*     qgcPositionManger   ()  { return _qgcPositionManager; }
    MissionCommandTree*     missionCommandTree  ()  { return _missionCommandTree; }
    VideoManager*           videoManager        ()  { return _videoManager; }
    MAVLinkLogManager*      mavlinkLogManager   ()  { return _mavlinkLogManager; }
    QGCCorePlugin*          corePlugin          ()  { return _corePlugin; }
    SettingsManager*        settingsManager     ()  { return _settingsManager; }
135 136
    static QGeoCoordinate   flightMapPosition   ();
    static double           flightMapZoom       ();
137 138 139 140

    qreal                   zOrderTopMost       ()  { return 1000; }
    qreal                   zOrderWidgets       ()  { return 100; }
    qreal                   zOrderMapItems      ()  { return 50; }
Gus Grubba's avatar
Gus Grubba committed
141

Don Gagne's avatar
Don Gagne committed
142
    bool    isVersionCheckEnabled   () { return _toolbox->mavlinkProtocol()->versionCheckEnabled(); }
143 144
    int     mavlinkSystemID         () { return _toolbox->mavlinkProtocol()->getSystemId(); }

145 146 147
    int     supportedFirmwareCount  ();
    bool    skipSetupPage           () { return _skipSetupPage; }
    void    setSkipSetupPage        (bool skip);
Gus Grubba's avatar
Gus Grubba committed
148

Don Gagne's avatar
Don Gagne committed
149
    void    setIsVersionCheckEnabled    (bool enable);
150
    void    setMavlinkSystemID          (int  id);
151 152
    void    setFlightMapPosition        (QGeoCoordinate& coordinate);
    void    setFlightMapZoom            (double zoom);
dogmaphobic's avatar
dogmaphobic committed
153

Don Gagne's avatar
Don Gagne committed
154 155 156 157
    QString parameterFileExtension(void) const  { return QGCApplication::parameterFileExtension; }
    QString missionFileExtension(void) const    { return QGCApplication::missionFileExtension; }
    QString telemetryFileExtension(void) const  { return QGCApplication::telemetryFileExtension; }

158 159
    QString qgcVersion(void) const { return qgcApp()->applicationVersion(); }

160

161 162 163
    // Overrides from QGCTool
    virtual void setToolbox(QGCToolbox* toolbox);

dogmaphobic's avatar
dogmaphobic committed
164 165
signals:
    void isMultiplexingEnabledChanged   (bool enabled);
Don Gagne's avatar
Don Gagne committed
166
    void isVersionCheckEnabledChanged   (bool enabled);
167
    void mavlinkSystemIDChanged         (int id);
168
    void flightMapPositionChanged       (QGeoCoordinate flightMapPosition);
169
    void flightMapZoomChanged           (double flightMapZoom);
170
    void skipSetupPageChanged           ();
dogmaphobic's avatar
dogmaphobic committed
171

172
private:
Don Gagne's avatar
Don Gagne committed
173 174
    LinkManager*            _linkManager;
    MultiVehicleManager*    _multiVehicleManager;
175
    QGCMapEngineManager*    _mapEngineManager;
Jimmy Johnson's avatar
Jimmy Johnson committed
176
    QGCPositionManager*     _qgcPositionManager;
177
    MissionCommandTree*     _missionCommandTree;
178
    VideoManager*           _videoManager;
Gus Grubba's avatar
Gus Grubba committed
179
    MAVLinkLogManager*      _mavlinkLogManager;
180
    QGCCorePlugin*          _corePlugin;
Gus Grubba's avatar
Gus Grubba committed
181
    FirmwarePluginManager*  _firmwarePluginManager;
182
    SettingsManager*        _settingsManager;
183

184
    bool                    _skipSetupPage;
185 186 187 188 189

    static const char* _flightMapPositionSettingsGroup;
    static const char* _flightMapPositionLatitudeSettingsKey;
    static const char* _flightMapPositionLongitudeSettingsKey;
    static const char* _flightMapZoomSettingsKey;
190 191 192
};

#endif