Skip to content
QGCToolWidget.h 4.24 KiB
Newer Older
#ifndef QGCTOOLWIDGET_H
#define QGCTOOLWIDGET_H

#include <QWidget>
#include <QAction>
lm's avatar
lm committed
#include <QMap>
lm's avatar
lm committed
#include "QGCToolWidgetItem.h"
namespace Ui
{
class QGCToolWidget;
    explicit QGCToolWidget(const QString& objectName, const QString& title, QWidget *parent = 0, QSettings* settings = 0);
lm's avatar
lm committed
    /** @brief Factory method to instantiate all tool widgets */
    static QList<QGCToolWidget*> createWidgetsFromSettings(QWidget* parent, QString settingsFile=QString());
lm's avatar
lm committed
    /** @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();
    /** @brief Get title of widget */
    QString getTitle() const;
lm's avatar
lm committed

    int isVisible(int view) const { return viewVisible.value(view, false); }
    Qt::DockWidgetArea getDockWidgetArea(int view) { return dockWidgetArea.value(view, Qt::BottomDockWidgetArea); }
    void setParent(QWidget *parent);
    /** @brief Store all widgets of this type to QSettings */
    static void storeWidgetsToSettings(QSettings &settingsFile);

public slots:
    void addUAS(UASInterface* uas);
lm's avatar
lm committed
    /** @brief Delete this widget */
    void deleteWidget();
    /** @brief Export this widget to a file */
    void exportWidget();
    /** @brief Import settings for this widget from a file */
    void importWidget();
lm's avatar
lm committed
    /** @brief Store all widgets of this type to QSettings */
    void storeWidgetsToSettings() { QSettings settings; QGCToolWidget::storeWidgetsToSettings(settings); }

public:
    void loadSettings(QVariantMap& settings);
    /** @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
    bool loadSettings(const QString& settings, bool singleinstance=false);
    /** @brief Store the view id and dock widget area */
    void setViewVisibilityAndDockWidgetArea(int view, bool visible, Qt::DockWidgetArea area);
    void setSettings(QVariantMap& settings);
    QList<QString> getParamList();
    void setParameterValue(int uas, int component, QString parameterName, const QVariant value);
    bool fromMetaData() const { return isFromMetaData; }
lm's avatar
lm committed
signals:
    void titleChanged(const QString &title);
    QMap<QString,QGCToolWidgetItem*> paramToItemMap;
    QList<QGCToolWidgetItem*> toolItemList;
    QList<QString> paramList;
    QVariantMap settingsMap;
lm's avatar
lm committed
    QAction* addCommandAction;
John Tapsell's avatar
John Tapsell committed
    QAction* addPlotAction;
    QAction* addLabelAction;
lm's avatar
lm committed
    QAction* deleteAction;
    QAction* exportAction;
    QAction* importAction;
    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

    void contextMenuEvent(QContextMenuEvent* event);
    void createActions();
lm's avatar
lm committed
    /** @brief Add an existing tool widget */
    void addToolWidget(QGCToolWidgetItem* widget);
John Tapsell's avatar
John Tapsell committed
    /** @brief Add an existing tool widget and set it to edit mode */
    void addToolWidgetAndEdit(QGCToolWidgetItem* widget);
    void hideEvent(QHideEvent* event);
    void setTitle(const QString &title);
    void addParam(int uas,int component,QString paramname,QVariant value);
lm's avatar
lm committed
    void addCommand();
John Tapsell's avatar
John Tapsell committed
    void addPlot();
    void addLabel();
    void widgetRemoved();
    /** Do not use this from outside the class to set the object name,
     * because we cannot track changes to the object name, and the
     * QObject::setObjectName() function is not virtual. Instead only
     * pass in the object name to the constructor, or use the , then
     * never change it again. */
    void setObjectName(const QString &name) { QWidget::setObjectName(name); }
    /** Helper for storeWidgetsToSettings() */
    void storeSettings(QSettings& settings);