QGCTextLabel.cc 3.55 KB
Newer Older
1 2 3 4 5 6 7 8 9
#include <QDockWidget>

#include "QGCTextLabel.h"
#include "ui_QGCTextLabel.h"

#include "MAVLinkProtocol.h"
#include "UASManager.h"

QGCTextLabel::QGCTextLabel(QWidget *parent) :
10
    QGCToolWidgetItem("Text Label", parent),
11 12 13 14 15 16 17
    ui(new Ui::QGCTextLabel)
{
    uas = 0;
    enabledNum = -1;
    ui->setupUi(this);

    connect(ui->editFinishButton, SIGNAL(clicked()), this, SLOT(endEditMode()));
18
    connect(ui->isMavCommand, SIGNAL(toggled(bool)), this, SLOT(update_isMavCommand()));
19 20 21 22 23

    // Hide all edit items
    ui->editFinishButton->hide();
    ui->editNameLabel->hide();
    ui->editLine1->hide();
24 25 26
    ui->editLine2->hide();
    ui->isMavCommand->hide();
    ui->textLabel->setText(QString());
27 28

    init();
29 30 31 32 33 34 35
}

QGCTextLabel::~QGCTextLabel()
{
    delete ui;
}

36
void QGCTextLabel::setEditMode(bool editMode)
37
{
38 39 40 41 42 43 44 45 46
    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);
47 48 49 50
}

void QGCTextLabel::writeSettings(QSettings& settings)
{
51 52 53
    settings.setValue("TYPE", "TEXT");
    settings.setValue("QGC_TEXT_TEXT", ui->editNameLabel->text());
    settings.setValue("QGC_TEXT_SOURCE", ui->isMavCommand->isChecked()?"MAV":"NONE");
54 55 56 57 58

    settings.sync();
}
void QGCTextLabel::readSettings(const QString& pre,const QVariantMap& settings)
{
59
    ui->editNameLabel->setText(settings.value(pre + "QGC_TEXT_TEXT","").toString());
60
    ui->isMavCommand->setChecked(settings.value(pre + "QGC_TEXT_SOURCE", "NONE").toString() == "MAV");
61
    update_isMavCommand();
62 63 64
}
void QGCTextLabel::textMessageReceived(int uasid, int component, int severity, QString message)
{
65 66 67
    Q_UNUSED(uasid);
    Q_UNUSED(component);
    Q_UNUSED(severity);
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
    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)
{
88
    ui->editNameLabel->setText(settings.value("QGC_TEXT_TEXT","").toString()); //Place this before setting isMavCommand
89
    ui->isMavCommand->setChecked(settings.value("QGC_TEXT_SOURCE", "NONE").toString() == "MAV");
90
    update_isMavCommand();
91
}
92

93 94 95 96 97 98 99
void QGCTextLabel::enableText(int num)
{
    enabledNum = num;
}

void QGCTextLabel::setActiveUAS(UASInterface *uas)
{
100 101
    if(this->uas)
        this->uas->disconnect(this);
102
    this->uas = uas;
103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
    update_isMavCommand(); //Might need to update the signal connections
}

void QGCTextLabel::update_isMavCommand()
{
    ui->textLabel->setText("");
    if (!ui->isMavCommand->isChecked())
    {
        ui->nameLabel->setText(ui->editNameLabel->text());
        if(this->uas)
            disconnect(uas,SIGNAL(textMessageReceived(int,int,int,QString)),this,SLOT(textMessageReceived(int,int,int,QString)));
        if(ui->nameLabel->text().isEmpty())
            ui->nameLabel->setText(tr("Text Label")); //Show something, so that we don't end up with just an empty label
    }
    else
    {
        //MAV command text
        ui->nameLabel->setText(ui->editNameLabel->text());
        if(this->uas)
        connect(uas,SIGNAL(textMessageReceived(int,int,int,QString)),this,SLOT(textMessageReceived(int,int,int,QString)));
    }
124
}