#include "dialog_device_select.h" #include "ui_dialog_device_select.h" Dialog_device_select::Dialog_device_select(const std::vector& devs, QWidget *parent) : QDialog(parent), ui(new Ui::Dialog_device_select) , m_devId(-1) , m_devs(devs) { ui->setupUi(this); setWindowFlags(Qt::SubWindow | Qt::Popup | Qt::WindowStaysOnTopHint); for (int i = 0; i < m_devs.size(); ++i) { ui->listWidget->addItem(QString::fromStdString(m_devs[i].name)); } if (ui->listWidget->count() > 0) { ui->listWidget->item(0)->setSelected(true); } if (ui->listWidget->count() > 1) processSameDeviceType(); } Dialog_device_select::~Dialog_device_select() { delete ui; } int Dialog_device_select::getDevId() { return m_devId; } void Dialog_device_select::processSameDeviceType() { int len = ui->listWidget->count(); for (int i = 0; i < len - 1; ++i) { for (int j = i + 1; j < len; ++j) { QString devName = ui->listWidget->item(i)->text(); if (devName.contains(" - ")) { devName.truncate(devName.lastIndexOf(" - ")); if (!devName.contains(" - ")) { devName = ui->listWidget->item(i)->text(); } } QString devName2 = ui->listWidget->item(j)->text(); if (devName2.contains(" - ")) { devName2.truncate(devName2.lastIndexOf(" - ")); if (!devName2.contains(" - ")) { devName2 = ui->listWidget->item(j)->text(); } } if (devName == devName2) { QString serialNum; QString serialNum2; for (int i = 0; i < m_devs.size(); ++i) { if (devName == QString::fromStdString(m_devs[i].name)) serialNum = QString::fromStdString(m_devs[i].name); if (devName2 == QString::fromStdString(m_devs[i].name)) serialNum2 = QString::fromStdString(m_devs[i].name); } ui->listWidget->item(i)->setText(ui->listWidget->item(i)->text() + "(" + serialNum + ")"); ui->listWidget->item(j)->setText(ui->listWidget->item(j)->text() + "(" + serialNum2 + ")"); } } } } void Dialog_device_select::on_pbtn_ok_clicked() { if (ui->listWidget->count() == 0) { m_devId = -1; } else { std::string selectDev = ui->listWidget->currentItem()->text().toStdString(); for (int i = 0; i < m_devs.size(); ++i) { if (m_devs[i].name == selectDev) { m_devId = m_devs[i].id; break; } else { m_devId = -1; } } } accept(); } void Dialog_device_select::on_pbtn_cancel_clicked() { m_devId = -1; reject(); } void Dialog_device_select::on_listWidget_itemDoubleClicked(QListWidgetItem *item) { on_pbtn_ok_clicked(); }