void ChooseConnectionDlg::updateDetailsUi(Connection * conn) { updateEditText(ui->connectionNameEdit, conn->name()); ui->actionRemoveConnection->setEnabled(conn->removable()); ui->actionConnect->setEnabled(conn->state() == st_disconnected); ui->actionDisconnect->setEnabled(conn->state() == st_connected || conn->state() == st_connect_pending || conn->state() == st_disconnecting); ui->programmerSelection->setVisible(false); ui->persistNameButton->setVisible(conn->isNamePersistable()); ui->persistNameButton->setEnabled(!conn->hasDefaultName()); switch (conn->getType()) { case CONNECTION_SERIAL_PORT: { SerialPort * sp = static_cast<SerialPort *>(conn); ui->settingsStack->setCurrentWidget(ui->serialPortPage); updateEditText(ui->spBaudRateEdit->lineEdit(), QString::number((int)sp->baudRate())); updateEditText(ui->spDeviceNameEdit, sp->deviceName()); updateComboIndex(ui->spParity, (int)sp->parity()); updateComboIndex(ui->spStopBits, (int)sp->stopBits()); updateComboText(ui->spDataBits, QString::number(sp->dataBits())); ui->spDeviceNameEdit->setEnabled(sp->devNameEditable()); ui->programmerSelection->setVisible(m_allowedConns & pct_port_programmable); setActiveProgBtn(sp->programmerType()); } break; case CONNECTION_TCP_SOCKET: { TcpSocket * tc = static_cast<TcpSocket *>(conn); ui->settingsStack->setCurrentWidget(ui->tcpClientPage); updateEditText(ui->tcHostEdit, tc->host()); ui->tcPortEdit->setValue(tc->port()); ui->programmerSelection->setVisible(m_allowedConns & pct_port_programmable); setActiveProgBtn(tc->programmerType()); } break; case CONNECTION_USB_ACM2: { UsbAcmConnection2 * c = static_cast<UsbAcmConnection2 *>(conn); ui->settingsStack->setCurrentWidget(ui->usbAcmConnPage); updateComboText(ui->usbBaudRateEdit, QString::number((int)c->baudRate())); updateComboIndex(ui->usbParityCombo, (int)c->parity()); updateComboIndex(ui->usbStopBitsCombo, (int)c->stopBits()); updateComboText(ui->usbDataBitsCombo, QString::number(c->dataBits())); updateEditText(ui->usbVidEdit, QString("%1").arg(c->vid(), 4, 16, QChar('0'))); updateEditText(ui->usbPidEdit, QString("%1").arg(c->pid(), 4, 16, QChar('0'))); updateEditText(ui->usbAcmSnEdit, c->serialNumber()); updateEditText(ui->usbIntfNameEdit, c->intfName()); bool editable = !c->enumerated() && (c->state() == st_disconnected || c->state() == st_missing); ui->usbVidEdit->setEnabled(editable); ui->usbPidEdit->setEnabled(editable); ui->usbAcmSnEdit->setEnabled(editable); ui->usbIntfNameEdit->setEnabled(editable); ui->programmerSelection->setVisible(m_allowedConns & pct_port_programmable); setActiveProgBtn(c->programmerType()); } break; case CONNECTION_USB_SHUPITO: case CONNECTION_SHUPITO23: { ShupitoConnection * c = static_cast<ShupitoConnection *>(conn); ShupitoFirmwareDetails fd; if (c->getFirmwareDetails(fd)) { ui->shupito23HardwareLabel->setText(QString("%1.%2").arg(fd.hw_major).arg(fd.hw_minor)); ui->shupito23FirmwareLabel->setText(fd.firmwareFilename()); ui->settingsStack->setCurrentWidget(ui->shupito23Page); } else { ui->settingsStack->setCurrentWidget(ui->noSettingsPage); } } break; case CONNECTION_SHUPITO_TUNNEL: { ShupitoTunnel * st = static_cast<ShupitoTunnel *>(conn); ui->programmerSelection->setVisible(m_allowedConns & pct_port_programmable); setActiveProgBtn(st->programmerType()); ui->settingsStack->setCurrentWidget(ui->noSettingsPage); } break; default: { ui->settingsStack->setCurrentWidget(ui->noSettingsPage); } break; } }