From 230370acd57e3dc370ccd4bb7b73bdaf8ffcd27e Mon Sep 17 00:00:00 2001 From: yangjiaxuan <171295266@qq.com> Date: Thu, 9 Nov 2023 14:57:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=AB=E6=8F=8F=E5=8F=96=E6=B6=88=E4=BB=8E?= =?UTF-8?q?=E7=95=8C=E9=9D=A2=E7=BA=BF=E7=A8=8B=E5=88=86=E7=A6=BB=EF=BC=8C?= =?UTF-8?q?=E5=8D=95=E7=8B=AC=E5=88=9B=E5=BB=BA=E7=BA=BF=E7=A8=8B=EF=BC=8C?= =?UTF-8?q?=E9=98=B2=E6=AD=A2=E7=95=8C=E9=9D=A2=E5=8D=A1=E6=AD=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/twainui/dialog_progress_ui.cpp | 17 ++++++++++++++++- modules/twainui/dialog_progress_ui.h | 2 ++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/modules/twainui/dialog_progress_ui.cpp b/modules/twainui/dialog_progress_ui.cpp index 57a5798e..8a3403c3 100644 --- a/modules/twainui/dialog_progress_ui.cpp +++ b/modules/twainui/dialog_progress_ui.cpp @@ -15,6 +15,7 @@ Dialog_progress_ui::Dialog_progress_ui(class Manager *mgr, std::functionsetupUi(this); @@ -49,6 +50,10 @@ Dialog_progress_ui::~Dialog_progress_ui() { HGBase_CloseThread(m_thread); m_thread = nullptr; + + HGBase_CloseThread(m_thread_cancelScan); + m_thread_cancelScan = nullptr; + m_mgr->m_progressUi = nullptr; delete ui; @@ -73,7 +78,10 @@ void Dialog_progress_ui::closeEvent(QCloseEvent* e) void Dialog_progress_ui::on_pbtn_cancelScan_clicked() { if (!quit_) - m_callback(UI_RESULT_CLOSE_CANCEL); + { + HGBase_OpenThread(CancelScanThreadFunc, this, &m_thread_cancelScan); + } + ui->pbtn_cancelScan->setVisible(false); ui->label->setText(tr("stop scanning")); } @@ -137,6 +145,13 @@ void HGAPI Dialog_progress_ui::ThreadFunc(HGThread thread, HGPointer param) p->m_callback(UI_RESULT_CLOSE_NORMAL); } +void HGAPI Dialog_progress_ui::CancelScanThreadFunc(HGThread thread, HGPointer param) +{ + Dialog_progress_ui* p = (Dialog_progress_ui*)param; + if (p->m_callback) + p->m_callback(UI_RESULT_CLOSE_CANCEL); +} + void Dialog_progress_ui::FuncNotify(int event, void *msg, int flag) { Dialog_progress_ui *p = (Dialog_progress_ui *)g_manager->m_progressUi; diff --git a/modules/twainui/dialog_progress_ui.h b/modules/twainui/dialog_progress_ui.h index b8dd5c6b..d0cec98f 100644 --- a/modules/twainui/dialog_progress_ui.h +++ b/modules/twainui/dialog_progress_ui.h @@ -39,6 +39,7 @@ private slots: public: static void HGAPI ThreadFunc(HGThread thread, HGPointer param); + static void HGAPI CancelScanThreadFunc(HGThread thread, HGPointer param); static void FuncNotify(int event, void *msg, int flag); void clear_callback(void) { @@ -56,6 +57,7 @@ private: QTimer *m_timer; bool m_isScanning; HGThread m_thread; + HGThread m_thread_cancelScan; }; #endif // DIALOG_PROGRESS_UI_H