QGroundControlQmlGlobal.h 7.69 KB
Newer Older
1
/*=====================================================================
Gus Grubba's avatar
Gus Grubba committed
2

3
 QGroundControl Open Source Ground Control Station
Gus Grubba's avatar
Gus Grubba committed
4

5
 (c) 2009 - 2014 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
Gus Grubba's avatar
Gus Grubba committed
6

7
 This file is part of the QGROUNDCONTROL project
Gus Grubba's avatar
Gus Grubba committed
8

9 10 11 12
 QGROUNDCONTROL is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.
Gus Grubba's avatar
Gus Grubba committed
13

14 15 16 17
 QGROUNDCONTROL is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
Gus Grubba's avatar
Gus Grubba committed
18

19 20
 You should have received a copy of the GNU General Public License
 along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
Gus Grubba's avatar
Gus Grubba committed
21

22 23 24 25 26 27 28 29 30 31
 ======================================================================*/

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

#ifndef QGroundControlQmlGlobal_H
#define QGroundControlQmlGlobal_H

#include <QObject>

dogmaphobic's avatar
dogmaphobic committed
32 33
#include "QGCApplication.h"
#include "MainWindow.h"
Don Gagne's avatar
Don Gagne committed
34
#include "LinkManager.h"
35
#include "HomePositionManager.h"
36
#include "FlightMapSettings.h"
37

38 39 40 41
#ifdef QT_DEBUG
#include "MockLink.h"
#endif

42 43
class QGCToolbox;

44 45 46 47 48
class QGroundControlQmlGlobal : public QObject
{
    Q_OBJECT

public:
49
    QGroundControlQmlGlobal(QGCToolbox* toolbox, QObject* parent = NULL);
Gus Grubba's avatar
Gus Grubba committed
50

Don Gagne's avatar
Don Gagne committed
51 52
    Q_PROPERTY(LinkManager*         linkManager         READ linkManager            CONSTANT)
    Q_PROPERTY(MultiVehicleManager* multiVehicleManager READ multiVehicleManager    CONSTANT)
53 54
    Q_PROPERTY(HomePositionManager* homePositionManager READ homePositionManager    CONSTANT)
    Q_PROPERTY(FlightMapSettings*   flightMapSettings   READ flightMapSettings      CONSTANT)
Gus Grubba's avatar
Gus Grubba committed
55 56 57 58 59

    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

60 61 62 63 64 65 66 67 68 69
    // Various QGC settings exposed to Qml
    Q_PROPERTY(bool     isAdvancedMode          READ isAdvancedMode                                                 CONSTANT)                               ///< Global "Advance Mode" preference. Certain UI elements and features are different based on this.
    Q_PROPERTY(bool     isDarkStyle             READ isDarkStyle                WRITE setIsDarkStyle                NOTIFY isDarkStyleChanged)              // TODO: Should be in ScreenTools?
    Q_PROPERTY(bool     isAudioMuted            READ isAudioMuted               WRITE setIsAudioMuted               NOTIFY isAudioMutedChanged)
    Q_PROPERTY(bool     isLowPowerMode          READ isLowPowerMode             WRITE setIsLowPowerMode             NOTIFY isLowPowerModeChanged)
    Q_PROPERTY(bool     isSaveLogPrompt         READ isSaveLogPrompt            WRITE setIsSaveLogPrompt            NOTIFY isSaveLogPromptChanged)
    Q_PROPERTY(bool     isSaveLogPromptNotArmed READ isSaveLogPromptNotArmed    WRITE setIsSaveLogPromptNotArmed    NOTIFY isSaveLogPromptNotArmedChanged)
    Q_PROPERTY(bool     isHeartBeatEnabled      READ isHeartBeatEnabled         WRITE setIsHeartBeatEnabled         NOTIFY isHeartBeatEnabledChanged)
    Q_PROPERTY(bool     isMultiplexingEnabled   READ isMultiplexingEnabled      WRITE setIsMultiplexingEnabled      NOTIFY isMultiplexingEnabledChanged)
    Q_PROPERTY(bool     isVersionCheckEnabled   READ isVersionCheckEnabled      WRITE setIsVersionCheckEnabled      NOTIFY isVersionCheckEnabledChanged)
70
    Q_PROPERTY(bool     virtualTabletJoystick   READ virtualTabletJoystick      WRITE setVirtualTabletJoystick      NOTIFY virtualTabletJoystickChanged)
dogmaphobic's avatar
dogmaphobic committed
71

72 73 74 75 76
    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);

77 78 79
    Q_INVOKABLE void    deleteAllSettingsNextBoot       () { qgcApp()->deleteAllSettingsNextBoot(); }
    Q_INVOKABLE void    clearDeleteAllSettingsNextBoot  () { qgcApp()->clearDeleteAllSettingsNextBoot(); }

80 81 82 83 84 85
    Q_INVOKABLE void    startPX4MockLink            (bool sendStatusText);
    Q_INVOKABLE void    startGenericMockLink        (bool sendStatusText);
    Q_INVOKABLE void    startAPMArduCopterMockLink  (bool sendStatusText);
    Q_INVOKABLE void    startAPMArduPlaneMockLink   (bool sendStatusText);
    Q_INVOKABLE void    stopAllMockLinks            (void);

86
    // Property accesors
Gus Grubba's avatar
Gus Grubba committed
87

Don Gagne's avatar
Don Gagne committed
88 89
    LinkManager*            linkManager ()              { return _linkManager; }
    MultiVehicleManager*    multiVehicleManager ()      { return _multiVehicleManager; }
Gus Grubba's avatar
Gus Grubba committed
90 91 92 93 94 95 96
    HomePositionManager*    homePositionManager ()      { return _homePositionManager; }
    FlightMapSettings*      flightMapSettings   ()      { return _flightMapSettings; }

    qreal                   zOrderTopMost       ()      { return 1000; }
    qreal                   zOrderWidgets       ()      { return 100; }
    qreal                   zOrderMapItems      ()      { return 50; }

97 98 99 100 101 102 103 104
    bool    isDarkStyle             () { return qgcApp()->styleIsDark(); }
    bool    isAudioMuted            () { return qgcApp()->toolbox()->audioOutput()->isMuted(); }
    bool    isLowPowerMode          () { return MainWindow::instance()->lowPowerModeEnabled(); }
    bool    isSaveLogPrompt         () { return qgcApp()->promptFlightDataSave(); }
    bool    isSaveLogPromptNotArmed () { return qgcApp()->promptFlightDataSaveNotArmed(); }
    bool    isHeartBeatEnabled      () { return qgcApp()->toolbox()->mavlinkProtocol()->heartbeatsEnabled(); }
    bool    isMultiplexingEnabled   () { return qgcApp()->toolbox()->mavlinkProtocol()->multiplexingEnabled(); }
    bool    isVersionCheckEnabled   () { return qgcApp()->toolbox()->mavlinkProtocol()->versionCheckEnabled(); }
105
    bool    virtualTabletJoystick   () { return _virtualTabletJoystick; }
dogmaphobic's avatar
dogmaphobic committed
106

dogmaphobic's avatar
dogmaphobic committed
107
    //-- TODO: Make this into an actual preference.
108
    bool    isAdvancedMode          () { return false; }
dogmaphobic's avatar
dogmaphobic committed
109

110 111 112 113 114 115 116 117
    void    setIsDarkStyle              (bool dark);
    void    setIsAudioMuted             (bool muted);
    void    setIsLowPowerMode           (bool low);
    void    setIsSaveLogPrompt          (bool prompt);
    void    setIsSaveLogPromptNotArmed  (bool prompt);
    void    setIsHeartBeatEnabled       (bool enable);
    void    setIsMultiplexingEnabled    (bool enable);
    void    setIsVersionCheckEnabled    (bool enable);
118
    void    setVirtualTabletJoystick    (bool enabled);
dogmaphobic's avatar
dogmaphobic committed
119 120 121 122 123 124

signals:
    void isDarkStyleChanged             (bool dark);
    void isAudioMutedChanged            (bool muted);
    void isLowPowerModeChanged          (bool lowPower);
    void isSaveLogPromptChanged         (bool prompt);
125
    void isSaveLogPromptNotArmedChanged (bool prompt);
dogmaphobic's avatar
dogmaphobic committed
126 127 128
    void isHeartBeatEnabledChanged      (bool enabled);
    void isMultiplexingEnabledChanged   (bool enabled);
    void isVersionCheckEnabledChanged   (bool enabled);
129
    void virtualTabletJoystickChanged   (bool enabled);
dogmaphobic's avatar
dogmaphobic committed
130

131
private:
132 133 134 135
#ifdef QT_DEBUG
    void _startMockLink(MockConfiguration* mockConfig);
#endif

Don Gagne's avatar
Don Gagne committed
136 137
    MultiVehicleManager*    _multiVehicleManager;
    LinkManager*            _linkManager;
138
    HomePositionManager*    _homePositionManager;
139
    FlightMapSettings*      _flightMapSettings;
140 141 142 143

    bool _virtualTabletJoystick;

    static const char*  _virtualTabletJoystickKey;
144 145 146
};

#endif