去掉sane源对话框,sane驱动选择相同型号设备时增加序列号标识
This commit is contained in:
parent
94ebf55352
commit
b2d617ff6d
|
@ -164,7 +164,7 @@ DeviceUserMgr::~DeviceUserMgr()
|
|||
class DeviceUser* DeviceUserMgr::OpenDeviceUser()
|
||||
{
|
||||
HGSaneSource source = nullptr;
|
||||
HGSane_OpenSelectedSource(m_saneMgr, m_wnd, &source);
|
||||
HGSane_OpenSource(m_saneMgr, 0, &source);
|
||||
if (nullptr == source)
|
||||
return nullptr;
|
||||
|
||||
|
|
|
@ -43,6 +43,8 @@ Dialog_Device_Select::Dialog_Device_Select(const SANEAPI* saneApi, const char **
|
|||
{
|
||||
ui->listWidget->setCurrentRow(0);
|
||||
}
|
||||
|
||||
processSameDeviceType();
|
||||
}
|
||||
|
||||
Dialog_Device_Select::~Dialog_Device_Select()
|
||||
|
@ -60,6 +62,58 @@ std::string Dialog_Device_Select::GetDevName()
|
|||
return m_devName;
|
||||
}
|
||||
|
||||
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();
|
||||
QString devName2 = ui->listWidget->item(j)->text();
|
||||
if (devName.contains(" - "))
|
||||
{
|
||||
devName.truncate(devName.lastIndexOf(" - "));
|
||||
if (!devName.contains(" - "))
|
||||
{
|
||||
devName = ui->listWidget->item(i)->text();
|
||||
}
|
||||
}
|
||||
|
||||
if (devName2.contains(" - "))
|
||||
{
|
||||
devName2.truncate(devName2.lastIndexOf(" - "));
|
||||
if (!devName2.contains(" - "))
|
||||
{
|
||||
devName2 = ui->listWidget->item(j)->text();
|
||||
}
|
||||
}
|
||||
|
||||
if (devName == devName2)
|
||||
{
|
||||
SANE_Handle dev = nullptr;
|
||||
SANE_Status ret = m_saneAPI.sane_open_api(ui->listWidget->item(i)->text().toStdString().c_str(), &dev);
|
||||
if (SANE_STATUS_GOOD == ret && dev != nullptr)
|
||||
{
|
||||
char serialNum[32] = {0};
|
||||
m_saneAPI.sane_control_option_api(dev, SANE_OPT_ID_DEVICE_SERIAL_NO, SANE_ACTION_GET_VALUE, serialNum, NULL);
|
||||
ui->listWidget->item(i)->setText(ui->listWidget->item(i)->text() + "(" + QString::fromLocal8Bit(serialNum) + ")");
|
||||
m_saneAPI.sane_close_api(dev);
|
||||
}
|
||||
|
||||
ret = m_saneAPI.sane_open_api(ui->listWidget->item(j)->text().toStdString().c_str(), &dev);
|
||||
if (SANE_STATUS_GOOD == ret && dev != nullptr)
|
||||
{
|
||||
char serialNum[32] = {0};
|
||||
m_saneAPI.sane_control_option_api(dev, SANE_OPT_ID_DEVICE_SERIAL_NO, SANE_ACTION_GET_VALUE, serialNum, NULL);
|
||||
ui->listWidget->item(j)->setText(ui->listWidget->item(j)->text() + "(" + QString::fromLocal8Bit(serialNum) + ")");
|
||||
m_saneAPI.sane_close_api(dev);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Dialog_Device_Select::on_pushButton_OK_clicked()
|
||||
{
|
||||
int index = ui->listWidget->currentRow();
|
||||
|
@ -85,3 +139,8 @@ void Dialog_Device_Select::on_pushButton_Cancel_clicked()
|
|||
{
|
||||
reject();
|
||||
}
|
||||
|
||||
void Dialog_Device_Select::on_listWidget_itemDoubleClicked(QListWidgetItem *item)
|
||||
{
|
||||
on_pushButton_OK_clicked();
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
#include <QDialog>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <QListWidgetItem>
|
||||
|
||||
namespace Ui {
|
||||
class Dialog_Device_Select;
|
||||
|
@ -21,10 +22,15 @@ public:
|
|||
SANE_Handle GetDevHandle();
|
||||
std::string GetDevName();
|
||||
|
||||
private:
|
||||
void processSameDeviceType();
|
||||
|
||||
private slots:
|
||||
void on_pushButton_OK_clicked();
|
||||
void on_pushButton_Cancel_clicked();
|
||||
|
||||
void on_listWidget_itemDoubleClicked(QListWidgetItem *item);
|
||||
|
||||
private:
|
||||
Ui::Dialog_Device_Select *ui;
|
||||
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>308</width>
|
||||
<height>184</height>
|
||||
<width>328</width>
|
||||
<height>188</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
|
|
Loading…
Reference in New Issue