code_app/app/scanner/dialog_device_scan.cpp

91 lines
2.4 KiB
C++
Raw Normal View History

#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("扫描中...");
}
}