diff --git a/modules/twainui/hg_settingdialog.cpp b/modules/twainui/hg_settingdialog.cpp index 78f5fa4b..a2ed3119 100644 --- a/modules/twainui/hg_settingdialog.cpp +++ b/modules/twainui/hg_settingdialog.cpp @@ -38,6 +38,7 @@ hg_settingdialog::hg_settingdialog(class Manager *mgr, SANE_Handle handle, const , cur_cfg_(cfg) , m_isMultiOutMode(false) , m_isScanning(false) + , m_isAutoFinish(false) { m_mgr = mgr; @@ -95,8 +96,14 @@ hg_settingdialog::~hg_settingdialog() //cur_cfg_->release(); m_mgr->m_settingUi = NULL; - if(!quit_) + if (m_isAutoFinish) + { + m_callback(UI_RESULT_CLOSE_NORMAL); + } + else if (!quit_) + { m_callback(UI_RESULT_CLOSE_SETTING); + } } void hg_settingdialog::apply_scheme(SANE_Handle dev, LPSANEAPI api, gb::sane_config_schm* schm) @@ -1210,16 +1217,22 @@ void hg_settingdialog::updateUIStatus() } } -void hg_settingdialog::on_scan_status(QString info, bool status) +void hg_settingdialog::on_scan_status(QString info, bool isScanning) { if (!info.isEmpty()) { QMessageBox::information(this, tr("Prompt"), info); } - m_isScanning = status; - this->setEnabled(!status); - setAttribute(Qt::WA_DeleteOnClose, !status); + m_isScanning = isScanning; + this->setEnabled(!isScanning); + setAttribute(Qt::WA_DeleteOnClose, !isScanning); + + if (!isScanning) + { + m_isAutoFinish = true; + close(); + } } void hg_settingdialog::slot_checkedClicked() diff --git a/modules/twainui/hg_settingdialog.h b/modules/twainui/hg_settingdialog.h index b70de800..4b3efa8f 100644 --- a/modules/twainui/hg_settingdialog.h +++ b/modules/twainui/hg_settingdialog.h @@ -137,10 +137,10 @@ private: QVector m_list_widgets; signals: - void scan_status(QString info, bool status); + void scan_status(QString info, bool isScanning); private slots: - void on_scan_status(QString info, bool status); + void on_scan_status(QString info, bool isScanning); private slots: void slot_checkedClicked(); @@ -187,6 +187,7 @@ private: bool m_isRefreshUi; bool m_isMultiOutMode; bool m_isScanning; + bool m_isAutoFinish; }; #endif // HG_SETTING_DIALOG_H