diff --git a/app/scanner/config.cpp b/app/scanner/config.cpp index a97869ba..36126631 100644 --- a/app/scanner/config.cpp +++ b/app/scanner/config.cpp @@ -13,7 +13,165 @@ #include #include "base/HGUtility.h" +struct +{ + + const char* name; + + const char* title; + +}g_opts[] = { {SANE_STD_OPT_NAME_RESTORE , OPTION_TITLE_HFMRSZ} + +, {SANE_STD_OPT_NAME_HELP , OPTION_TITLE_BZ} + +, {SANE_STD_OPT_NAME_IS_MULTI_OUT , OPTION_TITLE_DLSC} + +, {SANE_STD_OPT_NAME_MULTI_OUT_TYPE , OPTION_TITLE_DLSCLX} + +, {SANE_STD_OPT_NAME_COLOR_MODE , OPTION_TITLE_YSMS} + +, {SANE_STD_OPT_NAME_BINARY_THRESHOLD , OPTION_TITLE_HBTXYZ} + +, {SANE_STD_OPT_NAME_REVERSE_01 , OPTION_TITLE_HBTXFSSC} + +, {SANE_STD_OPT_NAME_FILTER , OPTION_TITLE_HDHHBTX_CSYZQ} + +, {SANE_STD_OPT_NAME_RID_MULTIOUT_RED , OPTION_TITLE_24WCSTX_DLSCCH} + +, {SANE_STD_OPT_NAME_RID_ANSWER_SHEET_RED , OPTION_TITLE_24WCSTX_DTKCH} + +, {SANE_STD_OPT_NAME_ERASE_BACKGROUND , OPTION_TITLE_BJYC} + +, {SANE_STD_OPT_NAME_BKG_COLOR_RANGE , OPTION_TITLE_BJSCFDFW} + +, {SANE_STD_OPT_NAME_SHARPEN , OPTION_TITLE_RHYMH} + +, {SANE_STD_OPT_NAME_RID_MORR , OPTION_TITLE_QCMW} + +, {SANE_STD_OPT_NAME_RID_GRID , OPTION_TITLE_CWW} + +, {SANE_STD_OPT_NAME_ERROR_EXTENSION , OPTION_TITLE_CWKS} + +, {SANE_STD_OPT_NAME_NOISE_OPTIMIZE , OPTION_TITLE_HBTXZDYH} + +, {SANE_STD_OPT_NAME_NOISE_SIZE , OPTION_TITLE_ZDYHCC} + +, {SANE_STD_OPT_NAME_PAPER , OPTION_TITLE_ZZCC} + +, {SANE_STD_OPT_NAME_CUSTOM_AREA , OPTION_TITLE_ZDYSMQY} + +, {SANE_STD_OPT_NAME_CUSTOM_AREA_LEFT , OPTION_TITLE_SMQYZCmm} + +, {SANE_STD_OPT_NAME_CUSTOM_AREA_RIGHT , OPTION_TITLE_SMQYYCmm} + +, {SANE_STD_OPT_NAME_CUSTOM_AREA_TOP , OPTION_TITLE_SMQYSCmm} + +, {SANE_STD_OPT_NAME_CUSTOM_AREA_BOTTOM , OPTION_TITLE_SMQYXCmm} + +, {SANE_STD_OPT_NAME_SIZE_CHECK , OPTION_TITLE_CCJC} + +, {SANE_STD_OPT_NAME_PAGE , OPTION_TITLE_SMYM} + +, {SANE_STD_OPT_NAME_DISCARD_BLANK_SENS , OPTION_TITLE_TGKBYLMD} + +, {SANE_STD_OPT_NAME_RESOLUTION , OPTION_TITLE_FBL} + +, {SANE_STD_OPT_NAME_TIME_TO_SLEEP , OPTION_TITLE_XMSJ} + +, {SANE_STD_OPT_NAME_IMAGE_QUALITY , OPTION_TITLE_HZ} + +, {SANE_STD_OPT_NAME_EXCHANGE ,OPTION_TITLE_JHZFM} + +, {SANE_STD_OPT_NAME_SPLIT ,OPTION_TITLE_TXCF } + +, {SANE_STD_OPT_NAME_ANTI_SKEW , OPTION_TITLE_ZDJP} + +, {SANE_STD_OPT_NAME_IS_CUSTOM_GAMMA , OPTION_TITLE_QYSDQX} + +, {SANE_STD_OPT_NAME_GAMMA , OPTION_TITLE_JMZ} + +, {SANE_STD_OPT_NAME_BRIGHTNESS , OPTION_TITLE_LDZ} + +, {SANE_STD_OPT_NAME_CONTRAST , OPTION_TITLE_DBD} + +, {SANE_STD_OPT_NAME_IS_PHOTO_MODE , OPTION_TITLE_ZPMS} + +, {SANE_STD_OPT_NAME_ERASE_BLACK_FRAME , OPTION_TITLE_XCHK} + +, {SANE_STD_OPT_NAME_DARK_SAMPLE , OPTION_TITLE_SSYZ} + +, {SANE_STD_OPT_NAME_THRESHOLD , OPTION_TITLE_YZ} + +, {SANE_STD_OPT_NAME_ANTI_NOISE_LEVEL , OPTION_TITLE_BJKZDJ} + +, {SANE_STD_OPT_NAME_MARGIN , OPTION_TITLE_BYSJ} + +, {SANE_STD_OPT_NAME_FILL_BKG_MODE , OPTION_TITLE_BJTCFS} + +, {SANE_STD_OPT_NAME_IS_ANTI_PERMEATE , OPTION_TITLE_FZST} + +, {SANE_STD_OPT_NAME_ANTI_PERMEATE_LEVEL , OPTION_TITLE_FZSTDJ} + +, {SANE_STD_OPT_NAME_RID_HOLE_L , OPTION_TITLE_CKYCZC} + +, {SANE_STD_OPT_NAME_SEARCH_HOLE_RANGE_L , OPTION_TITLE_ZCCKSSFWZFMBL} + +, {SANE_STD_OPT_NAME_RID_HOLE_R , OPTION_TITLE_CKYCYC} + +, {SANE_STD_OPT_NAME_SEARCH_HOLE_RANGE_R , OPTION_TITLE_YCCKSSFWZFMBL} + +, {SANE_STD_OPT_NAME_RID_HOLE_T , OPTION_TITLE_CKYCSC} + +, {SANE_STD_OPT_NAME_SEARCH_HOLE_RANGE_T , OPTION_TITLE_SCCKSSFWZFMBL} + +, {SANE_STD_OPT_NAME_RID_HOLE_B , OPTION_TITLE_CKYCXC} + +, {SANE_STD_OPT_NAME_SEARCH_HOLE_RANGE_B , OPTION_TITLE_XCCKSSFWZFMBL} + +, {SANE_STD_OPT_NAME_IS_FILL_COLOR , OPTION_TITLE_SCTC} + +, {SANE_STD_OPT_NAME_IS_ULTROSONIC_CHECK , OPTION_TITLE_CSBJC} + +, {SANE_STD_OPT_NAME_DOUBLE_FEED_HANDLE , OPTION_TITLE_SZTPCL} + +, {SANE_STD_OPT_NAME_IS_CHECK_STAPLE , OPTION_TITLE_ZDJC} + +, {SANE_STD_OPT_NAME_SCAN_MODE , OPTION_TITLE_SMZS} + +, {SANE_STD_OPT_NAME_SCAN_COUNT , OPTION_TITLE_SMSL} + +, {SANE_STD_OPT_NAME_TEXT_DIRECTION , OPTION_TITLE_WGFX} + +, {SANE_STD_OPT_NAME_IS_ROTATE_BKG_180 , OPTION_TITLE_BMXZ180} + +, {SANE_STD_OPT_NAME_IS_CHECK_DOG_EAR , OPTION_TITLE_ZJJC} + +, {SANE_STD_OPT_NAME_DOG_EAR_SIZE , OPTION_TITLE_ZJDX} + +, {SANE_STD_OPT_NAME_IS_CHECK_ASKEW , OPTION_TITLE_WXJC} + +, {SANE_STD_OPT_NAME_ASKEW_RANGE , OPTION_TITLE_WXRRD} + +, {SANE_STD_OPT_NAME_FEED_STRENGTH , OPTION_TITLE_FZQD} + +, {SANE_STD_OPT_NAME_IS_AUTO_FEED_STRENGTH , OPTION_TITLE_ZDFZQD} + +, {SANE_STD_OPT_NAME_FEED_STRENGTH_VALUE , OPTION_TITLE_JZSBL} + +, {SANE_STD_OPT_NAME_WAIT_TO_SCAN , OPTION_TITLE_DZSM} + +}, + +g_discard[] = { {SANE_STD_OPT_NAME_REVERSE_01 , "\351\273\221\347\231\275\345\233\276\345\203\217\345\217\215\350\211\262\350\276\223\345\207\272\357\274\210\346\255\243\345\270\270\351\242\234\350\211\262\344\270\272\357\274\2320-\351\273\221\350\211\262\357\274\2331-\347\231\275\350\211\262\357\274\211"} // 黑白图像反色输出(正常颜色为:0-黑色;1-白色) + +, {SANE_STD_OPT_NAME_FILTER , "\347\201\260\345\272\246\346\210\226\351\273\221\347\231\275\345\233\276\345\203\217 - \351\231\244\350\211\262"} // 灰度或黑白图像 - 除色 + +, {SANE_STD_OPT_NAME_IS_AUTO_FEED_STRENGTH , "\350\207\252\345\212\250\346\220\223\347\272\270\345\274\272\345\272\246"} // 自动搓纸强度 + +, {SANE_STD_OPT_NAME_FEED_STRENGTH_VALUE , "\346\220\223\347\272\270\351\230\210\345\200\274"} // " 搓纸阈值" + +}; config::config() : ini_(NULL), file_(""), schem_jsn_(NULL) { } @@ -302,6 +460,17 @@ void config::load_all_scanner_configs(std::vector& cfgs) cfgs.push_back(cfg); } } +void transfer_name_from_cn_title_2_en_name(std::string& name) +{ + int size = sizeof(g_opts) / sizeof(g_opts[0]); + for (size_t i = 0; i < size; i++) + { + if (strcmp(name.c_str(), g_opts[i].title) == 0) + { + name = g_opts[i].name; + } + } +} void config::load_scanner_configs(QString dev_name, DEVCFG* cfg) { std::string name(config::device_to_config_dev_name(dev_name)), cont(""); @@ -355,10 +524,9 @@ void config::load_scanner_configs(QString dev_name, DEVCFG* cfg) if(!item.attach_text(&cont[0])) continue; - if(item.get_value("name", val.name) && - // item.get_value("type", val.type) && - item.get_value("value", val.val)) + if(item.get_value("name", val.name) && item.get_value("value", val.val)) { + transfer_name_from_cn_title_2_en_name(val.name); // chinese title to english name item.get_value("extra", val.extra); scheme.opts.push_back(val); } diff --git a/app/scanner/hg_settingdialog.cpp b/app/scanner/hg_settingdialog.cpp index 9694ba4d..ed1029df 100644 --- a/app/scanner/hg_settingdialog.cpp +++ b/app/scanner/hg_settingdialog.cpp @@ -310,7 +310,7 @@ void hg_settingdialog::createUI() if(opt == nullptr) continue; if(schemes_ && cur_ind_ != -1) - ind = find_opt_setting(opt->title, schemes_->schemes[scheme].opts); + ind = find_opt_setting(opt->name, schemes_->schemes[scheme].opts); init.opt = i + 1; h = nullptr; switch (opt->type) @@ -1802,7 +1802,7 @@ void hg_settingdialog::save_scheme(void) // bool existing = false; - ov.name = opt->title; + ov.name = opt->name; // for(size_t i = 0; i < src.opts.size(); ++i) // { // if(ov == src.opts[i]) @@ -1875,7 +1875,6 @@ void hg_settingdialog::save_scheme(void) { bool overwrite = true, ask = true; std::vector::iterator it2 = std::find(src.opts.begin(), src.opts.end(), SANE_STD_OPT_NAME_IS_CUSTOM_GAMMA); - if(save_gamma && it2 != src.opts.end()) { OPTVAL v1(*it1), v2(*it2); @@ -2079,7 +2078,7 @@ int hg_settingdialog::apply_settings(OPTSCHEME* scheme) desc->type == SANE_TYPE_BUTTON) continue; - int opt = find_opt_setting(desc->title, scheme->opts); + int opt = find_opt_setting(desc->name, scheme->opts); if(opt == -1) continue; @@ -2128,7 +2127,18 @@ void hg_settingdialog::on_current_scheme_changed() const std::vector& opts = schemes_->schemes[id + 1].opts; for(size_t i = 0; i < opts.size(); ++i) { - info += tr("
") + QString::fromStdString(opts[i].name) + tr(":
"); + QString title; + for (int ii = 0; ii < m_list_defaultOptions.size(); ii++) + { + const SANE_Option_Descriptor* opt = reinterpret_cast(m_list_defaultOptions.at(ii).first); + if(strcmp(opt->name, opts[i].name.c_str()) == 0) + { + title = opt->title; + break; + } + } + + info += tr("
") + title + tr(":
"); info += tr("

") + QString::fromStdString(opts[i].val) + tr("

"); } } diff --git a/app/scanner/sane_device.cpp b/app/scanner/sane_device.cpp index 71b2ab8a..041de336 100644 --- a/app/scanner/sane_device.cpp +++ b/app/scanner/sane_device.cpp @@ -51,7 +51,7 @@ sane_dev::act_result sane_dev::apply(const SANE_Option_Descriptor* desc, int opt for(size_t i = 0; i < vals.size(); ++i) { - if(vals[i].name == desc->title) + if(vals[i].name == desc->name) { cfg = &vals[i]; break;