diff options
author | Denis Shienkov <scapig@yandex.ru> | 2012-03-29 18:28:35 +0400 |
---|---|---|
committer | Denis Shienkov <scapig@yandex.ru> | 2012-03-29 18:41:06 +0200 |
commit | 87d58ae911d8e24e8b8f5c97c76b05071a725e7b (patch) | |
tree | a960c020fb71511970bcc076a43d7aab6a4997c2 /examples/terminal/settingsdialog.cpp | |
parent | 28cc50d4f4af43114a05a543b6ce7326ea0c0c1a (diff) | |
download | qtserialport-87d58ae911d8e24e8b8f5c97c76b05071a725e7b.tar.gz |
Added simple GUI terminal example.
Change-Id: Ic68be9d0c007dfd142deef37ab931f4b68f1f692
Reviewed-by: Sergey Belyashov <Sergey.Belyashov@gmail.com>
Reviewed-by: Denis Shienkov <scapig@yandex.ru>
Diffstat (limited to 'examples/terminal/settingsdialog.cpp')
-rw-r--r-- | examples/terminal/settingsdialog.cpp | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/examples/terminal/settingsdialog.cpp b/examples/terminal/settingsdialog.cpp new file mode 100644 index 0000000..08529d8 --- /dev/null +++ b/examples/terminal/settingsdialog.cpp @@ -0,0 +1,125 @@ +#include "settingsdialog.h" +#include "ui_settingsdialog.h" + +#include <QtAddOnSerialPort/serialportinfo.h> + +SettingsDialog::SettingsDialog(QWidget *parent) : + QDialog(parent), + ui(new Ui::SettingsDialog) +{ + ui->setupUi(this); + + connect(ui->applyButton, SIGNAL(clicked()), + this, SLOT(apply())); + connect(ui->portsBox, SIGNAL(currentIndexChanged(int)), + this, SLOT(showPortInfo(int))); + + fillPortsParameters(); + fillPortsInfo(); + + updateSettings(); +} + +SettingsDialog::~SettingsDialog() +{ + delete ui; +} + +SettingsDialog::Settings SettingsDialog::settings() const +{ + return currentSettings; +} + +void SettingsDialog::showPortInfo(int idx) +{ + if (idx != -1) { + QStringList list = ui->portsBox->itemData(idx).toStringList(); + ui->descriptionLabel->setText(tr("Description: %1").arg(list.at(1))); + ui->manufacturerLabel->setText(tr("Manufacturer: %1").arg(list.at(2))); + ui->locationLabel->setText(tr("Location: %1").arg(list.at(3))); + } +} + +void SettingsDialog::apply() +{ + updateSettings(); + hide(); +} + +void SettingsDialog::fillPortsParameters() +{ + // fill baud rate (is not the entire list of available values, + // desired values??, add your independently) + ui->rateBox->addItem(QLatin1String("9600"), 9600); + ui->rateBox->addItem(QLatin1String("19200"), 19200); + ui->rateBox->addItem(QLatin1String("38400"), 38400); + ui->rateBox->addItem(QLatin1String("115200"), 115200); + ui->rateBox->addItem(QLatin1String("115200"), 115200); + + // fill data bits + ui->dataBitsBox->addItem(QLatin1String("5"), static_cast<int>(SerialPort::Data5)); + ui->dataBitsBox->addItem(QLatin1String("6"), static_cast<int>(SerialPort::Data6)); + ui->dataBitsBox->addItem(QLatin1String("7"), static_cast<int>(SerialPort::Data7)); + ui->dataBitsBox->addItem(QLatin1String("8"), static_cast<int>(SerialPort::Data8)); + + // fill parity + ui->parityBox->addItem(QLatin1String("None"), static_cast<int>(SerialPort::NoParity)); + ui->parityBox->addItem(QLatin1String("Even"), static_cast<int>(SerialPort::EvenParity)); + ui->parityBox->addItem(QLatin1String("Odd"), static_cast<int>(SerialPort::OddParity)); + ui->parityBox->addItem(QLatin1String("Mark"), static_cast<int>(SerialPort::MarkParity)); + ui->parityBox->addItem(QLatin1String("Space"), static_cast<int>(SerialPort::SpaceParity)); + + // fill stop bits + ui->stopBitsBox->addItem(QLatin1String("1"), static_cast<int>(SerialPort::OneStop)); +#if defined (Q_OS_WIN) + ui->stopBitsBox->addItem(QLatin1String("1.5"), static_cast<int>(SerialPort::OneAndHalfStop)); +#endif + ui->stopBitsBox->addItem(QLatin1String("2"), static_cast<int>(SerialPort::TwoStop)); + + // fill flow control + ui->flowControlBox->addItem(QLatin1String("None"), static_cast<int>(SerialPort::NoFlowControl)); + ui->flowControlBox->addItem(QLatin1String("RTS/CTS"), static_cast<int>(SerialPort::HardwareControl)); + ui->flowControlBox->addItem(QLatin1String("XON/XOFF"), static_cast<int>(SerialPort::SoftwareControl)); +} + +void SettingsDialog::fillPortsInfo() +{ + ui->portsBox->clear(); + foreach (const SerialPortInfo &info, SerialPortInfo::availablePorts()) { + QStringList list; + list << info.portName() << info.description() + << info.manufacturer() << info.systemLocation(); + + ui->portsBox->addItem(list.at(0), list); + } +} + +void SettingsDialog::updateSettings() +{ + currentSettings.name = ui->portsBox->currentText(); + + // Rate + currentSettings.rate = static_cast<SerialPort::Rate>( + ui->rateBox->itemData(ui->rateBox->currentIndex()).toInt()); + currentSettings.stringRate = QString::number(currentSettings.rate); + + // Data bits + currentSettings.dataBits = static_cast<SerialPort::DataBits>( + ui->dataBitsBox->itemData(ui->dataBitsBox->currentIndex()).toInt()); + currentSettings.stringDataBits = ui->dataBitsBox->currentText(); + + // Parity + currentSettings.parity = static_cast<SerialPort::Parity>( + ui->parityBox->itemData(ui->parityBox->currentIndex()).toInt()); + currentSettings.stringParity = ui->parityBox->currentText(); + + // Stop bits + currentSettings.stopBits = static_cast<SerialPort::StopBits>( + ui->stopBitsBox->itemData(ui->stopBitsBox->currentIndex()).toInt()); + currentSettings.stringStopBits = ui->stopBitsBox->currentText(); + + // Flow control + currentSettings.flowcontrol = static_cast<SerialPort::FlowControl>( + ui->flowControlBox->itemData(ui->flowControlBox->currentIndex()).toInt()); + currentSettings.stringFlowControl = ui->flowControlBox->currentText(); +} |