#include #include "QGCTextLabel.h" #include "ui_QGCTextLabel.h" #include "MAVLinkProtocol.h" #include "UASManager.h" QGCTextLabel::QGCTextLabel(QWidget *parent) : QGCToolWidgetItem("Command Button", parent), ui(new Ui::QGCTextLabel) { uas = 0; enabledNum = -1; ui->setupUi(this); connect(ui->editFinishButton, SIGNAL(clicked()), this, SLOT(endEditMode())); // Hide all edit items ui->editFinishButton->hide(); ui->editNameLabel->hide(); ui->editTextParam->hide(); ui->editComponentSpinBox->hide(); ui->editLine1->hide(); ui->editLine2->hide(); // Add commands to combo box } QGCTextLabel::~QGCTextLabel() { delete ui; } void QGCTextLabel::startEditMode() { // Hide elements ui->nameLabel->hide(); ui->editTextParam->show(); ui->editFinishButton->show(); ui->editNameLabel->show(); ui->editComponentSpinBox->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 QGCTextLabel::endEditMode() { ui->editFinishButton->hide(); ui->editTextParam->hide(); ui->editNameLabel->hide(); ui->editComponentSpinBox->hide(); ui->editLine1->hide(); ui->editLine2->hide(); 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; } void QGCTextLabel::writeSettings(QSettings& settings) { qDebug() << "COMMAND BUTTON WRITING SETTINGS"; settings.setValue("TYPE", "COMMANDBUTTON"); settings.setValue("QGC_COMMAND_BUTTON_DESCRIPTION", ui->nameLabel->text()); settings.sync(); } void QGCTextLabel::readSettings(const QString& pre,const QVariantMap& settings) { ui->editTextParam->setText(settings.value(pre + "QGC_TEXT_SOURCE", "UNKNOWN").toString()); //ui->editCommandComboBox->setCurrentIndex(settings.value(pre + "QGC_COMMAND_BUTTON_COMMANDID", 0).toInt()); if (ui->editTextParam->text() == "NONE") { ui->editNameLabel->setText(settings.value(pre + "QGC_TEXT_TEXT","").toString()); ui->nameLabel->setText(ui->editNameLabel->text()); } else if (ui->editTextParam->text() == "MAV") { //MAV command text connect(uas,SIGNAL(textMessageReceived(int,int,int,QString)),this,SLOT(textMessageReceived(int,int,int,QString))); } //int commandId = settings.value(pre + "QGC_COMMAND_BUTTON_COMMANDID", 0).toInt(); //ui->editNameLabel->setText(settings.value(pre + "QGC_COMMAND_BUTTON_DESCRIPTION", "ERROR LOADING BUTTON").toString()); //ui->nameLabel->setText(settings.value(pre + "QGC_COMMAND_BUTTON_DESCRIPTION", "ERROR LOADING BUTTON").toString()); } void QGCTextLabel::textMessageReceived(int uasid, int component, int severity, QString message) { Q_UNUSED(uasid); Q_UNUSED(component); Q_UNUSED(severity); if (enabledNum != -1) { //SUCCESS: Executed CMD: 241 if (message.contains("SUCCESS")) { if (message.trimmed().endsWith(QString::number(enabledNum))) { enabledNum = -1; ui->textLabel->setText(ui->textLabel->text() + " Complete"); } } else { ui->textLabel->setText(message); } } } void QGCTextLabel::readSettings(const QSettings& settings) { //ui->editNameLabel->setText(settings.value("QGC_COMMAND_BUTTON_DESCRIPTION", "ERROR LOADING BUTTON").toString()); //ui->nameLabel->setText(settings.value("QGC_COMMAND_BUTTON_DESCRIPTION", "ERROR LOADING BUTTON").toString()); ui->editTextParam->setText(settings.value("QGC_TEXT_SOURCE", "UNKNOWN").toString()); ui->editNameLabel->setText(settings.value("QGC_TEXT_TEXT","").toString()); //ui->editCommandComboBox->setCurrentIndex(settings.value(pre + "QGC_COMMAND_BUTTON_COMMANDID", 0).toInt()); if (ui->editTextParam->text() == "NONE") { ui->textLabel->setText(ui->editNameLabel->text()); ui->nameLabel->setText(""); } else if (ui->editTextParam->text() == "MAV") { //MAV command text ui->nameLabel->setText(ui->editNameLabel->text()); ui->textLabel->setText(""); connect(uas,SIGNAL(textMessageReceived(int,int,int,QString)),this,SLOT(textMessageReceived(int,int,int,QString))); } } void QGCTextLabel::enableText(int num) { enabledNum = num; } void QGCTextLabel::setActiveUAS(UASInterface *uas) { this->uas = uas; }