QGCToolWidget.h 3.77 KB
Newer Older
1 2 3 4 5
#ifndef QGCTOOLWIDGET_H
#define QGCTOOLWIDGET_H

#include <QWidget>
#include <QAction>
lm's avatar
lm committed
6
#include <QMap>
7
#include <QVBoxLayout>
lm's avatar
lm committed
8
#include "QGCToolWidgetItem.h"
9 10 11

#include "UAS.h"

12 13 14
namespace Ui
{
class QGCToolWidget;
15 16 17 18 19 20 21
}

class QGCToolWidget : public QWidget
{
    Q_OBJECT

public:
22
    explicit QGCToolWidget(const QString& title=QString("Unnamed Tool"), QWidget *parent = 0, QSettings* settings = 0);
23 24
    ~QGCToolWidget();

lm's avatar
lm committed
25
    /** @brief Factory method to instantiate all tool widgets */
26
    static QList<QGCToolWidget*> createWidgetsFromSettings(QWidget* parent, QString settingsFile=QString());
lm's avatar
lm committed
27 28 29 30
    /** @Give the tool widget a reference to its action in the main menu */
    void setMainMenuAction(QAction* action);
    /** @brief All instances of this class */
    static QMap<QString, QGCToolWidget*>* instances();
31 32
    /** @brief Get title of widget */
    const QString getTitle();
lm's avatar
lm committed
33

34 35
    int isVisible(int view) { return viewVisible.value(view, false); }
    Qt::DockWidgetArea getDockWidgetArea(int view) { return dockWidgetArea.value(view, Qt::BottomDockWidgetArea); }
36
    void setParent(QWidget *parent);
37

38 39
public slots:
    void addUAS(UASInterface* uas);
lm's avatar
lm committed
40 41
    /** @brief Delete this widget */
    void deleteWidget();
42 43 44
    /** @brief Export this widget to a file */
    void exportWidget();
    /** @brief Import settings for this widget from a file */
45
    void importWidget();
lm's avatar
lm committed
46
    /** @brief Store all widgets of this type to QSettings */
47
    static void storeWidgetsToSettings(QString settingsFile=QString());
48
    void loadSettings(QVariantMap& settings);
49 50 51
    /** @brief Load this widget from a QSettings object */
    void loadSettings(QSettings& settings);
    /** @brief Load this widget from a settings file */
LM's avatar
LM committed
52
    bool loadSettings(const QString& settings, bool singleinstance=false);
53 54 55 56
    /** @brief Store this widget to a QSettings object */
    void storeSettings(QSettings& settings);
    /** @brief Store this widget to a settings file */
    void storeSettings(const QString& settingsFile);
57 58
    /** @brief Store this widget to a settings file */
    void storeSettings();
59 60
    /** @brief Store the view id and dock widget area */
    void setViewVisibilityAndDockWidgetArea(int view, bool visible, Qt::DockWidgetArea area);
61 62 63
    void setSettings(QVariantMap& settings);
    QList<QString> getParamList();
    void setParameterValue(int uas, int component, QString parameterName, const QVariant value);
64
    bool fromMetaData() { return isFromMetaData; }
65
    void showLabel(QString name,int num);
lm's avatar
lm committed
66 67
signals:
    void titleChanged(QString);
68 69

protected:
70
    bool isFromMetaData;
71
    QMap<QString,QGCToolWidgetItem*> paramToItemMap;
72
    QList<QGCToolWidgetItem*> toolItemList;
73 74
    QList<QString> paramList;
    QVariantMap settingsMap;
75
    QAction* addParamAction;
lm's avatar
lm committed
76
    QAction* addCommandAction;
77
    QAction* addLabelAction;
78
    QAction* setTitleAction;
lm's avatar
lm committed
79
    QAction* deleteAction;
80 81
    QAction* exportAction;
    QAction* importAction;
82 83
    QVBoxLayout* toolLayout;
    UAS* mav;
84 85 86
    QAction* mainMenuAction;             ///< Main menu action
    QMap<int, Qt::DockWidgetArea> dockWidgetArea;   ///< Dock widget area desired by this widget
    QMap<int, bool> viewVisible;  ///< Visibility in one view
87
    QString widgetTitle;
88
    static int instanceCount;     ///< Number of instances around
89 90 91

    void contextMenuEvent(QContextMenuEvent* event);
    void createActions();
lm's avatar
lm committed
92 93 94
    QList<QGCToolWidgetItem* >* itemList();
    /** @brief Add an existing tool widget */
    void addToolWidget(QGCToolWidgetItem* widget);
95

96
    void hideEvent(QHideEvent* event);
97
public slots:
98
    void setTitle(const QString &title);
99
    void addParam(int uas,int component,QString paramname,QVariant value);
100 101
protected slots:
    void addParam();
lm's avatar
lm committed
102
    void addCommand();
103
    void addLabel();
104
    void setTitle();
105

106 107 108 109 110
private:
    Ui::QGCToolWidget *ui;
};

#endif // QGCTOOLWIDGET_H