fix:修正替换后的界面显示和替换选项优化。

This commit is contained in:
taynpg 2024-05-19 23:57:50 +08:00
parent df1dd36d3b
commit 43c2d8680d
4 changed files with 55 additions and 23 deletions

View File

@ -99,6 +99,7 @@
"qtablewidget": "cpp", "qtablewidget": "cpp",
"qmenu": "cpp", "qmenu": "cpp",
"qmessagebox": "cpp", "qmessagebox": "cpp",
"qaction": "cpp" "qaction": "cpp",
"codecvt": "cpp"
} }
} }

View File

@ -34,7 +34,7 @@ MainWidget::MainWidget(QWidget* parent) : QWidget(parent), ui(new Ui::MainWidget
ui->btnImport->setEnabled(false); ui->btnImport->setEnabled(false);
ui->btnExport->setEnabled(false); ui->btnExport->setEnabled(false);
ui->btnBackup->setEnabled(false); ui->btnBackup->setEnabled(false);
ui->cbRepOnlySelect->setChecked(true); ui->rbReplaceSelect->setChecked(true);
ui->btnRead->setFixedWidth(100); ui->btnRead->setFixedWidth(100);
ui->btnSave->setFixedWidth(100); ui->btnSave->setFixedWidth(100);
ui->btnExit->setFixedWidth(100); ui->btnExit->setFixedWidth(100);
@ -642,7 +642,7 @@ void MainWidget::replace_content()
CUtil::msg(this, u8"替换前数据为空。"); CUtil::msg(this, u8"替换前数据为空。");
return; return;
} }
if (ui->cbRepOnlySelect->isChecked()) { if (ui->rbReplaceSelect->isChecked()) {
QModelIndexList indexList = tab_widget_->selectionModel()->selectedRows(); QModelIndexList indexList = tab_widget_->selectionModel()->selectedRows();
if (indexList.size() < 1) { if (indexList.size() < 1) {
CUtil::msg(this, u8"无选择数据"); CUtil::msg(this, u8"无选择数据");
@ -654,15 +654,18 @@ void MainWidget::replace_content()
if (e == nullptr) { if (e == nullptr) {
continue; continue;
} }
auto* element = e->FirstAttribute(); replace_str(key, after, e);
while (element) { ele_update_gui(e, indexList[i].row());
QString content(element->Value()); }
if (content.contains(key)) { } else if (ui->rbRepCurPage->isChecked()) {
content.replace(key, after); int row_count = tab_widget_->rowCount();
e->SetAttribute(element->Name(), content.toStdString().c_str()); for (int i = 0; i < row_count; ++i) {
} Element_t* e = get_element_by_row(i);
element = element->Next(); if (e == nullptr) {
continue;
} }
replace_str(key, after, e);
ele_update_gui(e, i);
} }
} else { } else {
if (!CUtil::affirm(this, u8"确认", u8"确认进行全局替换吗?")) { if (!CUtil::affirm(this, u8"确认", u8"确认进行全局替换吗?")) {
@ -678,12 +681,28 @@ void MainWidget::replace_content()
element = element->Next(); element = element->Next();
} }
} }
}
xml_.get_all_elements(vec_); xml_.get_all_elements(vec_);
current_.clear(); current_.clear();
current_ = vec_; current_ = vec_;
push_content(current_); search();
}
}
void MainWidget::replace_str(const QString& pre, const QString& after, Element_t* ele)
{
if (ele == nullptr) {
return;
}
auto* element = ele->FirstAttribute();
while (element) {
QString content(element->Value());
if (content.contains(pre)) {
content.replace(pre, after);
ele->SetAttribute(element->Name(), content.toStdString().c_str());
}
element = element->Next();
}
} }
void MainWidget::backup_file() void MainWidget::backup_file()
@ -695,8 +714,7 @@ void MainWidget::backup_file()
QString time = QDateTime::currentDateTime().toString("yyyy-MMdd-hhmmss"); QString time = QDateTime::currentDateTime().toString("yyyy-MMdd-hhmmss");
if (!xml_.backup_file(fs::path(exe_path_).parent_path().append("backup").string(), time.toStdString())) { if (!xml_.backup_file(fs::path(exe_path_).parent_path().append("backup").string(), time.toStdString())) {
CUtil::msg(this, u8"备份失败。"); CUtil::msg(this, u8"备份失败。");
} } else {
else {
CUtil::msg(this, u8"备份完成。"); CUtil::msg(this, u8"备份完成。");
} }
} }

View File

@ -52,7 +52,7 @@ private:
protected: protected:
void closeEvent(QCloseEvent* event); void closeEvent(QCloseEvent* event);
void keyPressEvent(QKeyEvent* event); void keyPressEvent(QKeyEvent* event);
void replace_str(const QString& pre, const QString& after, Element_t* ele);
private: private:
Element_t* get_element_by_key(const QString& key); Element_t* get_element_by_key(const QString& key);
Element_t* get_element_by_row(int row); Element_t* get_element_by_row(int row);

View File

@ -6,7 +6,7 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>1211</width> <width>1220</width>
<height>805</height> <height>805</height>
</rect> </rect>
</property> </property>
@ -82,9 +82,23 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QCheckBox" name="cbRepOnlySelect"> <widget class="QRadioButton" name="rbReplaceSelect">
<property name="text"> <property name="text">
<string>仅替换所选</string> <string>所选</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="rbRepCurPage">
<property name="text">
<string>当前页</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="rbRepAll">
<property name="text">
<string>全局</string>
</property> </property>
</widget> </widget>
</item> </item>
@ -269,7 +283,6 @@
<tabstop>btnExport</tabstop> <tabstop>btnExport</tabstop>
<tabstop>btnImport</tabstop> <tabstop>btnImport</tabstop>
<tabstop>btnBackup</tabstop> <tabstop>btnBackup</tabstop>
<tabstop>cbRepOnlySelect</tabstop>
<tabstop>edRepPre</tabstop> <tabstop>edRepPre</tabstop>
<tabstop>edRepAfter</tabstop> <tabstop>edRepAfter</tabstop>
<tabstop>btnReplace</tabstop> <tabstop>btnReplace</tabstop>