From f9796c7090142a8b3e7db27184e2e89b409e2903 Mon Sep 17 00:00:00 2001 From: taynpg Date: Wed, 28 Aug 2024 08:42:45 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A1.=E4=BF=AE=E6=AD=A3=E5=90=8C?= =?UTF-8?q?=E7=BB=93=E6=9E=84=E5=AF=BC=E5=85=A5=E9=97=AE=E9=A2=98=E3=80=82?= =?UTF-8?q?2.=E5=8E=86=E5=8F=B2=E7=95=8C=E9=9D=A2=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E3=80=823.=E5=AF=BC=E5=85=A5=E6=8E=92?= =?UTF-8?q?=E5=BA=8F=E9=97=AE=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/settings.json | 9 ++++- MainWidget.cpp | 77 +++++++++++++++++++++++-------------------- src/history.h | 4 +-- src/uhistory.cpp | 20 +++++++++++ src/uhistory.h | 1 + src/uhistory.ui | 7 ++++ src/xml_opr.cpp | 1 + 7 files changed, 81 insertions(+), 38 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index be26477..4fd3205 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -115,6 +115,13 @@ "optional": "cpp", "sstream": "cpp", "stop_token": "cpp", - "regex": "cpp" + "regex": "cpp", + "*.tcc": "cpp", + "cwctype": "cpp", + "deque": "cpp", + "memory_resource": "cpp", + "random": "cpp", + "fstream": "cpp", + "cinttypes": "cpp" } } \ No newline at end of file diff --git a/MainWidget.cpp b/MainWidget.cpp index 2a8fbee..866abbb 100644 --- a/MainWidget.cpp +++ b/MainWidget.cpp @@ -1,8 +1,5 @@ #include "MainWidget.h" -#include "./ui_MainWidget.h" -#include "src/data_edit.h" -#include "public_def.h" #include #include #include @@ -12,13 +9,17 @@ #include #include +#include "./ui_MainWidget.h" +#include "public_def.h" +#include "src/data_edit.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.3.1"); + setWindowTitle(u8"OneLevelXmlOpr v1.3.2"); setWindowIcon(QIcon("://resource/xml.ico")); QScreen* primaryScreen = QGuiApplication::primaryScreen(); @@ -78,7 +79,13 @@ MainWidget::MainWidget(QWidget* parent) : QWidget(parent), ui(new Ui::MainWidget if (!edit.is_import_sucess_) { return; } - xml_.get_all_elements(vec_); + + if (cur_config_.is_same) { + xml_.get_all_elements(vec_, ui->cbUnit->currentText().toStdString()); + } else { + xml_.get_all_elements(vec_); + } + current_.clear(); current_ = vec_; push_content(current_); @@ -161,11 +168,11 @@ void MainWidget::closeEvent(QCloseEvent* event) void MainWidget::keyPressEvent(QKeyEvent* event) { switch (event->key()) { - case Qt::Key_Return: - search(ui->edSearchKey->text()); - break; - default: - break; + case Qt::Key_Return: + search(ui->edSearchKey->text()); + break; + default: + break; } QWidget::keyPressEvent(event); } @@ -326,15 +333,14 @@ bool MainWidget::read(const QString& file_path) for (const auto& unit : units) { list.append(QString::fromStdString(unit)); } - u_ = true; + u_ = true; ui->cbUnit->clear(); if (!list.isEmpty()) { ui->cbUnit->addItems(list); ui->cbUnit->setCurrentIndex(0); } u_ = false; - } - else { + } else { ui->cbUnit->setEnabled(false); } @@ -358,6 +364,7 @@ bool MainWidget::read(const QString& file_path) ui->cbConfig->setEnabled(false); ui->btnSet->setEnabled(false); + ui->btnHis->setEnabled(false); his_->push(ui->edStatus->text().toStdString()); @@ -823,30 +830,30 @@ void MainWidget::get_related_elements(std::vector& out, ReplaceAre assert(tab_widget_); out.clear(); switch (area) { - case AREA_ALL_PAGE: { - out.resize(current_.size()); - std::transform(current_.begin(), current_.end(), out.begin(), [](Element_t* ele) { return new OperElement(ele, 0); }); - break; - } - case AREA_CUR_PAGE: { - int rows = tab_widget_->rowCount(); - for (int i = 0; i < rows; ++i) { - out.emplace_back(new OperElement(get_element_by_row(i), i)); + case AREA_ALL_PAGE: { + out.resize(current_.size()); + std::transform(current_.begin(), current_.end(), out.begin(), [](Element_t* ele) { return new OperElement(ele, 0); }); + break; } - break; - } - case AREA_ALL: { - out.resize(vec_.size()); - std::transform(vec_.begin(), vec_.end(), out.begin(), [](Element_t* ele) { return new OperElement(ele, 0); }); - break; - } - default: { - QModelIndexList indexList = tab_widget_->selectionModel()->selectedRows(); - for (int i = 0; i < indexList.size(); ++i) { - out.emplace_back(new OperElement(get_element_by_row(indexList[i].row()), indexList[i].row())); + case AREA_CUR_PAGE: { + int rows = tab_widget_->rowCount(); + for (int i = 0; i < rows; ++i) { + out.emplace_back(new OperElement(get_element_by_row(i), i)); + } + break; + } + case AREA_ALL: { + out.resize(vec_.size()); + std::transform(vec_.begin(), vec_.end(), out.begin(), [](Element_t* ele) { return new OperElement(ele, 0); }); + break; + } + default: { + QModelIndexList indexList = tab_widget_->selectionModel()->selectedRows(); + for (int i = 0; i < indexList.size(); ++i) { + out.emplace_back(new OperElement(get_element_by_row(indexList[i].row()), indexList[i].row())); + } + break; } - break; - } } } diff --git a/src/history.h b/src/history.h index 105d0fb..6b9ce10 100644 --- a/src/history.h +++ b/src/history.h @@ -13,11 +13,11 @@ public: public: bool push(const std::string& content); bool get_history(std::vector& vec); + bool read_file(std::vector& vec); + bool write_file(std::vector& vec); private: void default_set(); - bool read_file(std::vector& vec); - bool write_file(std::vector& vec); private: std::string work_dir_{}; diff --git a/src/uhistory.cpp b/src/uhistory.cpp index 7ad529f..2fe3d86 100644 --- a/src/uhistory.cpp +++ b/src/uhistory.cpp @@ -10,6 +10,7 @@ CUIHistory::CUIHistory(QWidget* parent, CHistory* his) : QDialog(parent), ui(new connect(ui->btnExit, &QPushButton::clicked, this, [&]() { close(); }); connect(ui->btnOk, &QPushButton::clicked, this, [&]() { select_ok(); }); + connect(ui->btnDel, &QPushButton::clicked, this, [&]() { del_item(); }); } CUIHistory::~CUIHistory() @@ -42,3 +43,22 @@ void CUIHistory::select_ok() cur_ = re[0]->text(); close(); } + +void CUIHistory::del_item() +{ + auto re = ui->listWidget->selectedItems(); + if (re.empty()) { + return ; + } + for (auto& item : re) { + delete ui->listWidget->takeItem(ui->listWidget->row(item)); + } + std::vector vec; + for (int i = 0; i < ui->listWidget->count(); ++i) { + QListWidgetItem* item = ui->listWidget->item(i); + if (item) { + vec.push_back(item->text().toStdString()); + } + } + his_->write_file(vec); +} diff --git a/src/uhistory.h b/src/uhistory.h index ceb0453..fe4bdc3 100644 --- a/src/uhistory.h +++ b/src/uhistory.h @@ -19,6 +19,7 @@ public: private: void showEvent(QShowEvent* event); void select_ok(); + void del_item(); public: QString cur_{}; diff --git a/src/uhistory.ui b/src/uhistory.ui index b8e4440..2aaea0c 100644 --- a/src/uhistory.ui +++ b/src/uhistory.ui @@ -32,6 +32,13 @@ + + + + 删除 + + + diff --git a/src/xml_opr.cpp b/src/xml_opr.cpp index cb0633f..3b66e7e 100644 --- a/src/xml_opr.cpp +++ b/src/xml_opr.cpp @@ -244,6 +244,7 @@ bool CXmlOpr::import_newer_data(const std::vector& vec, std::size_t ++success_count; auto* nitem = copy_element(item); insert_brother_node(last_item, nitem); + last_item = nitem; } return true; }