调整删除父依赖项导致子依赖项不出现的问题

This commit is contained in:
13038267101 2023-07-10 18:06:17 +08:00
parent 1c30e8bf3a
commit 17369825ff
2 changed files with 68 additions and 2 deletions

View File

@ -1366,6 +1366,7 @@ int hg_scanner::set_color_change(void)
} }
bool hg_scanner::jsn_reorganize() bool hg_scanner::jsn_reorganize()
{ {
string str; string str;
int len = setting_jsn_.at(SANE_STD_OPT_NAME_PAPER).at("range").size(); int len = setting_jsn_.at(SANE_STD_OPT_NAME_PAPER).at("range").size();
int max_papers[] = { PAPER_MAX_SIZE, PAPER_MAX_SIZE_CLIP, PAPER_TRIGEMINY }; int max_papers[] = { PAPER_MAX_SIZE, PAPER_MAX_SIZE_CLIP, PAPER_TRIGEMINY };
@ -1386,11 +1387,14 @@ bool hg_scanner::jsn_reorganize()
if (!firmware_sup_wait_paper_ && pid_ == 0x239) if (!firmware_sup_wait_paper_ && pid_ == 0x239)
{ {
erase_option(SANE_STD_OPT_NAME_WAIT_TO_SCAN); erase_option(SANE_STD_OPT_NAME_WAIT_TO_SCAN);
erase_option(SANE_STD_OPT_NAME_WAIT_SCAN_EXIT);
} }
if (!firmware_sup_pick_strength_ && pid_ == 0x239) if (!firmware_sup_pick_strength_ && pid_ == 0x239)
{ {
erase_option(SANE_STD_OPT_NAME_IS_AUTO_FEED_STRENGTH); erase_option(SANE_STD_OPT_NAME_IS_AUTO_FEED_STRENGTH);
erase_option(SANE_STD_OPT_NAME_FEED_STRENGTH_VALUE);
erase_option(SANE_STD_OPT_NAME_FEED_STRENGTH); erase_option(SANE_STD_OPT_NAME_FEED_STRENGTH);
} }
if (!firmware_sup_color_fill_ && (pid_ == 0x239 || pid_ == 0x439)) if (!firmware_sup_color_fill_ && (pid_ == 0x239 || pid_ == 0x439))
{ {
@ -2832,6 +2836,66 @@ void hg_scanner::change_setting_language(bool init)
change_string_2_lang_id(v.c_str(), "desc"); change_string_2_lang_id(v.c_str(), "desc");
setting_jsn_.at(v.c_str()).at("type").get_to(val); setting_jsn_.at(v.c_str()).at("type").get_to(val);
string depend;
string depend_temp;
bool is_depend = false;
if (setting_jsn_.at(v.c_str()).contains("depend_or"))
{
int depend_size = setting_jsn_.at(v.c_str()).at("depend_or").size();
int y = 0;
while (y < depend_size)
{
setting_jsn_.at(v.c_str()).at("depend_or").at(y).get_to(depend);
for (size_t k = 0; k < erase_depend_.size(); k++)
{
if (depend.find(erase_depend_[k]) != string::npos)
{
setting_jsn_.at(v.c_str()).at("depend_or").erase(y);
depend_temp = depend;
y--;
break;
}
else if (!depend_temp.empty() && !(depend[0] <= 'z' && depend[0] >= 'a'))
{
setting_jsn_.at(v.c_str()).at("depend_or").erase(y);
y--;
break;
}
}
depend_size = setting_jsn_.at(v.c_str()).at("depend_or").size();
y++;
}
}
else if (setting_jsn_.at(v.c_str()).contains("depend_and"))
{
int depend_size = setting_jsn_.at(v.c_str()).at("depend_and").size();
int y = 0;
while (y < depend_size)
{
setting_jsn_.at(v.c_str()).at("depend_and").at(y).get_to(depend);
for (size_t k = 0; k < erase_depend_.size(); k++)
{
if (depend.find(erase_depend_[k]) != string::npos)
{
setting_jsn_.at(v.c_str()).at("depend_and").erase(y);
depend_temp = depend;
y--;
break;
}
else if (!depend_temp.empty() && !(depend[0] <= 'z' && depend[0] >= 'a'))
{
setting_jsn_.at(v.c_str()).at("depend_and").erase(y);
y--;
break;
}
}
depend_size = setting_jsn_.at(v.c_str()).at("depend_and").size();
y++;
}
}
//if (v.compare(from_default_language(SANE_STD_OPT_NAME_TIME_TO_SLEEP)) == 0) //if (v.compare(from_default_language(SANE_STD_OPT_NAME_TIME_TO_SLEEP)) == 0)
//{ //{
// int val = 0; // int val = 0;
@ -2936,6 +3000,7 @@ void hg_scanner::change_setting_language(bool init)
} }
void hg_scanner::erase_option(const char* name) void hg_scanner::erase_option(const char* name)
{ {
erase_depend_.push_back(name);
setting_jsn_.erase(name); setting_jsn_.erase(name);
std::vector<std::string>::iterator it = std::find(jsn_children_.begin(), jsn_children_.end(), name); std::vector<std::string>::iterator it = std::find(jsn_children_.begin(), jsn_children_.end(), name);

View File

@ -293,6 +293,7 @@ protected:
bool cb_mem_; bool cb_mem_;
bool test_1_paper_; // 是否为单张扫描模式 bool test_1_paper_; // 是否为单张扫描模式
std::vector<std::string> jsn_children_; std::vector<std::string> jsn_children_;
std::vector<string> erase_depend_; //需要删除父依赖项
json setting_jsn_; json setting_jsn_;
IMGPRCFIXPARAM image_prc_param_; IMGPRCFIXPARAM image_prc_param_;