From 66ea339c2e6041ae6d62baa16e9a94204dbe6ee4 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 19 Sep 2022 11:31:21 +0200 Subject: Polish the terminal example - Fix clang/clazy warnings about QString::arg() multiple arguments, QList detaching (constFirst()) - Use automatic enum registration for determining settings - Streamline code, shorten some lines - Use translated blankString everywhere Pick-to: 6.4 Change-Id: Icc8d2bb98995efef6eb1de2b6ea2143134abfb47 Reviewed-by: Karsten Heimrich --- examples/serialport/terminal/mainwindow.cpp | 6 +-- examples/serialport/terminal/settingsdialog.cpp | 53 +++++++++++++------------ 2 files changed, 31 insertions(+), 28 deletions(-) diff --git a/examples/serialport/terminal/mainwindow.cpp b/examples/serialport/terminal/mainwindow.cpp index 78bdf371..56cf998d 100644 --- a/examples/serialport/terminal/mainwindow.cpp +++ b/examples/serialport/terminal/mainwindow.cpp @@ -16,7 +16,7 @@ MainWindow::MainWindow(QWidget *parent) : m_ui(new Ui::MainWindow), m_status(new QLabel), m_console(new Console), - m_settings(new SettingsDialog), + m_settings(new SettingsDialog(this)), //! [1] m_serial(new QSerialPort(this)) //! [1] @@ -68,8 +68,8 @@ void MainWindow::openSerialPort() m_ui->actionDisconnect->setEnabled(true); m_ui->actionConfigure->setEnabled(false); showStatusMessage(tr("Connected to %1 : %2, %3, %4, %5, %6") - .arg(p.name).arg(p.stringBaudRate).arg(p.stringDataBits) - .arg(p.stringParity).arg(p.stringStopBits).arg(p.stringFlowControl)); + .arg(p.name, p.stringBaudRate, p.stringDataBits, + p.stringParity, p.stringStopBits, p.stringFlowControl)); } else { QMessageBox::critical(this, tr("Error"), m_serial->errorString()); diff --git a/examples/serialport/terminal/settingsdialog.cpp b/examples/serialport/terminal/settingsdialog.cpp index a3353d02..c949e2cd 100644 --- a/examples/serialport/terminal/settingsdialog.cpp +++ b/examples/serialport/terminal/settingsdialog.cpp @@ -50,13 +50,15 @@ void SettingsDialog::showPortInfo(int idx) if (idx == -1) return; + const QString blankString = tr(::blankString); + const QStringList list = m_ui->serialPortInfoListBox->itemData(idx).toStringList(); - m_ui->descriptionLabel->setText(tr("Description: %1").arg(list.count() > 1 ? list.at(1) : tr(blankString))); - m_ui->manufacturerLabel->setText(tr("Manufacturer: %1").arg(list.count() > 2 ? list.at(2) : tr(blankString))); - m_ui->serialNumberLabel->setText(tr("Serial number: %1").arg(list.count() > 3 ? list.at(3) : tr(blankString))); - m_ui->locationLabel->setText(tr("Location: %1").arg(list.count() > 4 ? list.at(4) : tr(blankString))); - m_ui->vidLabel->setText(tr("Vendor Identifier: %1").arg(list.count() > 5 ? list.at(5) : tr(blankString))); - m_ui->pidLabel->setText(tr("Product Identifier: %1").arg(list.count() > 6 ? list.at(6) : tr(blankString))); + m_ui->descriptionLabel->setText(tr("Description: %1").arg(list.value(1, blankString))); + m_ui->manufacturerLabel->setText(tr("Manufacturer: %1").arg(list.value(2, blankString))); + m_ui->serialNumberLabel->setText(tr("Serial number: %1").arg(list.value(3, blankString))); + m_ui->locationLabel->setText(tr("Location: %1").arg(list.value(4, blankString))); + m_ui->vidLabel->setText(tr("Vendor Identifier: %1").arg(list.value(5, blankString))); + m_ui->pidLabel->setText(tr("Product Identifier: %1").arg(list.value(6, blankString))); } void SettingsDialog::apply() @@ -118,24 +120,25 @@ void SettingsDialog::fillPortsParameters() void SettingsDialog::fillPortsInfo() { m_ui->serialPortInfoListBox->clear(); - QString description; - QString manufacturer; - QString serialNumber; + const QString blankString = tr(::blankString); const auto infos = QSerialPortInfo::availablePorts(); + for (const QSerialPortInfo &info : infos) { QStringList list; - description = info.description(); - manufacturer = info.manufacturer(); - serialNumber = info.serialNumber(); + const QString description = info.description(); + const QString manufacturer = info.manufacturer(); + const QString serialNumber = info.serialNumber(); + const auto vendorId = info.vendorIdentifier(); + const auto productId = info.productIdentifier(); list << info.portName() << (!description.isEmpty() ? description : blankString) << (!manufacturer.isEmpty() ? manufacturer : blankString) << (!serialNumber.isEmpty() ? serialNumber : blankString) << info.systemLocation() - << (info.vendorIdentifier() ? QString::number(info.vendorIdentifier(), 16) : blankString) - << (info.productIdentifier() ? QString::number(info.productIdentifier(), 16) : blankString); + << (vendorId ? QString::number(vendorId, 16) : blankString) + << (productId ? QString::number(productId, 16) : blankString); - m_ui->serialPortInfoListBox->addItem(list.first(), list); + m_ui->serialPortInfoListBox->addItem(list.constFirst(), list); } m_ui->serialPortInfoListBox->addItem(tr("Custom")); @@ -148,25 +151,25 @@ void SettingsDialog::updateSettings() if (m_ui->baudRateBox->currentIndex() == 4) { m_currentSettings.baudRate = m_ui->baudRateBox->currentText().toInt(); } else { - m_currentSettings.baudRate = static_cast( - m_ui->baudRateBox->itemData(m_ui->baudRateBox->currentIndex()).toInt()); + const auto baudRateData = m_ui->baudRateBox->currentData(); + m_currentSettings.baudRate = baudRateData.value(); } m_currentSettings.stringBaudRate = QString::number(m_currentSettings.baudRate); - m_currentSettings.dataBits = static_cast( - m_ui->dataBitsBox->itemData(m_ui->dataBitsBox->currentIndex()).toInt()); + const auto dataBitsData = m_ui->dataBitsBox->currentData(); + m_currentSettings.dataBits = dataBitsData.value(); m_currentSettings.stringDataBits = m_ui->dataBitsBox->currentText(); - m_currentSettings.parity = static_cast( - m_ui->parityBox->itemData(m_ui->parityBox->currentIndex()).toInt()); + const auto parityData = m_ui->parityBox->currentData(); + m_currentSettings.parity = parityData.value(); m_currentSettings.stringParity = m_ui->parityBox->currentText(); - m_currentSettings.stopBits = static_cast( - m_ui->stopBitsBox->itemData(m_ui->stopBitsBox->currentIndex()).toInt()); + const auto stopBitsData = m_ui->stopBitsBox->currentData(); + m_currentSettings.stopBits = stopBitsData.value(); m_currentSettings.stringStopBits = m_ui->stopBitsBox->currentText(); - m_currentSettings.flowControl = static_cast( - m_ui->flowControlBox->itemData(m_ui->flowControlBox->currentIndex()).toInt()); + const auto flowControlData = m_ui->flowControlBox->currentData(); + m_currentSettings.flowControl = flowControlData.value(); m_currentSettings.stringFlowControl = m_ui->flowControlBox->currentText(); m_currentSettings.localEchoEnabled = m_ui->localEchoCheckBox->isChecked(); -- cgit v1.2.3