91 lines
2.4 KiB
C++
91 lines
2.4 KiB
C++
|
#include "dialog_device_scan.h"
|
||
|
#include "ui_dialog_device_scan.h"
|
||
|
|
||
|
Dialog_Device_Scan::Dialog_Device_Scan(HGSaneDevice dev, QWidget *parent) :
|
||
|
QDialog(parent),
|
||
|
ui(new Ui::Dialog_Device_Scan)
|
||
|
{
|
||
|
ui->setupUi(this);
|
||
|
m_saneDev = dev;
|
||
|
|
||
|
connect(this, SIGNAL(eventFunc(unsigned int, QString)), this, SLOT(on_eventFunc(unsigned int, QString)), Qt::QueuedConnection);
|
||
|
|
||
|
ui->pushButton_Continue->setEnabled(false);
|
||
|
ui->pushButton_Cancel->setEnabled(false);
|
||
|
ui->pushButton_Complete->setEnabled(false);
|
||
|
|
||
|
on_pushButton_Continue_clicked();
|
||
|
}
|
||
|
|
||
|
Dialog_Device_Scan::~Dialog_Device_Scan()
|
||
|
{
|
||
|
delete ui;
|
||
|
}
|
||
|
|
||
|
void HGAPI Dialog_Device_Scan::DeviceEventFunc(HGSaneDevice dev, HGUInt error, const HGChar *errInfo, HGPointer param)
|
||
|
{
|
||
|
Dialog_Device_Scan *p = (Dialog_Device_Scan*)param;
|
||
|
emit p->eventFunc(error, tr(errInfo));
|
||
|
}
|
||
|
|
||
|
void HGAPI Dialog_Device_Scan::DeviceImageFunc(HGSaneDevice dev, HGImage image, HGPointer param)
|
||
|
{
|
||
|
Dialog_Device_Scan *p = (Dialog_Device_Scan*)param;
|
||
|
HGImage image2 = nullptr;
|
||
|
HGBase_CloneImage(image, 0, 0, &image2);
|
||
|
if (nullptr != image2)
|
||
|
{
|
||
|
emit p->newImage(image2);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Dialog_Device_Scan::on_eventFunc(HGUInt error, QString errInfo)
|
||
|
{
|
||
|
if (HGBASE_ERR_OK == error)
|
||
|
ui->label->setText("扫描完成");
|
||
|
else
|
||
|
ui->label->setText(errInfo);
|
||
|
|
||
|
HGSane_StopDevice(m_saneDev);
|
||
|
|
||
|
ui->pushButton_Continue->setEnabled(true);
|
||
|
ui->pushButton_Cancel->setEnabled(false);
|
||
|
ui->pushButton_Complete->setEnabled(true);
|
||
|
}
|
||
|
|
||
|
void Dialog_Device_Scan::on_pushButton_Cancel_clicked()
|
||
|
{
|
||
|
HGSane_StopDevice(m_saneDev);
|
||
|
|
||
|
ui->pushButton_Continue->setEnabled(true);
|
||
|
ui->pushButton_Cancel->setEnabled(false);
|
||
|
ui->pushButton_Complete->setEnabled(true);
|
||
|
}
|
||
|
|
||
|
void Dialog_Device_Scan::on_pushButton_Complete_clicked()
|
||
|
{
|
||
|
accept();
|
||
|
}
|
||
|
|
||
|
void Dialog_Device_Scan::on_pushButton_Continue_clicked()
|
||
|
{
|
||
|
HGChar errInfo[256];
|
||
|
HGResult ret = HGSane_StartDevice(m_saneDev, DeviceEventFunc, this, DeviceImageFunc, this, errInfo, 256);
|
||
|
if (HGBASE_ERR_OK != ret)
|
||
|
{
|
||
|
ui->pushButton_Continue->setEnabled(true);
|
||
|
ui->pushButton_Cancel->setEnabled(false);
|
||
|
ui->pushButton_Complete->setEnabled(true);
|
||
|
|
||
|
ui->label->setText(tr(errInfo));
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
ui->pushButton_Continue->setEnabled(false);
|
||
|
ui->pushButton_Cancel->setEnabled(true);
|
||
|
ui->pushButton_Complete->setEnabled(false);
|
||
|
|
||
|
ui->label->setText("扫描中...");
|
||
|
}
|
||
|
}
|