QGCToolWidget.h 2.42 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:
lm's avatar
lm committed
22
    explicit QGCToolWidget(const QString& title, QWidget *parent = 0);
23 24
    ~QGCToolWidget();

lm's avatar
lm committed
25 26 27 28 29 30 31
    /** @brief Factory method to instantiate all tool widgets */
    static QList<QGCToolWidget*> createWidgetsFromSettings(QWidget* parent);
    /** @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();

32 33 34
    int isVisible(int view) { return viewVisible.value(view, false); }
    Qt::DockWidgetArea getDockWidgetArea(int view) { return dockWidgetArea.value(view, Qt::BottomDockWidgetArea); }

35 36
public slots:
    void addUAS(UASInterface* uas);
lm's avatar
lm committed
37 38
    /** @brief Delete this widget */
    void deleteWidget();
39 40 41 42
    /** @brief Export this widget to a file */
    void exportWidget();
    /** @brief Import settings for this widget from a file */
    void importWidget(const QString& fileName);
lm's avatar
lm committed
43 44
    /** @brief Store all widgets of this type to QSettings */
    static void storeWidgetsToSettings();
45 46
    /** @brief Store the view id and dock widget area */
    void setViewVisibilityAndDockWidgetArea(int view, bool visible, Qt::DockWidgetArea area);
lm's avatar
lm committed
47 48 49

signals:
    void titleChanged(QString);
50 51 52 53

protected:
    QAction* addParamAction;
    QAction* addButtonAction;
lm's avatar
lm committed
54
    QAction* addCommandAction;
55
    QAction* setTitleAction;
lm's avatar
lm committed
56
    QAction* deleteAction;
57 58
    QAction* exportAction;
    QAction* importAction;
59 60
    QVBoxLayout* toolLayout;
    UAS* mav;
61 62 63
    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
64 65 66

    void contextMenuEvent(QContextMenuEvent* event);
    void createActions();
lm's avatar
lm committed
67 68 69 70
    QList<QGCToolWidgetItem* >* itemList();
    const QString getTitle();
    /** @brief Add an existing tool widget */
    void addToolWidget(QGCToolWidgetItem* widget);
71

72 73
    void hideEvent(QHideEvent* event);

74 75
protected slots:
    void addParam();
lm's avatar
lm committed
76
    /** @deprecated */
77
    void addAction();
lm's avatar
lm committed
78
    void addCommand();
79 80 81 82 83 84 85 86
    void setTitle();


private:
    Ui::QGCToolWidget *ui;
};

#endif // QGCTOOLWIDGET_H