OneLevelXmlOpr/src/data_edit.cpp

74 lines
1.8 KiB
C++

#include "data_edit.h"
#include "ui_data_edit.h"
#include <QScreen>
#include <QClipboard>
#include <tinyxml2.h>
#include "../public_def.h"
CDataEdit::CDataEdit(QWidget* parent) : QDialog(parent), ui(new Ui::CDataEdit)
{
ui->setupUi(this);
// setMinimumWidth(600);
setWindowTitle(u8"源属性编辑");
connect(ui->btnExit, &QPushButton::clicked, this, [&]() { close(); });
connect(ui->btnAdd, &QPushButton::clicked, this, [&]() { import_data(); });
connect(ui->btnCopy, &QPushButton::clicked, this, [&]() {
QClipboard* clip = QApplication::clipboard();
clip->setText(ui->plainTextEdit->toPlainText());
});
}
CDataEdit::~CDataEdit()
{
delete ui;
}
void CDataEdit::set_data(const QString& data)
{
data_ = data;
}
void CDataEdit::import_data()
{
QString data = ui->plainTextEdit->toPlainText();
if (data.trimmed().isEmpty()) {
CUtil::msg(this, u8"内容为空");
return;
}
QStringList list = data.trimmed().split("\n");
for (int i = 0; i < list.size(); ++i) {
const QString& item = list[i];
if (item.trimmed().isEmpty()) {
continue;
}
tinyxml2::XMLDocument doc;
doc.Parse(item.toStdString().c_str());
if (doc.Error()) {
CUtil::msg(this, u8"不是合法的xml语句。");
return;
}
}
}
void CDataEdit::showEvent(QShowEvent* event)
{
show_before();
QDialog::showEvent(event);
}
void CDataEdit::show_before()
{
QScreen* primaryScreen = QGuiApplication::primaryScreen();
QRect screenGeometry = primaryScreen->geometry();
setMinimumWidth(screenGeometry.width() * 0.8);
if (is_import_) {
ui->btnCopy->setVisible(false);
} else {
ui->btnAdd->setVisible(false);
ui->plainTextEdit->clear();
ui->plainTextEdit->appendPlainText(data_);
}
}