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