74 lines
1.8 KiB
C++
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_);
|
|
}
|
|
}
|