summaryrefslogtreecommitdiff
path: root/examples/terminal/settingsdialog.cpp
diff options
context:
space:
mode:
authorDenis Shienkov <scapig@yandex.ru>2012-03-29 18:28:35 +0400
committerDenis Shienkov <scapig@yandex.ru>2012-03-29 18:41:06 +0200
commit87d58ae911d8e24e8b8f5c97c76b05071a725e7b (patch)
treea960c020fb71511970bcc076a43d7aab6a4997c2 /examples/terminal/settingsdialog.cpp
parent28cc50d4f4af43114a05a543b6ce7326ea0c0c1a (diff)
downloadqtserialport-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.cpp125
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();
+}