调整保存配置功能

This commit is contained in:
yangjiaxuan 2023-07-05 10:46:53 +08:00
parent 314c6ca539
commit 591b5b1613
1 changed files with 10 additions and 70 deletions

View File

@ -2146,72 +2146,13 @@ void hg_settingdialog::save_scheme(void)
if (comb_->currentIndex() == 0) if (comb_->currentIndex() == 0)
return; return;
std::string name(cur_scheme_->get_scheme_name()); this->cur_scheme_ = this->cur_cfg_->get_scheme(comb_->currentText().toStdString().c_str());
cur_scheme_->end_setting(true);
bool add = name.empty(); cur_scheme_->begin_setting();
updateSchemeFromUi();
if(add) cur_scheme_->end_setting(false);
{
name = getCurUiShemeName(name);
}
else
{
int items = 0;
add = cur_scheme_->has_changed(&items);
if(add)
{
if(items == 0) // while shemes is default
{
cur_cfg_->select_scheme(nullptr);
cur_cfg_->remove_scheme(cur_scheme_->get_scheme_name().c_str());
cur_cfg_->save();
return;
}
else
add = false;
}
}
if(add)
{
if(name.empty() && cur_scheme_->get_scheme_name().empty())
{
cur_scheme_->end_setting(true);
return;
}
gb::sane_config_schm* cp = cur_scheme_->copy();
cur_scheme_->end_setting(true);
cur_scheme_->release();
cur_scheme_ = cp;
size_t pos = name.rfind('-');
int ind = 0;
char append[20] = {0};
if(pos != std::string::npos)
{
ind = atoi(name.c_str() + pos + 1);
if(ind > 0)
{
name.erase(pos);
// sprintf(append, "-%d", ++ind);
}
}
cur_cfg_->add_scheme(cur_scheme_, (name + append).c_str());
// while (!cur_cfg_->add_scheme(cur_scheme_, (name + append).c_str()))
// {
// sprintf(append, "-%d", ++ind);
// }
}
else
{
cur_scheme_->end_setting(false);
}
cur_cfg_->select_scheme(cur_scheme_->get_scheme_name().c_str());
cur_cfg_->save(); cur_cfg_->save();
cur_cfg_->select_scheme(cur_scheme_->get_scheme_name().c_str());
} }
void hg_settingdialog::cancel_setting(void) void hg_settingdialog::cancel_setting(void)
{ {
@ -2408,16 +2349,15 @@ void hg_settingdialog::updateDefaultScheme()
if (comb_->currentIndex() == 0) if (comb_->currentIndex() == 0)
{ {
bool check = false;
if (searchKeyName("default", opt->name)) if (searchKeyName("default", opt->name))
{ {
check = getDefaultCfgValue("default", opt->name, false); bool check = getDefaultCfgValue("default", opt->name, false);
} cb->setCheckState(check ? Qt::Checked : Qt::Unchecked);
cb->setCheckState(check ? Qt::Checked : Qt::Unchecked); if (strcmp(opt->name, SANE_STD_OPT_NAME_IS_CUSTOM_GAMMA) == 0 && btn_gamma_ != nullptr)
if (strcmp(opt->name, SANE_STD_OPT_NAME_IS_CUSTOM_GAMMA) == 0 && btn_gamma_ != nullptr)
{ {
btn_gamma_->setEnabled(check); btn_gamma_->setEnabled(check);
} }
}
} }
//connect(cb, SIGNAL(stateChanged(int)), this, SLOT(slot_checkedClicked())); //connect(cb, SIGNAL(stateChanged(int)), this, SLOT(slot_checkedClicked()));
break; break;