HGSaneUI:show_devlist_ui函数接口修改,增加传入参数设备名列表
This commit is contained in:
parent
a8770f5af7
commit
0af83ed048
|
@ -63,7 +63,12 @@ void HGAPI DeviceUser::DSCloseReqFunc(HGTwainDS ds, HGPointer param)
|
|||
void HGAPI DeviceUser::DSImageFunc(HGTwainDS ds, HGImage image, HGPointer param)
|
||||
{
|
||||
DeviceUser* p = (DeviceUser*)param;
|
||||
emit p->newImage(image);
|
||||
HGImage image2 = nullptr;
|
||||
HGBase_CloneImage(image, 0, 0, &image2);
|
||||
if (nullptr != image2)
|
||||
{
|
||||
emit p->newImage(image2);
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
|
@ -156,7 +161,12 @@ HGResult DeviceUser::StartScan()
|
|||
void HGAPI DeviceUser::DeviceImageFunc(HGSaneDevice dev, HGImage image, HGPointer param)
|
||||
{
|
||||
DeviceUser* p = (DeviceUser*)param;
|
||||
emit p->newImage(image);
|
||||
HGImage image2 = nullptr;
|
||||
HGBase_CloneImage(image, 0, 0, &image2);
|
||||
if (nullptr != image2)
|
||||
{
|
||||
emit p->newImage(image2);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -34,6 +34,7 @@ void MainWindow::on_newImage(void *image)
|
|||
char fileName[256];
|
||||
sprintf(fileName, "D:\\test_%d.jpg", i++);
|
||||
HGImgFmt_SaveImage((HGImage)image, 0, NULL, fileName);
|
||||
HGBase_DestroyImage((HGImage)image);
|
||||
}
|
||||
|
||||
void MainWindow::on_pushButton_selectDev_clicked()
|
||||
|
|
|
@ -62,7 +62,8 @@ int show_srclist_ui(const char **manuNames, const char **sanePaths, HGWindow par
|
|||
return 0;
|
||||
}
|
||||
|
||||
int show_devlist_ui(const SANEAPI* saneApi, HGWindow parent, SANE_Handle *handle, char *devName, unsigned int maxLen)
|
||||
int show_devlist_ui(const SANEAPI* saneApi, const char **devNames, HGWindow parent,
|
||||
SANE_Handle *handle, char *devName, unsigned int maxLen)
|
||||
{
|
||||
if (nullptr == saneApi || nullptr == handle)
|
||||
return -1;
|
||||
|
@ -87,7 +88,7 @@ int show_devlist_ui(const SANEAPI* saneApi, HGWindow parent, SANE_Handle *handle
|
|||
QCoreApplication::installTranslator(&translator);
|
||||
|
||||
*handle = nullptr;
|
||||
Dialog_Device_Select dlg(saneApi, qParent);
|
||||
Dialog_Device_Select dlg(saneApi, devNames, qParent);
|
||||
if (dlg.exec())
|
||||
{
|
||||
if (nullptr != devName)
|
||||
|
|
|
@ -12,7 +12,8 @@ typedef void (*show_scan_ui_image_callback)(const SANE_Parameters *imageFormat,
|
|||
|
||||
HGEXPORT int show_srclist_ui(const char **manuNames, const char **sanePaths, HGWindow parent, HGDll *dll,
|
||||
SANEAPI* saneApi, char *manuName, unsigned int maxLen);
|
||||
HGEXPORT int show_devlist_ui(const SANEAPI* saneApi, HGWindow parent, SANE_Handle *handle, char *devName, unsigned int maxLen);
|
||||
HGEXPORT int show_devlist_ui(const SANEAPI* saneApi, const char **devNames, HGWindow parent,
|
||||
SANE_Handle *handle, char *devName, unsigned int maxLen);
|
||||
HGEXPORT int show_setting_ui(const SANEAPI* saneApi, SANE_Handle handle, const char *devName, HGWindow parent);
|
||||
HGEXPORT int show_scan_ui(const SANEAPI* saneApi, SANE_Handle handle, const char *devName, HGWindow parent,
|
||||
show_scan_ui_image_callback callback, void *callbackParam);
|
||||
|
|
|
@ -26,7 +26,6 @@ Dialog_Device_Scan::Dialog_Device_Scan(const SANEAPI* saneApi, SANE_Handle dev,
|
|||
qRegisterMetaType<SANE_Parameters>("SANE_Parameters");
|
||||
qRegisterMetaType<SANE_Byte *>("SANE_Byte *");
|
||||
connect(this, &Dialog_Device_Scan::eventFunc, this, &Dialog_Device_Scan::on_eventFunc, Qt::QueuedConnection);
|
||||
connect(this, &Dialog_Device_Scan::newImage, this, &Dialog_Device_Scan::on_newImage, Qt::QueuedConnection);
|
||||
|
||||
ui->pushButton_Continue->setEnabled(true);
|
||||
ui->pushButton_Cancel->setEnabled(false);
|
||||
|
@ -59,13 +58,6 @@ void Dialog_Device_Scan::on_eventFunc(QString errInfo)
|
|||
ui->pushButton_Complete->setEnabled(true);
|
||||
}
|
||||
|
||||
void Dialog_Device_Scan::on_newImage(SANE_Parameters format, SANE_Byte *data)
|
||||
{
|
||||
if (NULL != m_callback)
|
||||
m_callback(&format, data, m_callbackParam);
|
||||
delete [] data;
|
||||
}
|
||||
|
||||
void Dialog_Device_Scan::on_pushButton_Cancel_clicked()
|
||||
{
|
||||
m_saneAPI.sane_cancel_api(m_saneDev);
|
||||
|
@ -105,7 +97,7 @@ void Dialog_Device_Scan::on_pushButton_Continue_clicked()
|
|||
|
||||
void Dialog_Device_Scan::closeEvent(QCloseEvent *e)
|
||||
{
|
||||
if (NULL != m_thread)
|
||||
if (nullptr != m_thread)
|
||||
{
|
||||
QMessageBox::warning(this, tr("Warning"), tr("Scanning in progress, closing not allowed"));
|
||||
e->ignore();
|
||||
|
@ -172,8 +164,7 @@ void HGAPI Dialog_Device_Scan::ThreadFunc(HGThread thread, HGPointer param)
|
|||
break;
|
||||
}
|
||||
|
||||
SANE_Byte *data = new HGByte [readSize];
|
||||
memcpy(data, p->m_buffer, readSize);
|
||||
emit p->newImage(params, data);
|
||||
if (nullptr != p->m_callback)
|
||||
p->m_callback(¶ms, p->m_buffer, p->m_callbackParam);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,11 +21,9 @@ public:
|
|||
|
||||
signals:
|
||||
void eventFunc(QString errInfo);
|
||||
void newImage(SANE_Parameters format, SANE_Byte *data);
|
||||
|
||||
private slots:
|
||||
void on_eventFunc(QString errInfo);
|
||||
void on_newImage(SANE_Parameters format, SANE_Byte *data);
|
||||
void on_pushButton_Cancel_clicked();
|
||||
void on_pushButton_Complete_clicked();
|
||||
void on_pushButton_Continue_clicked();
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#include "ui_dialog_device_select.h"
|
||||
#include <QMessageBox>
|
||||
|
||||
Dialog_Device_Select::Dialog_Device_Select(const SANEAPI* saneApi, QWidget *parent) :
|
||||
Dialog_Device_Select::Dialog_Device_Select(const SANEAPI* saneApi, const char **devNames, QWidget *parent) :
|
||||
QDialog(parent),
|
||||
ui(new Ui::Dialog_Device_Select)
|
||||
{
|
||||
|
@ -15,14 +15,27 @@ Dialog_Device_Select::Dialog_Device_Select(const SANEAPI* saneApi, QWidget *pare
|
|||
|
||||
setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint);
|
||||
|
||||
const SANE_Device** device_list;
|
||||
if (SANE_STATUS_GOOD == saneApi->sane_get_devices_api(&device_list, SANE_TRUE))
|
||||
if (nullptr == devNames)
|
||||
{
|
||||
const SANE_Device** p;
|
||||
for (p = device_list; *p != nullptr; ++p)
|
||||
const SANE_Device** device_list;
|
||||
if (SANE_STATUS_GOOD == saneApi->sane_get_devices_api(&device_list, SANE_TRUE))
|
||||
{
|
||||
m_vDevName.push_back((*p)->name);
|
||||
ui->listWidget->addItem((*p)->name);
|
||||
const SANE_Device** p;
|
||||
for (p = device_list; *p != nullptr; ++p)
|
||||
{
|
||||
m_vDevName.push_back((*p)->name);
|
||||
ui->listWidget->addItem((*p)->name);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
const char **p = devNames;
|
||||
while (*p != nullptr)
|
||||
{
|
||||
m_vDevName.push_back(*p);
|
||||
ui->listWidget->addItem(*p);
|
||||
++p;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ class Dialog_Device_Select : public QDialog
|
|||
Q_OBJECT
|
||||
|
||||
public:
|
||||
Dialog_Device_Select(const SANEAPI* saneApi, QWidget *parent = nullptr);
|
||||
Dialog_Device_Select(const SANEAPI* saneApi, const char **devNames, QWidget *parent = nullptr);
|
||||
~Dialog_Device_Select();
|
||||
|
||||
SANE_Handle GetDevHandle();
|
||||
|
|
Loading…
Reference in New Issue