ver:一个可用版本,基本包含导入导出数据,备份,替换,搜索等功能。
This commit is contained in:
@@ -3,16 +3,18 @@
|
||||
#include <QSettings>
|
||||
#include <QFile>
|
||||
#include <QKeyEvent>
|
||||
#include <QDateTime>
|
||||
#include <filesystem>
|
||||
#include "src/data_edit.h"
|
||||
#include "./ui_MainWidget.h"
|
||||
|
||||
constexpr std::size_t g_OnePage = 100;
|
||||
|
||||
namespace fs = std::filesystem;
|
||||
MainWidget::MainWidget(QWidget* parent) : QWidget(parent), ui(new Ui::MainWidget)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
setWindowTitle(u8"OneLevelXmlOpr v1.2.8");
|
||||
setWindowTitle(u8"OneLevelXmlOpr v1.2.9");
|
||||
setWindowIcon(QIcon("://resource/xml.ico"));
|
||||
|
||||
setMinimumWidth(900);
|
||||
@@ -45,11 +47,12 @@ MainWidget::MainWidget(QWidget* parent) : QWidget(parent), ui(new Ui::MainWidget
|
||||
read(file);
|
||||
});
|
||||
connect(ui->btnSearch, &QPushButton::clicked, this, [&]() { search(); });
|
||||
connect(ui->btnRead, &QPushButton::clicked, this,
|
||||
[&]() { read(ui->edStatus->text().trimmed()); });
|
||||
connect(ui->btnBackup, &QPushButton::clicked, this, [&]() { backup_file(); });
|
||||
connect(ui->btnRead, &QPushButton::clicked, this, [&]() { read(ui->edStatus->text().trimmed()); });
|
||||
connect(ui->btnSave, &QPushButton::clicked, this, [&]() { save(); });
|
||||
connect(ui->btnExit, &QPushButton::clicked, this, [&]() { QApplication::exit(0); });
|
||||
connect(ui->btnReset, &QPushButton::clicked, this, &MainWidget::reset);
|
||||
connect(ui->btnReplace, &QPushButton::clicked, this, &MainWidget::replace_content);
|
||||
connect(ui->btnExport, &QPushButton::clicked, this, &MainWidget::copy_multi_data);
|
||||
connect(ui->btnPagePre, &QPushButton::clicked, this, [&]() {
|
||||
unsigned int cur = ui->edCurPage->text().toUInt();
|
||||
@@ -60,6 +63,14 @@ MainWidget::MainWidget(QWidget* parent) : QWidget(parent), ui(new Ui::MainWidget
|
||||
edit.is_import_ = true;
|
||||
edit.set_xml_opr(&xml_);
|
||||
edit.exec();
|
||||
|
||||
if (!edit.is_import_sucess_) {
|
||||
return;
|
||||
}
|
||||
xml_.get_all_elements(vec_);
|
||||
current_.clear();
|
||||
current_ = vec_;
|
||||
push_content(current_);
|
||||
});
|
||||
connect(ui->btnPageNext, &QPushButton::clicked, this, [&]() {
|
||||
unsigned int cur = ui->edCurPage->text().toUInt();
|
||||
@@ -159,8 +170,7 @@ void MainWidget::generate_table_widget()
|
||||
tab_widget_->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||
connect(tab_widget_, &QTableWidget::itemChanged, this,
|
||||
[&](QTableWidgetItem* item) { item_changed_handle(item); });
|
||||
connect(tab_widget_, &QTableWidget::customContextMenuRequested, this,
|
||||
&MainWidget::show_custom_menu);
|
||||
connect(tab_widget_, &QTableWidget::customContextMenuRequested, this, &MainWidget::show_custom_menu);
|
||||
auto config = ini_.get_config();
|
||||
auto keys = splitString(config.purpose, ",");
|
||||
keys_.clear();
|
||||
@@ -620,3 +630,73 @@ void MainWidget::copy_multi_data()
|
||||
edit.set_data(ret);
|
||||
edit.exec();
|
||||
}
|
||||
|
||||
void MainWidget::replace_content()
|
||||
{
|
||||
if (tab_widget_ == nullptr) {
|
||||
return;
|
||||
}
|
||||
QString key = ui->edRepPre->text();
|
||||
QString after = ui->edRepAfter->text();
|
||||
if (key.isEmpty()) {
|
||||
CUtil::msg(this, u8"替换前数据为空。");
|
||||
return;
|
||||
}
|
||||
if (ui->cbRepOnlySelect->isChecked()) {
|
||||
QModelIndexList indexList = tab_widget_->selectionModel()->selectedRows();
|
||||
if (indexList.size() < 1) {
|
||||
CUtil::msg(this, u8"无选择数据");
|
||||
return;
|
||||
}
|
||||
QString ret;
|
||||
for (int i = 0; i < indexList.size(); ++i) {
|
||||
Element_t* e = get_element_by_row(indexList[i].row());
|
||||
if (e == nullptr) {
|
||||
continue;
|
||||
}
|
||||
auto* element = e->FirstAttribute();
|
||||
while (element) {
|
||||
QString content(element->Value());
|
||||
if (content.contains(key)) {
|
||||
content.replace(key, after);
|
||||
e->SetAttribute(element->Name(), content.toStdString().c_str());
|
||||
}
|
||||
element = element->Next();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (!CUtil::affirm(this, u8"确认", u8"确认进行全局替换吗?")) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (auto& data : vec_) {
|
||||
auto* element = data->FirstAttribute();
|
||||
while (element) {
|
||||
QString content(element->Value());
|
||||
content.replace(key, after);
|
||||
data->SetAttribute(element->Name(), content.toStdString().c_str());
|
||||
element = element->Next();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
xml_.get_all_elements(vec_);
|
||||
current_.clear();
|
||||
current_ = vec_;
|
||||
push_content(current_);
|
||||
}
|
||||
|
||||
void MainWidget::backup_file()
|
||||
{
|
||||
if (tab_widget_ == nullptr) {
|
||||
return;
|
||||
}
|
||||
|
||||
QString time = QDateTime::currentDateTime().toString("yyyy-MMdd-hhmmss");
|
||||
if (!xml_.backup_file(fs::path(exe_path_).parent_path().append("backup").string(), time.toStdString())) {
|
||||
CUtil::msg(this, u8"备份失败。");
|
||||
}
|
||||
else {
|
||||
CUtil::msg(this, u8"备份完成。");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user