code_app/modules/twainui/dialog_device_select.cpp

121 lines
3.1 KiB
C++

#include "dialog_device_select.h"
#include "ui_dialog_device_select.h"
Dialog_device_select::Dialog_device_select(const std::vector<DEVQUEUI>& 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();
}