恢复语言设置功能
This commit is contained in:
parent
b928ad56dd
commit
f808870f42
|
@ -668,6 +668,7 @@ void hg_scanner::init_setting_func_map(void)
|
||||||
setting_map_[SANE_STD_OPT_NAME_ROLLER_COUNT] = &hg_scanner::setting_get_roller_count;
|
setting_map_[SANE_STD_OPT_NAME_ROLLER_COUNT] = &hg_scanner::setting_get_roller_count;
|
||||||
setting_map_[SANE_STD_OPT_NAME_TOTAL_COUNT] = &hg_scanner::setting_get_history_count;
|
setting_map_[SANE_STD_OPT_NAME_TOTAL_COUNT] = &hg_scanner::setting_get_history_count;
|
||||||
setting_map_[SANE_STD_OPT_NAME_GET_DEVS_L0G] = &hg_scanner::setting_get_devs_log;
|
setting_map_[SANE_STD_OPT_NAME_GET_DEVS_L0G] = &hg_scanner::setting_get_devs_log;
|
||||||
|
setting_map_[SANE_STD_OPT_NAME_LANGUAGE] = &hg_scanner::setting_set_language;
|
||||||
}
|
}
|
||||||
std::string hg_scanner::setting_name_from(const char* n_or_id, int* id)
|
std::string hg_scanner::setting_name_from(const char* n_or_id, int* id)
|
||||||
{
|
{
|
||||||
|
@ -2491,6 +2492,44 @@ int hg_scanner::setting_get_devs_log(void* data, long* len)
|
||||||
strcpy((char*)data, str.c_str());
|
strcpy((char*)data, str.c_str());
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
int hg_scanner::setting_set_language(void* data, long* len)
|
||||||
|
{
|
||||||
|
int err = SCANNER_ERR_OK;
|
||||||
|
LANATTR **pla = lang_get_supported_languages();
|
||||||
|
|
||||||
|
if (!pla)
|
||||||
|
err = SCANNER_ERR_DEVICE_NOT_SUPPORT;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
std::string n(to_default_language((char*)data, nullptr)), now("");
|
||||||
|
int id = -1, cur = lang_get_cur_code_page();
|
||||||
|
for (int i = 0; pla[i]; ++i)
|
||||||
|
{
|
||||||
|
if (pla[i]->cp == cur)
|
||||||
|
now = pla[i]->name;
|
||||||
|
if (n == pla[i]->name)
|
||||||
|
{
|
||||||
|
id = pla[i]->cp;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (id == -1)
|
||||||
|
{
|
||||||
|
err = SCANNER_ERR_INVALID_PARAMETER;
|
||||||
|
strcpy((char*)data, now.c_str());
|
||||||
|
}
|
||||||
|
else if(cur != id)
|
||||||
|
{
|
||||||
|
int lid = lang_get_string_id((char*)data, false);
|
||||||
|
err = SCANNER_ERR_CONFIGURATION_CHANGED;
|
||||||
|
setting_jsn_.at(SANE_STD_OPT_NAME_LANGUAGE).at("cur") = lid;
|
||||||
|
lang_set_code_page(id);
|
||||||
|
on_language_changed();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return err;
|
||||||
|
}
|
||||||
int hg_scanner::on_color_mode_changed(int& color_mode)
|
int hg_scanner::on_color_mode_changed(int& color_mode)
|
||||||
{
|
{
|
||||||
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
|
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
|
||||||
|
@ -2643,13 +2682,8 @@ SANE_Image_Statu hg_scanner::last_usb_image_statu(int err)
|
||||||
|
|
||||||
return statu;
|
return statu;
|
||||||
}
|
}
|
||||||
void hg_scanner::init_settings(const char* json_setting_text)
|
void hg_scanner::change_setting_language(bool init)
|
||||||
{
|
{
|
||||||
jsn_children_.clear();
|
|
||||||
setting_jsn_ = jsonconfig::load_json_from_text(json_setting_text, &jsn_children_);
|
|
||||||
|
|
||||||
VLOG_MINI_1(LOG_LEVEL_ALL, "Initialize %d settings ...\n", jsn_children_.size() - 1);
|
|
||||||
notify_setting_result_ = false;
|
|
||||||
for (size_t i = 1; i < jsn_children_.size(); ++i)
|
for (size_t i = 1; i < jsn_children_.size(); ++i)
|
||||||
{
|
{
|
||||||
std::string v(jsn_children_[i]);
|
std::string v(jsn_children_[i]);
|
||||||
|
@ -2663,24 +2697,43 @@ void hg_scanner::init_settings(const char* json_setting_text)
|
||||||
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);
|
||||||
|
if (v.compare(from_default_language(SANE_STD_OPT_NAME_TIME_TO_SLEEP)) == 0)
|
||||||
|
{
|
||||||
|
int val = 0;
|
||||||
|
get_sleep_time(val);
|
||||||
|
const char* p_time = NULL;
|
||||||
|
if (val == -1 || val > 20000)
|
||||||
|
p_time = /*from_default_language*/(OPTION_VALUE_XMSJ_BXM); // changed in 'if (val == "string")' branch.
|
||||||
|
else if (val > 0 && val <= 300)
|
||||||
|
p_time = /*from_default_language*/(OPTION_VALUE_XMSJ_WFZ);
|
||||||
|
else if (val > 300 && val <= 600)
|
||||||
|
p_time = /*from_default_language*/(OPTION_VALUE_XMSJ_SFZ);
|
||||||
|
else if (val > 600 && val <= 1800)
|
||||||
|
p_time = /*from_default_language*/(OPTION_VALUE_XMSJ_BXS);
|
||||||
|
else if (val > 1800 && val <= 3600)
|
||||||
|
p_time = /*from_default_language*/(OPTION_VALUE_XMSJ_YXS);
|
||||||
|
else if (val > 3600 && val <= 7200)
|
||||||
|
p_time = /*from_default_language*/(OPTION_VALUE_XMSJ_LXS);
|
||||||
|
else if (val > 7200 && val <= 14400)
|
||||||
|
p_time = /*from_default_language*/(OPTION_VALUE_XMSJ_SXS);
|
||||||
|
if (p_time)
|
||||||
|
setting_jsn_.at(from_default_language(SANE_STD_OPT_NAME_TIME_TO_SLEEP)).at("default") = p_time;
|
||||||
|
}
|
||||||
if (v.compare(from_default_language(SANE_STD_OPT_NAME_FEED_STRENGTH)) == 0)
|
if (v.compare(from_default_language(SANE_STD_OPT_NAME_FEED_STRENGTH)) == 0)
|
||||||
{
|
{
|
||||||
int val = 0;
|
int val = 0;
|
||||||
int ret = on_get_feedmode(val);
|
on_get_feedmode(val);
|
||||||
if (ret == SCANNER_ERR_OK)
|
|
||||||
{
|
|
||||||
const char* p_feed = NULL;
|
const char* p_feed = NULL;
|
||||||
if (val == 0)
|
if (val == 0)
|
||||||
p_feed = from_default_language(OPTION_VALUE_FZQD_R);
|
p_feed = /*from_default_language*/(OPTION_VALUE_FZQD_R);
|
||||||
else if (val == 1)
|
else if (val == 1)
|
||||||
p_feed = from_default_language(OPTION_VALUE_FZQD_YB);
|
p_feed = /*from_default_language*/(OPTION_VALUE_FZQD_YB);
|
||||||
else if (val == 2)
|
else if (val == 2)
|
||||||
p_feed = from_default_language(OPTION_VALUE_FZQD_Q);
|
p_feed = /*from_default_language*/(OPTION_VALUE_FZQD_Q);
|
||||||
|
|
||||||
if (p_feed)
|
if (p_feed)
|
||||||
setting_jsn_.at(from_default_language(SANE_STD_OPT_NAME_TIME_TO_SLEEP)).at("default") = p_feed;
|
setting_jsn_.at(from_default_language(SANE_STD_OPT_NAME_TIME_TO_SLEEP)).at("default") = p_feed;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (val == "string")
|
if (val == "string")
|
||||||
{
|
{
|
||||||
|
@ -2702,7 +2755,11 @@ void hg_scanner::init_settings(const char* json_setting_text)
|
||||||
setting_jsn_.at(v.c_str()).at("range")[i] = id;
|
setting_jsn_.at(v.c_str()).at("range")[i] = id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (v.compare(from_default_language(SANE_STD_OPT_NAME_LANGUAGE)) == 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (init)
|
||||||
|
{
|
||||||
val = get_setting_item_string(v.c_str(), "default");
|
val = get_setting_item_string(v.c_str(), "default");
|
||||||
|
|
||||||
char* buf = NULL;
|
char* buf = NULL;
|
||||||
|
@ -2715,7 +2772,10 @@ void hg_scanner::init_settings(const char* json_setting_text)
|
||||||
set_setting(v.c_str(), buf, &size);
|
set_setting(v.c_str(), buf, &size);
|
||||||
free(buf);
|
free(buf);
|
||||||
}
|
}
|
||||||
else if (val == "int")
|
}
|
||||||
|
else if (init)
|
||||||
|
{
|
||||||
|
if (val == "int")
|
||||||
{
|
{
|
||||||
int n = 0;
|
int n = 0;
|
||||||
long size = sizeof(n);
|
long size = sizeof(n);
|
||||||
|
@ -2737,6 +2797,36 @@ void hg_scanner::init_settings(const char* json_setting_text)
|
||||||
set_setting(v.c_str(), (char*)&b, &size);
|
set_setting(v.c_str(), (char*)&b, &size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void hg_scanner::init_settings(const char* json_setting_text)
|
||||||
|
{
|
||||||
|
const char* lang = language_option_descriptor();
|
||||||
|
bool empty = true;
|
||||||
|
|
||||||
|
if (lang && *lang)
|
||||||
|
{
|
||||||
|
std::string txt(json_setting_text);
|
||||||
|
size_t pos = txt.rfind('}');
|
||||||
|
if (pos != std::string::npos)
|
||||||
|
{
|
||||||
|
txt[pos] = ',';
|
||||||
|
}
|
||||||
|
if (strstr(lang, "{"))
|
||||||
|
txt += strstr(lang, "{") + 1;
|
||||||
|
jsn_children_.clear();
|
||||||
|
setting_jsn_ = jsonconfig::load_json_from_text(txt.c_str(), &jsn_children_);
|
||||||
|
empty = setting_jsn_.empty();
|
||||||
|
}
|
||||||
|
if(empty)
|
||||||
|
{
|
||||||
|
jsn_children_.clear();
|
||||||
|
setting_jsn_ = jsonconfig::load_json_from_text(json_setting_text, &jsn_children_);
|
||||||
|
}
|
||||||
|
|
||||||
|
VLOG_MINI_1(LOG_LEVEL_ALL, "Initialize %d settings ...\n", jsn_children_.size() - 1);
|
||||||
|
notify_setting_result_ = false;
|
||||||
|
change_setting_language(true);
|
||||||
VLOG_MINI_1(LOG_LEVEL_ALL, "Initialize %d settings ... OK\n", jsn_children_.size() - 1);
|
VLOG_MINI_1(LOG_LEVEL_ALL, "Initialize %d settings ... OK\n", jsn_children_.size() - 1);
|
||||||
if (lang_get_cur_code_page() != DEFAULT_CODE_PAGE)
|
if (lang_get_cur_code_page() != DEFAULT_CODE_PAGE)
|
||||||
on_language_changed();
|
on_language_changed();
|
||||||
|
|
Loading…
Reference in New Issue