diff --git a/modules/saneui/dialog_device_select.cpp b/modules/saneui/dialog_device_select.cpp index 478cd792..53c9b0e0 100644 --- a/modules/saneui/dialog_device_select.cpp +++ b/modules/saneui/dialog_device_select.cpp @@ -43,8 +43,8 @@ Dialog_Device_Select::Dialog_Device_Select(const SANEAPI* saneApi, const char ** { ui->listWidget->setCurrentRow(0); } - - processSameDeviceType(); + if (ui->listWidget->count() > 1) + processSameDeviceType(); } Dialog_Device_Select::~Dialog_Device_Select() diff --git a/modules/twainui/dialog_device_select.cpp b/modules/twainui/dialog_device_select.cpp index 669a7621..58d0e300 100644 --- a/modules/twainui/dialog_device_select.cpp +++ b/modules/twainui/dialog_device_select.cpp @@ -19,6 +19,9 @@ Dialog_device_select::Dialog_device_select(const std::vector& devs, QW { ui->listWidget->item(0)->setSelected(true); } + + if (ui->listWidget->count() > 1) + processSameDeviceType(); } Dialog_device_select::~Dialog_device_select() @@ -31,6 +34,53 @@ 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) diff --git a/modules/twainui/dialog_device_select.h b/modules/twainui/dialog_device_select.h index 021d5b45..b0b19981 100644 --- a/modules/twainui/dialog_device_select.h +++ b/modules/twainui/dialog_device_select.h @@ -18,6 +18,9 @@ public: int getDevId(); +private: + void processSameDeviceType(); + private slots: void on_pbtn_ok_clicked();