解决双击设置按钮导致显示设置对话框的消息函数重入的问题
This commit is contained in:
parent
66d28656cd
commit
4ce0b0cba1
|
@ -165,6 +165,11 @@ void HGAPI DeviceUser::DSEventFunc(HGTwainDS ds, HGUInt event, HGPointer param)
|
||||||
{
|
{
|
||||||
emit p->scanWorkingEvent();
|
emit p->scanWorkingEvent();
|
||||||
}
|
}
|
||||||
|
else if (HGTWAIN_EVENT_TYPE_CLOSEDSREQ == event)
|
||||||
|
{
|
||||||
|
HGTwain_DisableDS(p->m_twainDS);
|
||||||
|
emit p->closeDSReq();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
HGUInt HGAPI DeviceUser::DSImageFunc(HGTwainDS ds, HGImage image, HGUInt type, HGPointer param)
|
HGUInt HGAPI DeviceUser::DSImageFunc(HGTwainDS ds, HGImage image, HGUInt type, HGPointer param)
|
||||||
|
|
|
@ -61,6 +61,7 @@ signals:
|
||||||
void newImage(void *image);
|
void newImage(void *image);
|
||||||
void scanFinishEvent();
|
void scanFinishEvent();
|
||||||
void scanWorkingEvent();
|
void scanWorkingEvent();
|
||||||
|
void closeDSReq();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QWidget *m_wnd;
|
QWidget *m_wnd;
|
||||||
|
|
|
@ -86,6 +86,7 @@ MainWindow::MainWindow(const QString& appLang, QWidget *parent)
|
||||||
, m_bSideEditing(false)
|
, m_bSideEditing(false)
|
||||||
, m_ocrMsgPump(NULL)
|
, m_ocrMsgPump(NULL)
|
||||||
, m_ocrThread(NULL)
|
, m_ocrThread(NULL)
|
||||||
|
, m_dsEnabled(false)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
|
||||||
|
@ -375,6 +376,7 @@ MainWindow::MainWindow(const QString& appLang, QWidget *parent)
|
||||||
connect(m_devUser, SIGNAL(abnormalImage(void*,HGUInt*)), this, SLOT(on_abnormalImage(void*,HGUInt*)), Qt::BlockingQueuedConnection);
|
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(scanWorkingEvent()), this, SLOT(on_scanWorkingEvent()), Qt::QueuedConnection);
|
||||||
connect(m_devUser, SIGNAL(scanFinishEvent()), this, SLOT(on_scanFinishEvent()), Qt::QueuedConnection);
|
connect(m_devUser, SIGNAL(scanFinishEvent()), this, SLOT(on_scanFinishEvent()), Qt::QueuedConnection);
|
||||||
|
connect(m_devUser, SIGNAL(closeDSReq()), this, SLOT(on_closeDSReq()), Qt::QueuedConnection);
|
||||||
|
|
||||||
#if !defined(HG_CMP_MSC)
|
#if !defined(HG_CMP_MSC)
|
||||||
checkRollerLife();
|
checkRollerLife();
|
||||||
|
@ -432,6 +434,7 @@ MainWindow::~MainWindow()
|
||||||
disconnect(m_devUser, SIGNAL(abnormalImage(void*,HGUInt*)), this, SLOT(on_abnormalImage(void*,HGUInt*)));
|
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(scanWorkingEvent()), this, SLOT(on_scanWorkingEvent()));
|
||||||
disconnect(m_devUser, SIGNAL(scanFinishEvent()), this, SLOT(on_scanFinishEvent()));
|
disconnect(m_devUser, SIGNAL(scanFinishEvent()), this, SLOT(on_scanFinishEvent()));
|
||||||
|
disconnect(m_devUser, SIGNAL(closeDSReq()), this, SLOT(on_closeDSReq()));
|
||||||
delete m_devUser;
|
delete m_devUser;
|
||||||
m_devUser = nullptr;
|
m_devUser = nullptr;
|
||||||
}
|
}
|
||||||
|
@ -1516,6 +1519,11 @@ void MainWindow::on_scanFinishEvent()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWindow::on_closeDSReq()
|
||||||
|
{
|
||||||
|
m_dsEnabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
void MainWindow::on_m_pbtn_push_clicked()
|
void MainWindow::on_m_pbtn_push_clicked()
|
||||||
{
|
{
|
||||||
int mainWndWidth = this->rect().width();
|
int mainWndWidth = this->rect().width();
|
||||||
|
@ -3312,12 +3320,20 @@ void MainWindow::on_act_about_triggered()
|
||||||
|
|
||||||
void MainWindow::on_act_scannerSettings_triggered()
|
void MainWindow::on_act_scannerSettings_triggered()
|
||||||
{
|
{
|
||||||
if (nullptr == m_devUser)
|
if (nullptr == m_devUser || m_dsEnabled)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_dsEnabled = true;
|
||||||
|
|
||||||
|
qDebug("m_devUser->ShowSettingDlg()");
|
||||||
HGResult ret = m_devUser->ShowSettingDlg();
|
HGResult ret = m_devUser->ShowSettingDlg();
|
||||||
|
if (HGBASE_ERR_OK != ret)
|
||||||
|
{
|
||||||
|
m_dsEnabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
bool deviceIsOnline = true;
|
bool deviceIsOnline = true;
|
||||||
bool openSucceed = true;
|
bool openSucceed = true;
|
||||||
|
|
||||||
|
@ -4263,6 +4279,7 @@ void MainWindow::deleteDevUser()
|
||||||
disconnect(m_devUser, SIGNAL(abnormalImage(void*,HGUInt*)), this, SLOT(on_abnormalImage(void*,HGUInt*)));
|
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(scanWorkingEvent()), this, SLOT(on_scanWorkingEvent()));
|
||||||
disconnect(m_devUser, SIGNAL(scanFinishEvent()), this, SLOT(on_scanFinishEvent()));
|
disconnect(m_devUser, SIGNAL(scanFinishEvent()), this, SLOT(on_scanFinishEvent()));
|
||||||
|
disconnect(m_devUser, SIGNAL(closeDSReq()), this, SLOT(on_closeDSReq()));
|
||||||
m_devUser->Logout();
|
m_devUser->Logout();
|
||||||
delete m_devUser;
|
delete m_devUser;
|
||||||
m_devUser = nullptr;
|
m_devUser = nullptr;
|
||||||
|
@ -4526,6 +4543,7 @@ void MainWindow::on_act_selectDevice_triggered()
|
||||||
disconnect(m_devUser, SIGNAL(abnormalImage(void*,HGUInt*)), this, SLOT(on_abnormalImage(void*,HGUInt*)));
|
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(scanWorkingEvent()), this, SLOT(on_scanWorkingEvent()));
|
||||||
disconnect(m_devUser, SIGNAL(scanFinishEvent()), this, SLOT(on_scanFinishEvent()));
|
disconnect(m_devUser, SIGNAL(scanFinishEvent()), this, SLOT(on_scanFinishEvent()));
|
||||||
|
disconnect(m_devUser, SIGNAL(closeDSReq()), this, SLOT(on_closeDSReq()));
|
||||||
m_devUser->Logout();
|
m_devUser->Logout();
|
||||||
delete m_devUser;
|
delete m_devUser;
|
||||||
m_devUser = nullptr;
|
m_devUser = nullptr;
|
||||||
|
@ -4548,6 +4566,7 @@ void MainWindow::on_act_selectDevice_triggered()
|
||||||
connect(m_devUser, SIGNAL(abnormalImage(void*,HGUInt*)), this, SLOT(on_abnormalImage(void*,HGUInt*)), Qt::BlockingQueuedConnection);
|
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(scanWorkingEvent()), this, SLOT(on_scanWorkingEvent()), Qt::QueuedConnection);
|
||||||
connect(m_devUser, SIGNAL(scanFinishEvent()), this, SLOT(on_scanFinishEvent()), Qt::QueuedConnection);
|
connect(m_devUser, SIGNAL(scanFinishEvent()), this, SLOT(on_scanFinishEvent()), Qt::QueuedConnection);
|
||||||
|
connect(m_devUser, SIGNAL(closeDSReq()), this, SLOT(on_closeDSReq()), Qt::QueuedConnection);
|
||||||
#if !defined(HG_CMP_MSC)
|
#if !defined(HG_CMP_MSC)
|
||||||
checkRollerLife();
|
checkRollerLife();
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -146,6 +146,7 @@ private slots:
|
||||||
void on_abnormalImage(void *image, HGUInt *result);
|
void on_abnormalImage(void *image, HGUInt *result);
|
||||||
void on_scanFinishEvent();
|
void on_scanFinishEvent();
|
||||||
void on_scanWorkingEvent();
|
void on_scanWorkingEvent();
|
||||||
|
void on_closeDSReq();
|
||||||
void on_m_pbtn_push_clicked();
|
void on_m_pbtn_push_clicked();
|
||||||
void on_dialog_sideBar_applyToImage(HGImage img, int brightness, int contrast, double gamma, bool enhanceText);
|
void on_dialog_sideBar_applyToImage(HGImage img, int brightness, int contrast, double gamma, bool enhanceText);
|
||||||
void on_dialog_sideBar_finish(bool ok);
|
void on_dialog_sideBar_finish(bool ok);
|
||||||
|
@ -277,6 +278,7 @@ private:
|
||||||
bool m_canClose;
|
bool m_canClose;
|
||||||
DeviceUserMgr *m_devUserMgr;
|
DeviceUserMgr *m_devUserMgr;
|
||||||
DeviceUser *m_devUser;
|
DeviceUser *m_devUser;
|
||||||
|
bool m_dsEnabled;
|
||||||
QAction *m_act_acquireInto2;
|
QAction *m_act_acquireInto2;
|
||||||
QComboBox *m_cbtn_acquireIntoCfg;
|
QComboBox *m_cbtn_acquireIntoCfg;
|
||||||
QString m_currLang;
|
QString m_currLang;
|
||||||
|
|
|
@ -37,6 +37,7 @@ typedef struct
|
||||||
|
|
||||||
#define HGTWAIN_EVENT_TYPE_WORKING 1L
|
#define HGTWAIN_EVENT_TYPE_WORKING 1L
|
||||||
#define HGTWAIN_EVENT_TYPE_SCANFINISHED 2L
|
#define HGTWAIN_EVENT_TYPE_SCANFINISHED 2L
|
||||||
|
#define HGTWAIN_EVENT_TYPE_CLOSEDSREQ 3L
|
||||||
|
|
||||||
#define HGTWAIN_IMAGE_TYPE_NORMAL 0L
|
#define HGTWAIN_IMAGE_TYPE_NORMAL 0L
|
||||||
|
|
||||||
|
|
|
@ -298,7 +298,11 @@ LRESULT CALLBACK HGTwainDSMImpl::NewWndProc(HWND hWnd, UINT msg, WPARAM wParam,
|
||||||
}
|
}
|
||||||
else if (MSG_CLOSEDSREQ == twEvent.TWMessage)
|
else if (MSG_CLOSEDSREQ == twEvent.TWMessage)
|
||||||
{
|
{
|
||||||
p->m_listDSImpl[i]->Disable();
|
if (p->m_listDSImpl[i]->m_eventFunc)
|
||||||
|
{
|
||||||
|
p->m_listDSImpl[i]->m_eventFunc((HGTwainDS)p->m_listDSImpl[i],
|
||||||
|
HGTWAIN_EVENT_TYPE_CLOSEDSREQ, p->m_listDSImpl[i]->m_eventParam);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue