#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; }