Subversion Repositories Code-Repo

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
362 Kevin 1
#include "IOWidget.h"
2
 
3
IOWidget::IOWidget(QWidget *parent) : QWidget(parent)
4
{
5
    // Serial data UI
6
    textData = new QTextEdit();
7
    textData->setCurrentFont(QFont("Consolas", 8));
8
    textData->append("Waiting for serial connection...");
9
    textData->setMinimumSize(400, 100);
10
    textData->setReadOnly(true);
11
    textTransmit = new QLineEdit();
12
    textTransmit->setEnabled(false);
13
    textTransmit->setFont(QFont("Consolas", 8));
14
    btnTransmit = new QPushButton("&Send");
15
    btnTransmit->setEnabled(false);
16
    btnClear = new QPushButton("Clear");
17
 
18
    QHBoxLayout *transmitLayout = new QHBoxLayout();
19
    transmitLayout->addWidget(textTransmit);
20
    transmitLayout->addWidget(btnTransmit);
21
    transmitLayout->addWidget(btnClear);
22
    QVBoxLayout *dataLayout = new QVBoxLayout();
23
    dataLayout->addWidget(textData);
24
    dataLayout->addLayout(transmitLayout);
25
    setLayout(dataLayout);
26
 
27
    connect(btnTransmit, SIGNAL(clicked()), this, SLOT(PreprocessTransmit()));
28
    connect(textTransmit, SIGNAL(returnPressed()), btnTransmit, SIGNAL(clicked()));
29
    connect(btnClear, SIGNAL(clicked()), this, SLOT(ClearBtn()));
30
 
364 Kevin 31
    EnableTransmit(false);
362 Kevin 32
    lastTransmit = true;
33
}
34
 
35
IOWidget::~IOWidget()
36
{
37
 
38
}
39
 
40
void IOWidget::PreprocessTransmit(QByteArray data)
41
{
42
    QString str;
43
    if (data.isEmpty()) {
44
        str = textTransmit->text();
45
        textTransmit->setText("");
46
    } else {
47
        str = QString(data);
48
    }
49
 
50
    emit TransmitByteArray(str.toUtf8());
51
    textData->setTextColor(Qt::darkBlue);
52
 
53
    QStringList cmds = str.split('\n');
54
    for (int i = 0; i < cmds.size(); i++) {
55
        textData->append("TX:  " + cmds[i]);
56
    }
57
 
58
    // Save a flag indicating last activity was a transmit
59
    lastTransmit = true;
60
}
61
 
62
void IOWidget::ProcessReceivedByte(QByteArray data)
63
{
64
    textData->setTextColor(Qt::darkRed);
65
    data.replace("\n", "\nRX:  ");
66
    if (lastTransmit) {
67
        textData->insertPlainText("\nRX:  " + QString(data));
68
    } else {
69
        textData->insertPlainText(QString(data));
70
    }
71
    textData->moveCursor(QTextCursor::End);
72
    lastTransmit = false;
73
}
74
 
75
void IOWidget::ClearBtn()
76
{
77
    textData->clear();
78
}
79
 
364 Kevin 80
void IOWidget::EnableTransmit(bool enable)
362 Kevin 81
{
364 Kevin 82
    if (enable) {
83
        textTransmit->setEnabled(true);
84
        btnTransmit->setEnabled(true);
85
    } else {
86
        textTransmit->setEnabled(false);
87
        btnTransmit->setEnabled(false);
88
    }
362 Kevin 89
}