diff --git a/src/plugins/data-transfer/core/gui/transfer/resultdisplay.cpp b/src/plugins/data-transfer/core/gui/transfer/resultdisplay.cpp index 8db67a77f..a56ade281 100644 --- a/src/plugins/data-transfer/core/gui/transfer/resultdisplay.cpp +++ b/src/plugins/data-transfer/core/gui/transfer/resultdisplay.cpp @@ -1,4 +1,6 @@ #include "resultdisplay.h" +#include +#include #include #include #include @@ -67,7 +69,8 @@ void ResultDisplayWidget::initUI() &ResultDisplayWidget::addResult); #ifdef linux connect(TransferHelper::instance(), &TransferHelper::transferFinished, this, [this] { - TransferHelper::instance()->sendMessage("add_result", processText); + TransferHelper::instance()->sendMessage( + "add_result", QString::fromUtf8(QJsonDocument(processText).toJson(QJsonDocument::Compact))); }); #endif } @@ -107,8 +110,11 @@ void ResultDisplayWidget::addResult(QString name, bool success, QString reason) setStatus(false); resultWindow->updateContent(name, reason, success); - QString res = success ? "true" : "false"; - processText.append(name + " " + res + " " + reason + ";"); + QJsonObject obj; + obj["name"] = name; + obj["success"] = success; + obj["reason"] = reason; + processText.append(obj); } void ResultDisplayWidget::clear() diff --git a/src/plugins/data-transfer/core/gui/transfer/resultdisplay.h b/src/plugins/data-transfer/core/gui/transfer/resultdisplay.h index c21ed2ade..8ed28d7dd 100644 --- a/src/plugins/data-transfer/core/gui/transfer/resultdisplay.h +++ b/src/plugins/data-transfer/core/gui/transfer/resultdisplay.h @@ -2,6 +2,7 @@ #define RESULTDISPLAYWIDGET_H #include +#include #include "../type_defines.h" class QTextBrowser; class QLabel; @@ -37,7 +38,7 @@ public slots: private: ResultWindow *resultWindow { nullptr }; - QString processText; + QJsonArray processText; QLabel *iconLabel { nullptr }; QLabel *titileLabel { nullptr }; QLabel *tiptextlabel { nullptr }; diff --git a/src/plugins/data-transfer/core/gui/transfer/transferringwidget.cpp b/src/plugins/data-transfer/core/gui/transfer/transferringwidget.cpp index a84483a86..94d6e9cef 100644 --- a/src/plugins/data-transfer/core/gui/transfer/transferringwidget.cpp +++ b/src/plugins/data-transfer/core/gui/transfer/transferringwidget.cpp @@ -2,6 +2,9 @@ #include "errorwidget.h" +#include +#include + #include #include #include @@ -202,9 +205,13 @@ void TransferringWidget::updateProcess(const QString &tpye, const QString &conte timeLabel->setText(QString(tr("Transfer will be completed in --"))); #ifdef linux //通知对方进程情况 - QString mes = tpye + " " + content + " " + QString::number(progressbar) + " " - + QString::number(estimatedtime) + ";"; - TransferHelper::instance()->sendMessage("transfer_content", mes); + QJsonObject obj; + obj["type"] = tpye; + obj["content"] = content; + obj["progressbar"] = progressbar; + obj["estimatedtime"] = estimatedtime; + TransferHelper::instance()->sendMessage( + "transfer_content", QString::fromUtf8(QJsonDocument(obj).toJson(QJsonDocument::Compact))); #endif } } diff --git a/src/plugins/data-transfer/core/utils/transferworker.cpp b/src/plugins/data-transfer/core/utils/transferworker.cpp index acfce1a6d..a225e868c 100644 --- a/src/plugins/data-transfer/core/utils/transferworker.cpp +++ b/src/plugins/data-transfer/core/utils/transferworker.cpp @@ -17,6 +17,9 @@ #include #include #include +#include +#include +#include #pragma execution_character_set("utf-8") TransferHandle::TransferHandle() @@ -350,11 +353,15 @@ void TransferHandle::handleMiscMessage(QString jsonmsg) if (miscJson.has_member("add_result")) { QString result = miscJson.get("add_result").as_c_str(); LOG << "add_result" << result.data(); - for (QString str : result.split(";")) { - auto res = str.split(" "); - if (res.size() != 3) - continue; - emit TransferHelper::instance()->addResult(res.at(0), res.at(1) == "true", res.at(2)); + QJsonDocument doc = QJsonDocument::fromJson(result.toUtf8()); + if (doc.isArray()) { + for (const QJsonValue &value : doc.array()) { + QJsonObject obj = value.toObject(); + emit TransferHelper::instance()->addResult( + obj.value("name").toString(), + obj.value("success").toBool(), + obj.value("reason").toString()); + } } emit TransferHelper::instance()->transferFinished(); } @@ -376,11 +383,17 @@ void TransferHandle::handleMiscMessage(QString jsonmsg) if (miscJson.has_member("transfer_content")) { QString result = miscJson.get("transfer_content").as_c_str(); - for (QString str : result.split(";")) { - auto res = str.split(" "); - if (res.size() != 4) - continue; - emit TransferHelper::instance()->transferContent(res.at(0), res.at(1), res.at(2).toInt(), res.at(3).toInt()); + QJsonDocument doc = QJsonDocument::fromJson(result.toUtf8()); + QJsonArray contents = doc.isArray() ? doc.array() : QJsonArray(); + if (doc.isObject()) + contents.append(doc.object()); + for (const QJsonValue &value : contents) { + QJsonObject obj = value.toObject(); + emit TransferHelper::instance()->transferContent( + obj.value("type").toString(), + obj.value("content").toString(), + obj.value("progressbar").toInt(), + obj.value("estimatedtime").toInt()); } } }