diff --git a/src/ui/designer/QGCComboBox.cc b/src/ui/designer/QGCComboBox.cc index c5ae6a4..1b8345b 100644 --- a/src/ui/designer/QGCComboBox.cc +++ b/src/ui/designer/QGCComboBox.cc @@ -167,70 +167,42 @@ void QGCComboBox::selectParameter(int paramIndex) } } -void QGCComboBox::startEditMode() +void QGCComboBox::setEditMode(bool editMode) { - ui->nameLabel->hide(); - ui->writeButton->hide(); - ui->readButton->hide(); - - ui->editInfoCheckBox->show(); - ui->editDoneButton->show(); - ui->editNameLabel->show(); - ui->editRefreshParamsButton->show(); - ui->editSelectParamComboBox->show(); - ui->editSelectComponentComboBox->show(); - ui->editStatusLabel->show(); - ui->writeButton->hide(); - ui->readButton->hide(); - ui->editLine1->show(); - ui->editLine2->show(); - ui->editAddItemButton->show(); - ui->editRemoveItemButton->show(); - ui->editItemValueSpinBox->show(); - ui->editItemNameLabel->show(); - ui->itemValueLabel->show(); - ui->itemNameLabel->show(); - if (isDisabled) - { - ui->editOptionComboBox->setEnabled(true); + if(!editMode) { + // Store component id + selectComponent(ui->editSelectComponentComboBox->currentIndex()); + // Store parameter name and id + selectParameter(ui->editSelectParamComboBox->currentIndex()); } - isInEditMode = true; -} - -void QGCComboBox::endEditMode() -{ - // Store component id - selectComponent(ui->editSelectComponentComboBox->currentIndex()); - // Store parameter name and id - selectParameter(ui->editSelectParamComboBox->currentIndex()); - - // Min/max - - ui->editInfoCheckBox->hide(); - ui->editDoneButton->hide(); - ui->editNameLabel->hide(); - ui->editRefreshParamsButton->hide(); - ui->editSelectParamComboBox->hide(); - ui->editSelectComponentComboBox->hide(); - ui->editStatusLabel->hide(); - ui->editLine1->hide(); - ui->editLine2->hide(); - ui->writeButton->show(); - ui->readButton->show(); - ui->editAddItemButton->hide(); - ui->editRemoveItemButton->hide(); - ui->editItemValueSpinBox->hide(); - ui->editItemNameLabel->hide(); - ui->itemValueLabel->hide(); - ui->itemNameLabel->hide(); - ui->nameLabel->show(); + ui->nameLabel->setVisible(!editMode); + ui->writeButton->setVisible(!editMode); + ui->readButton->setVisible(!editMode); + + ui->editInfoCheckBox->setVisible(editMode); + ui->editDoneButton->setVisible(editMode); + ui->editNameLabel->setVisible(editMode); + ui->editRefreshParamsButton->setVisible(editMode); + ui->editSelectParamComboBox->setVisible(editMode); + ui->editSelectComponentComboBox->setVisible(editMode); + ui->editStatusLabel->setVisible(editMode); + ui->writeButton->setVisible(!editMode); + ui->readButton->setVisible(!editMode); + ui->editLine1->setVisible(editMode); + ui->editLine2->setVisible(editMode); + ui->editAddItemButton->setVisible(editMode); + ui->editRemoveItemButton->setVisible(editMode); + ui->editItemValueSpinBox->setVisible(editMode); + ui->editItemNameLabel->setVisible(editMode); + ui->itemValueLabel->setVisible(editMode); + ui->itemNameLabel->setVisible(editMode); if (isDisabled) { - ui->editOptionComboBox->setEnabled(false); + ui->editOptionComboBox->setEnabled(editMode); } - isInEditMode = false; - emit editingFinished(); + + QGCToolWidgetItem::setEditMode(editMode); } void QGCComboBox::setParamPending() diff --git a/src/ui/designer/QGCComboBox.h b/src/ui/designer/QGCComboBox.h index 9b4b9c6..c81a636 100644 --- a/src/ui/designer/QGCComboBox.h +++ b/src/ui/designer/QGCComboBox.h @@ -22,9 +22,9 @@ public: explicit QGCComboBox(QWidget *parent = 0); ~QGCComboBox(); + virtual void setEditMode(bool editMode) override; + public slots: - void startEditMode(); - void endEditMode(); /** @brief Queue parameter for sending to the MAV (add to pending list)*/ void setParamPending(); /** @brief Update the UI with the new parameter value */ diff --git a/src/ui/designer/QGCCommandButton.cc b/src/ui/designer/QGCCommandButton.cc index 24bdc7d..69efc00 100644 --- a/src/ui/designer/QGCCommandButton.cc +++ b/src/ui/designer/QGCCommandButton.cc @@ -159,93 +159,33 @@ void QGCCommandButton::setCommandButtonName(QString text) ui->commandButton->setText(text); } -void QGCCommandButton::startEditMode() +void QGCCommandButton::setEditMode(bool editMode) { // Hide elements - ui->commandButton->hide(); - ui->nameLabel->hide(); - - ui->editCommandComboBox->blockSignals(false); - ui->editCommandComboBox->show(); - ui->editFinishButton->show(); - ui->editNameLabel->show(); - ui->editButtonName->show(); - ui->editConfirmationCheckBox->show(); - ui->editComponentSpinBox->show(); - ui->editParamsVisibleCheckBox->show(); - ui->editParam1SpinBox->show(); - ui->editParam2SpinBox->show(); - ui->editParam3SpinBox->show(); - ui->editParam4SpinBox->show(); - ui->editParam5SpinBox->show(); - ui->editParam6SpinBox->show(); - ui->editParam7SpinBox->show(); - ui->editLine1->show(); - ui->editLine2->show(); - - // Attempt to undock the dock widget - QWidget* p = this; - QDockWidget* dock; - - do { - p = p->parentWidget(); - dock = dynamic_cast(p); - - if (dock) - { - dock->setFloating(true); - break; - } - } while (p && !dock); - - isInEditMode = true; -} - -void QGCCommandButton::endEditMode() -{ - ui->editCommandComboBox->blockSignals(true); - ui->editCommandComboBox->hide(); - ui->editFinishButton->hide(); - ui->editNameLabel->hide(); - ui->editButtonName->hide(); - ui->editConfirmationCheckBox->hide(); - ui->editComponentSpinBox->hide(); - ui->editParamsVisibleCheckBox->hide(); - ui->editLine1->hide(); - ui->editLine2->hide(); - if (!ui->editParamsVisibleCheckBox->isChecked()) - { - ui->editParam1SpinBox->hide(); - ui->editParam2SpinBox->hide(); - ui->editParam3SpinBox->hide(); - ui->editParam4SpinBox->hide(); - ui->editParam5SpinBox->hide(); - ui->editParam6SpinBox->hide(); - ui->editParam7SpinBox->hide(); - } - - ui->commandButton->show(); - ui->nameLabel->show(); - - // Write to settings - emit editingFinished(); - - // Attempt to dock the dock widget - QWidget* p = this; - QDockWidget* dock; - - do { - p = p->parentWidget(); - dock = dynamic_cast(p); - - if (dock) - { - dock->setFloating(false); - break; - } - } while (p && !dock); - - isInEditMode = false; + ui->commandButton->setVisible(!editMode); + ui->nameLabel->setVisible(!editMode); + + ui->editCommandComboBox->blockSignals(!editMode); + ui->editCommandComboBox->setVisible(editMode); + ui->editFinishButton->setVisible(editMode); + ui->editNameLabel->setVisible(editMode); + ui->editButtonName->setVisible(editMode); + ui->editConfirmationCheckBox->setVisible(editMode); + ui->editComponentSpinBox->setVisible(editMode); + ui->editParamsVisibleCheckBox->setVisible(editMode); + bool showParams = editMode || ui->editParamsVisibleCheckBox->isChecked(); + ui->editParam1SpinBox->setVisible(showParams); + ui->editParam2SpinBox->setVisible(showParams); + ui->editParam3SpinBox->setVisible(showParams); + ui->editParam4SpinBox->setVisible(showParams); + ui->editParam5SpinBox->setVisible(showParams); + ui->editParam6SpinBox->setVisible(showParams); + ui->editParam7SpinBox->setVisible(showParams); + + ui->editLine1->setVisible(editMode); + ui->editLine2->setVisible(editMode); + + QGCToolWidgetItem::setEditMode(editMode); } void QGCCommandButton::writeSettings(QSettings& settings) diff --git a/src/ui/designer/QGCCommandButton.h b/src/ui/designer/QGCCommandButton.h index 320cc97..a1c858a 100644 --- a/src/ui/designer/QGCCommandButton.h +++ b/src/ui/designer/QGCCommandButton.h @@ -18,11 +18,11 @@ public: explicit QGCCommandButton(QWidget *parent = 0); ~QGCCommandButton(); + virtual void setEditMode(bool editMode) override; + public slots: void sendCommand(); void setCommandButtonName(QString text); - void startEditMode(); - void endEditMode(); void writeSettings(QSettings& settings); void readSettings(const QSettings& settings); void readSettings(const QString& pre,const QVariantMap& settings); diff --git a/src/ui/designer/QGCParamSlider.cc b/src/ui/designer/QGCParamSlider.cc index 6331ac7..c5f2da5 100644 --- a/src/ui/designer/QGCParamSlider.cc +++ b/src/ui/designer/QGCParamSlider.cc @@ -207,74 +207,57 @@ void QGCParamSlider::selectParameter(int paramIndex) } } -void QGCParamSlider::startEditMode() +void QGCParamSlider::setEditMode(bool editMode) { - ui->valueSlider->hide(); - ui->doubleValueSpinBox->hide(); - ui->intValueSpinBox->hide(); - ui->nameLabel->hide(); - ui->writeButton->hide(); - ui->readButton->hide(); - - ui->editInfoCheckBox->show(); - ui->editDoneButton->show(); - ui->editNameLabel->show(); - ui->editRefreshParamsButton->show(); - ui->editSelectParamComboBox->show(); - ui->editSelectComponentComboBox->show(); - ui->editStatusLabel->show(); - ui->editMinSpinBox->show(); - ui->editMaxSpinBox->show(); - ui->writeButton->hide(); - ui->readButton->hide(); - ui->editLine1->show(); - ui->editLine2->show(); - isInEditMode = true; -} + if(!editMode) { + // Store component id + selectComponent(ui->editSelectComponentComboBox->currentIndex()); -void QGCParamSlider::endEditMode() -{ - // Store component id - selectComponent(ui->editSelectComponentComboBox->currentIndex()); + // Store parameter name and id + selectParameter(ui->editSelectParamComboBox->currentIndex()); - // Store parameter name and id - selectParameter(ui->editSelectParamComboBox->currentIndex()); - - // Min/max - parameterMin = ui->editMinSpinBox->value(); - parameterMax = ui->editMaxSpinBox->value(); + // Min/max + parameterMin = ui->editMinSpinBox->value(); + parameterMax = ui->editMaxSpinBox->value(); - ui->editInfoCheckBox->hide(); - ui->editDoneButton->hide(); - ui->editNameLabel->hide(); - ui->editRefreshParamsButton->hide(); - ui->editSelectParamComboBox->hide(); - ui->editSelectComponentComboBox->hide(); - ui->editStatusLabel->hide(); - ui->editMinSpinBox->hide(); - ui->editMaxSpinBox->hide(); - ui->editLine1->hide(); - ui->editLine2->hide(); - ui->writeButton->show(); - ui->readButton->show(); - ui->valueSlider->show(); - switch ((int)parameterValue.type()) - { - case QVariant::Char: - case QVariant::Int: - case QVariant::UInt: - ui->intValueSpinBox->show(); - break; - case QMetaType::Float: - ui->doubleValueSpinBox->show(); - break; - default: - qCritical() << "ERROR: NO VALID PARAM TYPE"; - return; + switch ((int)parameterValue.type()) + { + case QVariant::Char: + case QVariant::Int: + case QVariant::UInt: + ui->intValueSpinBox->show(); + break; + case QMetaType::Float: + ui->doubleValueSpinBox->show(); + break; + default: + qCritical() << "ERROR: NO VALID PARAM TYPE"; + return; + } + } else { + ui->doubleValueSpinBox->hide(); + ui->intValueSpinBox->hide(); } - ui->nameLabel->show(); - isInEditMode = false; - emit editingFinished(); + ui->valueSlider->setVisible(!editMode); + ui->nameLabel->setVisible(!editMode); + ui->writeButton->setVisible(!editMode); + ui->readButton->setVisible(!editMode); + + ui->editInfoCheckBox->setVisible(editMode); + ui->editDoneButton->setVisible(editMode); + ui->editNameLabel->setVisible(editMode); + ui->editRefreshParamsButton->setVisible(editMode); + ui->editSelectParamComboBox->setVisible(editMode); + ui->editSelectComponentComboBox->setVisible(editMode); + ui->editStatusLabel->setVisible(editMode); + ui->editMinSpinBox->setVisible(editMode); + ui->editMaxSpinBox->setVisible(editMode); + ui->writeButton->setVisible(!editMode); + ui->readButton->setVisible(!editMode); + ui->editLine1->setVisible(editMode); + ui->editLine2->setVisible(editMode); + + QGCToolWidgetItem::setEditMode(editMode); } void QGCParamSlider::setParamPending() diff --git a/src/ui/designer/QGCParamSlider.h b/src/ui/designer/QGCParamSlider.h index 74df0db..b5b5862 100644 --- a/src/ui/designer/QGCParamSlider.h +++ b/src/ui/designer/QGCParamSlider.h @@ -20,9 +20,9 @@ public: explicit QGCParamSlider(QWidget *parent = 0); ~QGCParamSlider(); + virtual void setEditMode(bool editMode) override; + public slots: - void startEditMode(); - void endEditMode(); /** @brief Queue parameter for sending to the MAV (add to pending list)*/ void setParamPending(); /** @brief Set the slider value as parameter value */ diff --git a/src/ui/designer/QGCRadioChannelDisplay.h b/src/ui/designer/QGCRadioChannelDisplay.h index 59bb654..2b90a94 100644 --- a/src/ui/designer/QGCRadioChannelDisplay.h +++ b/src/ui/designer/QGCRadioChannelDisplay.h @@ -20,6 +20,7 @@ public: int value() { return m_value; } int min() { return m_min; } int max() { return m_max; } + protected: void paintEvent(QPaintEvent *event); private: diff --git a/src/ui/designer/QGCTextLabel.cc b/src/ui/designer/QGCTextLabel.cc index ceb645f..0a74c9d 100644 --- a/src/ui/designer/QGCTextLabel.cc +++ b/src/ui/designer/QGCTextLabel.cc @@ -31,61 +31,17 @@ QGCTextLabel::~QGCTextLabel() delete ui; } -void QGCTextLabel::startEditMode() +void QGCTextLabel::setEditMode(bool editMode) { - // Hide elements - ui->editFinishButton->show(); - ui->editNameLabel->show(); - ui->editLine1->show(); - ui->editLine2->show(); - ui->isMavCommand->show(); - - // Attempt to undock the dock widget - QWidget* p = this; - QDockWidget* dock; - - do { - p = p->parentWidget(); - dock = dynamic_cast(p); - - if (dock) - { - dock->setFloating(true); - break; - } - } while (p && !dock); - - isInEditMode = true; -} - -void QGCTextLabel::endEditMode() -{ - update_isMavCommand(); - ui->editFinishButton->hide(); - ui->editNameLabel->hide(); - ui->editLine1->hide(); - ui->editLine2->hide(); - ui->isMavCommand->hide(); - - // Write to settings - emit editingFinished(); - - // Attempt to dock the dock widget - QWidget* p = this; - QDockWidget* dock; - - do { - p = p->parentWidget(); - dock = dynamic_cast(p); - - if (dock) - { - dock->setFloating(false); - break; - } - } while (p && !dock); - - isInEditMode = false; + if(!editMode) + update_isMavCommand(); + ui->editFinishButton->setVisible(editMode); + ui->editNameLabel->setVisible(editMode); + ui->editLine1->setVisible(editMode); + ui->editLine2->setVisible(editMode); + ui->isMavCommand->setVisible(editMode); + + QGCToolWidgetItem::setEditMode(editMode); } void QGCTextLabel::writeSettings(QSettings& settings) diff --git a/src/ui/designer/QGCTextLabel.h b/src/ui/designer/QGCTextLabel.h index a1c1d1d..bc0a799 100644 --- a/src/ui/designer/QGCTextLabel.h +++ b/src/ui/designer/QGCTextLabel.h @@ -19,9 +19,8 @@ public: ~QGCTextLabel(); void setActiveUAS(UASInterface *uas); void enableText(int num); + virtual void setEditMode(bool editMode) override; public slots: - void startEditMode(); - void endEditMode(); void writeSettings(QSettings& settings); void readSettings(const QSettings& settings); void readSettings(const QString& pre,const QVariantMap& settings); diff --git a/src/ui/designer/QGCToolWidgetItem.cc b/src/ui/designer/QGCToolWidgetItem.cc index d2a8c65..236ae6e 100644 --- a/src/ui/designer/QGCToolWidgetItem.cc +++ b/src/ui/designer/QGCToolWidgetItem.cc @@ -5,12 +5,13 @@ #include "QGCToolWidget.h" #include "UASManager.h" +#include QGCToolWidgetItem::QGCToolWidgetItem(const QString& name, QWidget *parent) : QWidget(parent), + uas(NULL), isInEditMode(false), qgcToolWidgetItemName(name), - uas(NULL), _component(-1) { startEditAction = new QAction(tr("Edit %1").arg(qgcToolWidgetItemName), this); @@ -49,3 +50,25 @@ void QGCToolWidgetItem::setActiveUAS(UASInterface *uas) { this->uas = uas; } + +void QGCToolWidgetItem::setEditMode(bool editMode) +{ + isInEditMode = editMode; + + // Attempt to undock the dock widget + QWidget* p = this; + QDockWidget* dock; + + do { + p = p->parentWidget(); + dock = dynamic_cast(p); + + if (dock) + { + dock->setFloating(editMode); + break; + } + } while (p && !dock); + + emit editingFinished(); +} diff --git a/src/ui/designer/QGCToolWidgetItem.h b/src/ui/designer/QGCToolWidgetItem.h index ac09123..a3b9686 100644 --- a/src/ui/designer/QGCToolWidgetItem.h +++ b/src/ui/designer/QGCToolWidgetItem.h @@ -18,9 +18,12 @@ public: return _component; } + virtual void setEditMode(bool editMode); + bool isEditMode() const { return isInEditMode; } public slots: - virtual void startEditMode() {} - virtual void endEditMode() {} + void startEditMode() { setEditMode(true); } + void endEditMode() { setEditMode(false); } + virtual void setComponent(int comp) { _component = comp; } @@ -33,15 +36,18 @@ signals: void editingFinished(); protected: + void contextMenuEvent (QContextMenuEvent* event); + UASInterface* uas; + +private: QAction* startEditAction; QAction* stopEditAction; QAction* deleteAction; bool isInEditMode; QString qgcToolWidgetItemName; - UASInterface* uas; int _component; ///< The MAV component (the process or device ID) - void contextMenuEvent (QContextMenuEvent* event); + };