增加sane协议双张机制
This commit is contained in:
parent
68051bb2df
commit
f14e49bc54
|
@ -376,7 +376,21 @@ void HGAPI DeviceUser::DeviceEventFunc(HGSaneDevice dev, HGUInt event, HGPointer
|
|||
HGUInt HGAPI DeviceUser::DeviceImageFunc(HGSaneDevice dev, HGImage image, HGUInt type, HGPointer param)
|
||||
{
|
||||
DeviceUser* p = (DeviceUser*)param;
|
||||
emit p->newImage(image);
|
||||
HGUInt result = HGBASE_ERR_OK;
|
||||
if (HGSANE_IMAGE_TYPE_DOUBLE == type)
|
||||
{
|
||||
emit p->abnormalImage(image, &result);
|
||||
}
|
||||
|
||||
if (HGBASE_ERR_OK == result)
|
||||
{
|
||||
emit p->newImage(image);
|
||||
}
|
||||
else
|
||||
{
|
||||
return HGSANE_ERR_STOPSCAN;
|
||||
}
|
||||
|
||||
return HGBASE_ERR_OK;
|
||||
}
|
||||
|
||||
|
|
|
@ -124,6 +124,7 @@ private:
|
|||
|
||||
signals:
|
||||
void newImage(void *image);
|
||||
void abnormalImage(void *image, HGUInt *result);
|
||||
void scanFinishEvent();
|
||||
void scanWorkingEvent();
|
||||
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
#include "dialog_abnormalimage.h"
|
||||
#include "ui_dialog_abnormalimage.h"
|
||||
#include "sane_user/HGSane.h"
|
||||
|
||||
Dialog_AbnormalImage::Dialog_AbnormalImage(HGImage image, QWidget *parent) :
|
||||
QDialog(parent),
|
||||
ui(new Ui::Dialog_AbnormalImage)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
m_result = HGBASE_ERR_OK;
|
||||
|
||||
m_view = new HGImgView();
|
||||
m_view->addImage(image);
|
||||
ui->stackedWidget->addWidget(m_view);
|
||||
ui->stackedWidget->setCurrentWidget(m_view);
|
||||
}
|
||||
|
||||
Dialog_AbnormalImage::~Dialog_AbnormalImage()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
HGUInt Dialog_AbnormalImage::getResult()
|
||||
{
|
||||
return m_result;
|
||||
}
|
||||
|
||||
void Dialog_AbnormalImage::on_pushButton_reserve_clicked()
|
||||
{
|
||||
m_result = HGBASE_ERR_OK;
|
||||
close();
|
||||
}
|
||||
|
||||
void Dialog_AbnormalImage::on_pushButton_discard_clicked()
|
||||
{
|
||||
m_result = HGBASE_ERR_FAIL;
|
||||
close();
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
#ifndef DIALOG_ABNORMALIMAGE_H
|
||||
#define DIALOG_ABNORMALIMAGE_H
|
||||
|
||||
#include <QDialog>
|
||||
#include "base/HGBase.h"
|
||||
#include "HGImgView.h"
|
||||
|
||||
namespace Ui {
|
||||
class Dialog_AbnormalImage;
|
||||
}
|
||||
|
||||
class Dialog_AbnormalImage : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit Dialog_AbnormalImage(HGImage image, QWidget *parent = nullptr);
|
||||
~Dialog_AbnormalImage();
|
||||
|
||||
HGUInt getResult();
|
||||
|
||||
private slots:
|
||||
void on_pushButton_reserve_clicked();
|
||||
|
||||
void on_pushButton_discard_clicked();
|
||||
|
||||
private:
|
||||
Ui::Dialog_AbnormalImage *ui;
|
||||
|
||||
HGUInt m_result;
|
||||
HGImgView *m_view;
|
||||
};
|
||||
|
||||
#endif // DIALOG_ABNORMALIMAGE_H
|
|
@ -0,0 +1,58 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>Dialog_AbnormalImage</class>
|
||||
<widget class="QDialog" name="Dialog_AbnormalImage">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>820</width>
|
||||
<height>550</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Dialog</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QStackedWidget" name="stackedWidget">
|
||||
<widget class="QWidget" name="page"/>
|
||||
<widget class="QWidget" name="page_2"/>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="pushButton_reserve">
|
||||
<property name="text">
|
||||
<string>Reserve</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="pushButton_discard">
|
||||
<property name="text">
|
||||
<string>Discard</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
|
@ -32,6 +32,7 @@
|
|||
#include "dialog_feedback.h"
|
||||
#include "dialog_savemessagebox.h"
|
||||
#include "dialog_waitingocr.h"
|
||||
#include "dialog_abnormalimage.h"
|
||||
#include "base/HGInfo.h"
|
||||
#include "huagao/hgscanner_error.h"
|
||||
#include "base/HGTime.h"
|
||||
|
@ -371,6 +372,7 @@ MainWindow::MainWindow(const QString& appLang, QWidget *parent)
|
|||
{
|
||||
m_wndStatusBar->setDeviceStatusInfo(tr("Device %1 is open").arg(m_devUser->GetName()), false);
|
||||
connect(m_devUser, SIGNAL(newImage(void*)), this, SLOT(on_newImage(void*)), Qt::DirectConnection);
|
||||
connect(m_devUser, SIGNAL(abnormalImage(void*,HGUInt*)), this, SLOT(on_abnormalImage(void*,HGUInt*)), Qt::BlockingQueuedConnection);
|
||||
connect(m_devUser, SIGNAL(scanWorkingEvent()), this, SLOT(on_scanWorkingEvent()), Qt::QueuedConnection);
|
||||
connect(m_devUser, SIGNAL(scanFinishEvent()), this, SLOT(on_scanFinishEvent()), Qt::QueuedConnection);
|
||||
|
||||
|
@ -427,6 +429,7 @@ MainWindow::~MainWindow()
|
|||
if (nullptr != m_devUser)
|
||||
{
|
||||
disconnect(m_devUser, SIGNAL(newImage(void*)), this, SLOT(on_newImage(void*)));
|
||||
disconnect(m_devUser, SIGNAL(abnormalImage(void*,HGUInt*)), this, SLOT(on_abnormalImage(void*,HGUInt*)));
|
||||
disconnect(m_devUser, SIGNAL(scanWorkingEvent()), this, SLOT(on_scanWorkingEvent()));
|
||||
disconnect(m_devUser, SIGNAL(scanFinishEvent()), this, SLOT(on_scanFinishEvent()));
|
||||
delete m_devUser;
|
||||
|
@ -1311,6 +1314,15 @@ void MainWindow::on_newImage(void *image)
|
|||
qDebug("on_newImage end, m_currScanCount=%d, seconds=%f", m_currScanCount, seconds);
|
||||
}
|
||||
|
||||
void MainWindow::on_abnormalImage(void *image, HGUInt *result)
|
||||
{
|
||||
HGImage img = nullptr;
|
||||
HGBase_CloneImage((HGImage)image, 0, 0, &img);
|
||||
Dialog_AbnormalImage dlg(img, this);
|
||||
dlg.exec();
|
||||
*result = dlg.getResult();
|
||||
}
|
||||
|
||||
void MainWindow::on_scanWorkingEvent()
|
||||
{
|
||||
m_view->enableHighQuality(false);
|
||||
|
@ -4220,6 +4232,7 @@ void MainWindow::deleteDevUser()
|
|||
if (nullptr != m_devUser)
|
||||
{
|
||||
disconnect(m_devUser, SIGNAL(newImage(void*)), this, SLOT(on_newImage(void*)));
|
||||
disconnect(m_devUser, SIGNAL(abnormalImage(void*,HGUInt*)), this, SLOT(on_abnormalImage(void*,HGUInt*)));
|
||||
disconnect(m_devUser, SIGNAL(scanWorkingEvent()), this, SLOT(on_scanWorkingEvent()));
|
||||
disconnect(m_devUser, SIGNAL(scanFinishEvent()), this, SLOT(on_scanFinishEvent()));
|
||||
m_devUser->Logout();
|
||||
|
@ -4482,6 +4495,7 @@ void MainWindow::on_act_selectDevice_triggered()
|
|||
if (nullptr != m_devUser)
|
||||
{
|
||||
disconnect(m_devUser, SIGNAL(newImage(void*)), this, SLOT(on_newImage(void*)));
|
||||
disconnect(m_devUser, SIGNAL(abnormalImage(void*,HGUInt*)), this, SLOT(on_abnormalImage(void*,HGUInt*)));
|
||||
disconnect(m_devUser, SIGNAL(scanWorkingEvent()), this, SLOT(on_scanWorkingEvent()));
|
||||
disconnect(m_devUser, SIGNAL(scanFinishEvent()), this, SLOT(on_scanFinishEvent()));
|
||||
m_devUser->Logout();
|
||||
|
@ -4503,6 +4517,7 @@ void MainWindow::on_act_selectDevice_triggered()
|
|||
m_devUser->Login();
|
||||
m_wndStatusBar->setDeviceStatusInfo(tr("Device %1 is open").arg(m_devUser->GetName()), false);
|
||||
connect(m_devUser, SIGNAL(newImage(void*)), this, SLOT(on_newImage(void*)), Qt::DirectConnection);
|
||||
connect(m_devUser, SIGNAL(abnormalImage(void*,HGUInt*)), this, SLOT(on_abnormalImage(void*,HGUInt*)), Qt::BlockingQueuedConnection);
|
||||
connect(m_devUser, SIGNAL(scanWorkingEvent()), this, SLOT(on_scanWorkingEvent()), Qt::QueuedConnection);
|
||||
connect(m_devUser, SIGNAL(scanFinishEvent()), this, SLOT(on_scanFinishEvent()), Qt::QueuedConnection);
|
||||
#if !defined(HG_CMP_MSC)
|
||||
|
|
|
@ -121,6 +121,7 @@ private slots:
|
|||
void on_post_new_image(QString fileName);
|
||||
void on_preview_image();
|
||||
void on_newImage(void *image);
|
||||
void on_abnormalImage(void *image, HGUInt *result);
|
||||
void on_scanFinishEvent();
|
||||
void on_scanWorkingEvent();
|
||||
void on_m_pbtn_push_clicked();
|
||||
|
|
|
@ -226,6 +226,7 @@ SOURCES += \
|
|||
../../../app/scanner2/dialog_upgrade.cpp \
|
||||
../../../app/scanner2/dialog_writesettings.cpp \
|
||||
../../../app/scanner2/dialog_waitingocr.cpp \
|
||||
../../../app/scanner2/dialog_abnormalimage.cpp \
|
||||
../../../app/scanner2/device_user.cpp \
|
||||
../../../app/scanner2/graphicsscene.cpp \
|
||||
../../../app/scanner2/main.cpp \
|
||||
|
@ -266,6 +267,7 @@ HEADERS += \
|
|||
../../../app/scanner2/dialog_upgrade.h \
|
||||
../../../app/scanner2/dialog_writesettings.h \
|
||||
../../../app/scanner2/dialog_waitingocr.h \
|
||||
../../../app/scanner2/dialog_abnormalimage.h \
|
||||
../../../app/scanner2/device_user.h \
|
||||
../../../app/scanner2/graphicsscene.h \
|
||||
../../../app/scanner2/mainwindow.h \
|
||||
|
@ -300,6 +302,7 @@ FORMS += \
|
|||
../../../app/scanner2/dialog_upgrade.ui \
|
||||
../../../app/scanner2/dialog_writesettings.ui \
|
||||
../../../app/scanner2/dialog_waitingocr.ui \
|
||||
../../../app/scanner2/dialog_abnormalimage.ui \
|
||||
../../../app/scanner2/mainwindow.ui \
|
||||
../../../app/scanner2/widget_imgproc_base.ui \
|
||||
../../../app/scanner2/widget_statusbar.ui \
|
||||
|
|
|
@ -1134,6 +1134,8 @@ void HGAPI HGSaneDeviceImpl::ThreadFunc(HGThread thread, HGPointer param)
|
|||
if (stopScan)
|
||||
{
|
||||
saneAPI.sane_cancel_api(p->m_devHandle);
|
||||
if (NULL != p->m_scanNotify)
|
||||
p->m_scanNotify((int)SANE_EVENT_SCAN_FINISHED, NULL, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue