From c32f42c3c699a211ec5518892e5149d53e651154 Mon Sep 17 00:00:00 2001 From: yangjiaxuan <171295266@qq.com> Date: Thu, 4 May 2023 18:14:06 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=B8=89=E6=96=B9twain?= =?UTF-8?q?=E7=95=8C=E9=9D=A2=E5=8F=82=E6=95=B0=E9=85=8D=E7=BD=AE=E5=86=B2?= =?UTF-8?q?=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/twainui/device_menu.h | 8 +++++--- modules/twainui/dialog_progress_ui.cpp | 5 ++++- modules/twainui/hg_settingdialog.cpp | 10 ++++++---- modules/twainui/twainui.cpp | 2 +- 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/modules/twainui/device_menu.h b/modules/twainui/device_menu.h index bab55cae..1939b2d6 100644 --- a/modules/twainui/device_menu.h +++ b/modules/twainui/device_menu.h @@ -1,4 +1,4 @@ -#ifndef DEVICE_MENU_H +#ifndef DEVICE_MENU_H #define DEVICE_MENU_H #include @@ -354,11 +354,13 @@ public: { return applied_scheme_; } - int open_scanner(const SANEAPI* saneAPI, SANE_Handle handle, const char* scanner_name, const char* scheme = nullptr) + int open_scanner(const SANEAPI* saneAPI, SANE_Handle handle, const char* scanner_name, bool apply, const char* scheme = nullptr) { handle_ = handle; opened_scanner_ = scanner_name; - apply_scheme(saneAPI, scheme); + if (apply) + apply_scheme(saneAPI, scheme); + return SANE_STATUS_GOOD; } int close_scanner(void) diff --git a/modules/twainui/dialog_progress_ui.cpp b/modules/twainui/dialog_progress_ui.cpp index 408dff0c..7a0c272d 100644 --- a/modules/twainui/dialog_progress_ui.cpp +++ b/modules/twainui/dialog_progress_ui.cpp @@ -83,9 +83,12 @@ void Dialog_progress_ui::FuncNotify(int event, void *msg, int flag) case SANE_EVENT_SCAN_FINISHED: { + if (!flag) + { + emit p->scan_finish(); + } QString finishInfo((char*)msg); emit p->scan_status(finishInfo, false); - emit p->scan_finish(); } break; } diff --git a/modules/twainui/hg_settingdialog.cpp b/modules/twainui/hg_settingdialog.cpp index 5c9d03ef..f06c206b 100644 --- a/modules/twainui/hg_settingdialog.cpp +++ b/modules/twainui/hg_settingdialog.cpp @@ -21,6 +21,8 @@ hg_settingdialog::hg_settingdialog(SANE_Handle handle, const SANEAPI* saneApi, b , save_(false) , btn_cut_area_(nullptr), btn_gamma_(nullptr), clicked_gamma_(false) , custom_area_lable_(nullptr), comb_(nullptr) + , m_devHandle(handle) + , m_showScan(showScan) { HGChar cfgpath[512] = {0}; QString old; @@ -32,8 +34,8 @@ hg_settingdialog::hg_settingdialog(SANE_Handle handle, const SANEAPI* saneApi, b dev_que::update_old_cfg(old.toStdString().c_str()); dev_que_.add_scanner(devName); - dev_que_.open_scanner(saneApi, handle, devName); - + dev_que_.open_scanner(saneApi, handle, devName, false); + std::string n(dev_que_.opened_scanner_name()); for(int i = 0; i < dev_que_.scanners(); ++i) { @@ -44,6 +46,7 @@ hg_settingdialog::hg_settingdialog(SANE_Handle handle, const SANEAPI* saneApi, b break; } } + cur_scheme_ = cur_cfg_->get_scheme(); if(!cur_scheme_) cur_scheme_ = new gb::sane_config_schm(); @@ -71,8 +74,6 @@ hg_settingdialog::hg_settingdialog(SANE_Handle handle, const SANEAPI* saneApi, b m_gammaData.table[i] = i & 0x0ff; memcpy(&m_saneAPI, saneApi, sizeof(SANEAPI)); - m_devHandle = handle; - m_showScan = showScan; m_closeButton = closeButtonCancel; initUi(); @@ -166,6 +167,7 @@ void hg_settingdialog::updateOpt() char *init = (char*)malloc(opt->size * 2 + 4); m_saneAPI.sane_control_option_api(m_devHandle, i, SANE_ACTION_GET_VALUE, init, &method); + QString str = QString::fromStdString(init); m_list_defaultOptions.append(QPair(opt, QVariant(QString::fromStdString(init)))); if(first) diff --git a/modules/twainui/twainui.cpp b/modules/twainui/twainui.cpp index 4aacc6b8..37a9a415 100644 --- a/modules/twainui/twainui.cpp +++ b/modules/twainui/twainui.cpp @@ -53,7 +53,7 @@ char *apply_current_config(const char *dev_name, SANE_Handle device, LPSANEAPI a dev_que::update_old_cfg(old.toStdString().c_str()); devQue.add_scanner(dev_name); - devQue.open_scanner(api, device, dev_name); + devQue.open_scanner(api, device, dev_name, true); std::string n(devQue.opened_scanner_name()); for(int i = 0; i < devQue.scanners(); ++i)