From 6d4525094698605101f456c0d13aa8c1cdc25996 Mon Sep 17 00:00:00 2001 From: yangjiaxuan <171295266@qq.com> Date: Thu, 13 Oct 2022 15:45:19 +0800 Subject: [PATCH] =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=86=99=E5=85=A5=E5=BD=93=E5=89=8Dapp=E7=89=88?= =?UTF-8?q?=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/scanner/config.cpp | 1 + app/scanner/config.h | 1 + app/scanner/hg_settingdialog.cpp | 21 +++++++++++++++++++++ app/scanner/hg_settingdialog.h | 1 + 4 files changed, 24 insertions(+) diff --git a/app/scanner/config.cpp b/app/scanner/config.cpp index 36126631..711c8666 100644 --- a/app/scanner/config.cpp +++ b/app/scanner/config.cpp @@ -561,6 +561,7 @@ int config::save_scanner_configs(const DEVCFG* cfg) child->create_empty(true); scheme = new gb::json(); scheme->set_value("cur_sel", cfg->cur_scheme); + scheme->set_value("version", cfg->appVersionNum); child->set_value(NULL, scheme); delete scheme; for(size_t i = 0; i < cfg->schemes.size(); ++i) diff --git a/app/scanner/config.h b/app/scanner/config.h index f8860b90..725b8322 100644 --- a/app/scanner/config.h +++ b/app/scanner/config.h @@ -67,6 +67,7 @@ typedef struct _dev_configs { std::string name; // device name int cur_scheme; // -1 is none user scheme applied, and points to the default setting which at first in 'schemes' + std::string appVersionNum; std::vector schemes; // NOTE: the first is always the default setting, and (cur_scheme + 1) is the user customizing setting, -1 is the default setting bool operator==(const std::string& n) { diff --git a/app/scanner/hg_settingdialog.cpp b/app/scanner/hg_settingdialog.cpp index eb90c707..13cf6ffd 100644 --- a/app/scanner/hg_settingdialog.cpp +++ b/app/scanner/hg_settingdialog.cpp @@ -43,6 +43,7 @@ hg_settingdialog::hg_settingdialog(void *handle, QWidget *parent m_handle = handle; initUi(); on_select_scheme(cur_ind_, false); + getAppVersion(); } hg_settingdialog::~hg_settingdialog() @@ -2109,6 +2110,26 @@ void hg_settingdialog::record_changed_option(int opt, const QVariant& var) it->val = var; } +void hg_settingdialog::getAppVersion() +{ + SANE_About *about = nullptr; + unsigned int len = 0; + std::string versionNum; + if (sane_io_control(m_handle, IO_CTRL_CODE_ABOUT_INFO, about, &len) == SANE_STATUS_NO_MEM) + { + about = (SANE_About*)malloc(len + 128); + if (about) + { + memset(about, 0, len + 128); + if (sane_io_control(m_handle, IO_CTRL_CODE_ABOUT_INFO, about, &len) == SANE_STATUS_GOOD) + { + versionNum = about->version; + schemes_->appVersionNum = versionNum; + } + } + } +} + void hg_settingdialog::on_current_scheme_changed() { QString scheme(comb_->currentText()); diff --git a/app/scanner/hg_settingdialog.h b/app/scanner/hg_settingdialog.h index a1ed4e45..e6fcebf4 100644 --- a/app/scanner/hg_settingdialog.h +++ b/app/scanner/hg_settingdialog.h @@ -99,6 +99,7 @@ private: int apply_setting(const SANE_Option_Descriptor* desc, int opt_ind, OPTVAL* val); int apply_settings(OPTSCHEME* scheme); void record_changed_option(int opt, const QVariant& var); + void getAppVersion(); private: QVector, QString>> m_list_IdValueTitle;