OneLevelXmlOpr/conf_setting.cpp

144 lines
4.0 KiB
C++
Raw Permalink Normal View History

#include "conf_setting.h"
#include "public_def.h"
#include "ui_conf_setting.h"
CGroupSetting::CGroupSetting(QWidget* parent, CGroupIni* oper) : QDialog(parent), ui(new Ui::CGroupSetting)
{
ini_opr_ = oper;
ui->setupUi(this);
setWindowTitle(u8"配置编辑");
connect(ui->btnAddConfig, &QPushButton::clicked, this, [&]() { add_item(); });
connect(ui->btnDelConfig, &QPushButton::clicked, this, [&]() { del_item(); });
connect(ui->btnExit, &QPushButton::clicked, this, [&]() { close(); });
connect(ui->cbConfig, &QComboBox::currentTextChanged, this, [&](const QString& content) { change_ini(); });
}
CGroupSetting::~CGroupSetting()
{
delete ui;
}
void CGroupSetting::showEvent(QShowEvent* event)
{
update_ini("");
QDialog::showEvent(event);
}
void CGroupSetting::add_item()
{
if (!CUtil::affirm(this, u8"确认", u8"确认添加/更新吗?")) {
return;
}
QString config_name = ui->edConfigName->text();
config_name = config_name.trimmed();
if (config_name.isEmpty()) {
CUtil::msg(this, u8"配置名为空");
return;
}
// 验证重名
// 添加
OneGroupIni gp;
gp.name = config_name.toStdString();
gp.item_key = ui->edItemKey->text().toStdString();
gp.main_nodes = ui->edMainPath->text().toStdString();
gp.relative_nodes = ui->edRelativePath->text().toStdString();
gp.max_col_len = ui->edMaxColLen->text().toLong();
gp.max_blank_add = ui->edMaxFillLen->text().toLong();
gp.propertis = ui->edProperties->text().toStdString();
gp.is_same = ui->chbIsSame->isChecked();
if (!ini_opr_->add_item(gp)) {
CUtil::msg(this, u8"失败");
return;
}
update_ini(QString::fromStdString(gp.name));
CUtil::msg(this, u8"成功");
}
void CGroupSetting::del_item()
{
if (!CUtil::affirm(this, u8"确认", u8"确认删除吗?")) {
return;
}
std::string key = ui->cbConfig->currentText().toStdString();
if (!ini_opr_->del_item(key)) {
CUtil::msg(this, u8"失败");
return;
}
// 删除成功之后要更新 cb
update_ini("");
CUtil::msg(this, u8"成功");
}
void CGroupSetting::set_ui(const OneGroupIni& gp)
{
ui->edConfigName->setText(QString::fromStdString(gp.name));
ui->edItemKey->setText(QString::fromStdString(gp.item_key));
ui->edMainPath->setText(QString::fromStdString(gp.main_nodes));
ui->edRelativePath->setText(QString::fromStdString(gp.relative_nodes));
ui->edMaxColLen->setText(QString::number(gp.max_col_len));
ui->edMaxFillLen->setText(QString::number(gp.max_blank_add));
ui->edProperties->setText(QString::fromStdString(gp.propertis));
if (gp.is_same) {
ui->chbIsSame->setChecked(true);
} else {
ui->chbIsSame->setChecked(false);
}
}
void CGroupSetting::change_ini()
{
if (auto_add_) {
return;
}
QString name_key = ui->cbConfig->currentText();
OneGroupIni gp;
gp.name = name_key.toStdString();
if (!ini_opr_->get_item(gp)) {
CUtil::msg(this, u8"加载" + ui->cbConfig->currentText() + "失败");
} else {
set_ui(gp);
}
}
void CGroupSetting::update_ini(const QString& cur_key)
{
StrVec_t vec;
ini_opr_->get_all_node(vec);
QStringList list;
bool has_cur = false;
for (const auto& data : vec) {
list.append(QString::fromStdString(data));
if (data == cur_key.toStdString()) {
has_cur = true;
}
}
auto_add_ = true;
ui->cbConfig->clear();
if (!list.empty()) {
ui->cbConfig->addItems(list);
if (has_cur) {
ui->cbConfig->setCurrentIndex(list.indexOf(cur_key));
} else {
ui->cbConfig->setCurrentIndex(0);
}
OneGroupIni gp;
gp.name = ui->cbConfig->currentText().toStdString();
if (!ini_opr_->get_item(gp)) {
CUtil::msg(this, u8"加载" + ui->cbConfig->currentText() + "失败");
} else {
set_ui(gp);
}
}
auto_add_ = false;
}