Subversion Repositories Code-Repo

Rev

Blame | Last modification | View Log | RSS feed

#include "IOWidget.h"

IOWidget::IOWidget(QWidget *parent) : QWidget(parent)
{
    // Serial data UI
    textData = new QTextEdit();
    textData->setCurrentFont(QFont("Consolas", 8));
    textData->append("Waiting for serial connection...");
    textData->setMinimumSize(400, 100);
    textData->setReadOnly(true);
    textTransmit = new QLineEdit();
    textTransmit->setEnabled(false);
    textTransmit->setFont(QFont("Consolas", 8));
    btnTransmit = new QPushButton("&Send");
    btnTransmit->setEnabled(false);
    btnClear = new QPushButton("Clear");

    QHBoxLayout *transmitLayout = new QHBoxLayout();
    transmitLayout->addWidget(textTransmit);
    transmitLayout->addWidget(btnTransmit);
    transmitLayout->addWidget(btnClear);
    QVBoxLayout *dataLayout = new QVBoxLayout();
    dataLayout->addWidget(textData);
    dataLayout->addLayout(transmitLayout);
    setLayout(dataLayout);

    connect(btnTransmit, SIGNAL(clicked()), this, SLOT(PreprocessTransmit()));
    connect(textTransmit, SIGNAL(returnPressed()), btnTransmit, SIGNAL(clicked()));
    connect(btnClear, SIGNAL(clicked()), this, SLOT(ClearBtn()));

    DisableTransmit();
    lastTransmit = true;
}

IOWidget::~IOWidget()
{

}

void IOWidget::PreprocessTransmit(QByteArray data)
{
    QString str;
    if (data.isEmpty()) {
        str = textTransmit->text();
        textTransmit->setText("");
    } else {
        str = QString(data);
    }

    emit TransmitByteArray(str.toUtf8());
    textData->setTextColor(Qt::darkBlue);

    QStringList cmds = str.split('\n');
    for (int i = 0; i < cmds.size(); i++) {
        textData->append("TX:  " + cmds[i]);
    }

    // Save a flag indicating last activity was a transmit
    lastTransmit = true;
}

void IOWidget::ProcessReceivedByte(QByteArray data)
{
    textData->setTextColor(Qt::darkRed);
    data.replace("\n", "\nRX:  ");
    if (lastTransmit) {
        textData->insertPlainText("\nRX:  " + QString(data));
    } else {
        textData->insertPlainText(QString(data));
    }
    textData->moveCursor(QTextCursor::End);
    lastTransmit = false;
}

void IOWidget::ClearBtn()
{
    textData->clear();
}

void IOWidget::EnableTransmit()
{
    textTransmit->setEnabled(true);
    btnTransmit->setEnabled(true);
}

void IOWidget::DisableTransmit()
{
    textTransmit->setEnabled(false);
    btnTransmit->setEnabled(false);
}