FactPanelController.h 2.56 KB
Newer Older
1
/*=====================================================================
dogmaphobic's avatar
dogmaphobic committed
2

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

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

7
 This file is part of the QGROUNDCONTROL project
dogmaphobic's avatar
dogmaphobic 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.
dogmaphobic's avatar
dogmaphobic 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.
dogmaphobic's avatar
dogmaphobic 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/>.
dogmaphobic's avatar
dogmaphobic committed
21

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

#ifndef FactPanelController_H
#define FactPanelController_H

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

#include <QObject>
#include <QQuickItem>

#include "UASInterface.h"
#include "AutoPilotPlugin.h"
Don Gagne's avatar
Don Gagne committed
35 36 37
#include "QGCLoggingCategory.h"

Q_DECLARE_LOGGING_CATEGORY(FactPanelControllerLog)
38 39 40 41 42

/// FactPanelController is used in combination with the FactPanel Qml control for handling
/// missing Facts from C++ code.
class FactPanelController : public QObject
{
dogmaphobic's avatar
dogmaphobic committed
43 44
    Q_OBJECT

45
public:
dogmaphobic's avatar
dogmaphobic committed
46 47
    FactPanelController(void);

48
    Q_PROPERTY(QQuickItem* factPanel READ factPanel WRITE setFactPanel)
dogmaphobic's avatar
dogmaphobic committed
49 50 51 52

    Q_INVOKABLE Fact*   getParameterFact    (int componentId, const QString& name, bool reportMissing = true);
    Q_INVOKABLE bool    parameterExists     (int componentId, const QString& name);

53 54
    QQuickItem* factPanel(void);
    void setFactPanel(QQuickItem* panel);
dogmaphobic's avatar
dogmaphobic committed
55

56
protected:
Don Gagne's avatar
Don Gagne committed
57 58 59
    /// Checks for existence of the specified parameters
    /// @return true: all parameters exists, false: parameters missing and reported
    bool _allParametersExists(int componentId, QStringList names);
dogmaphobic's avatar
dogmaphobic committed
60

Don Gagne's avatar
Don Gagne committed
61 62
    /// Report a missing parameter to the FactPanel Qml element
    void _reportMissingParameter(int componentId, const QString& name);
dogmaphobic's avatar
dogmaphobic committed
63

64 65 66
    Vehicle*            _vehicle;
    UASInterface*       _uas;
    AutoPilotPlugin*    _autopilot;
dogmaphobic's avatar
dogmaphobic committed
67

68 69
private slots:
    void _checkForMissingFactPanel(void);
dogmaphobic's avatar
dogmaphobic committed
70

71
private:
Don Gagne's avatar
Don Gagne committed
72 73 74
    void _notifyPanelMissingParameter(const QString& missingParam);
    void _notifyPanelErrorMsg(const QString& errorMsg);
    void _showInternalError(const QString& errorMsg);
75 76

    QQuickItem*         _factPanel;
Don Gagne's avatar
Don Gagne committed
77
    QStringList         _delayedMissingParams;
78 79
};

dogmaphobic's avatar
dogmaphobic committed
80
#endif