From bb06d1cccd0aa512354c3f6185e8e12ecea283b8 Mon Sep 17 00:00:00 2001 From: dreamsourcelabTAI Date: Tue, 2 Aug 2022 11:49:44 +0800 Subject: [PATCH] fix: can't resotre i2c decoder from data file --- DSView/pv/device/file.cpp | 10 ++++++---- DSView/pv/mainwindow.cpp | 5 ++--- DSView/pv/storesession.cpp | 10 +++++----- DSView/pv/utility/encoding.cpp | 5 +++-- 4 files changed, 16 insertions(+), 14 deletions(-) diff --git a/DSView/pv/device/file.cpp b/DSView/pv/device/file.cpp index 230d6f7a..f2dd17ce 100644 --- a/DSView/pv/device/file.cpp +++ b/DSView/pv/device/file.cpp @@ -81,8 +81,9 @@ QJsonArray File::get_decoders() ZipReader rd(f_name.c_str()); auto *data = rd.GetInnterFileData("decoders"); - if (data != NULL){ - QString jsonStr(data->data()); + if (data != NULL){ + QByteArray raw_bytes = QByteArray::fromRawData(data->data(), data->size()); + QString jsonStr(raw_bytes.data()); QByteArray qbs = jsonStr.toUtf8(); QJsonDocument sessionDoc = QJsonDocument::fromJson(qbs, &error); @@ -108,8 +109,9 @@ QJsonDocument File::get_session() auto *data = rd.GetInnterFileData("session"); if (data != NULL){ - QString jsonStr(data->data()); - QByteArray qbs = jsonStr.toUtf8(); + QByteArray raw_bytes = QByteArray::fromRawData(data->data(), data->size()); + QString jsonStr(raw_bytes.data()); + QByteArray qbs = jsonStr.toUtf8(); sessionDoc = QJsonDocument::fromJson(qbs, &error); if (error.error != QJsonParseError::NoError){ diff --git a/DSView/pv/mainwindow.cpp b/DSView/pv/mainwindow.cpp index 7d939f0a..d251b14f 100644 --- a/DSView/pv/mainwindow.cpp +++ b/DSView/pv/mainwindow.cpp @@ -1266,8 +1266,7 @@ bool MainWindow::on_store_session(QString name) QJsonObject sessionVar; if (!gen_session_json(sessionVar)) return false; - QJsonDocument sessionDoc(sessionVar); - //sessionFile.write(QString::fromUtf8(sessionDoc.toJson())); + QJsonDocument sessionDoc(sessionVar); outStream << QString::fromUtf8(sessionDoc.toJson()); sessionFile.close(); return true; @@ -1280,7 +1279,7 @@ bool MainWindow::genSessionData(std::string &str) return false; QJsonDocument sessionDoc(sessionVar); QString data = QString::fromUtf8(sessionDoc.toJson()); - str.append(data.toLatin1().data()); + str.append(data.toLocal8Bit().data()); return true; } diff --git a/DSView/pv/storesession.cpp b/DSView/pv/storesession.cpp index 7e256e2b..b106a85c 100644 --- a/DSView/pv/storesession.cpp +++ b/DSView/pv/storesession.cpp @@ -60,8 +60,8 @@ #include "dsvdef.h" #include "utility/encoding.h" #include "utility/path.h" -#include "log.h" - +#include "log.h" +#include namespace pv { @@ -875,8 +875,8 @@ bool StoreSession::decoders_gen(std::string &str) if (!json_decoders(dec_array)) return false; QJsonDocument sessionDoc(dec_array); - QString data = QString::fromUtf8(sessionDoc.toJson()); - str.append(data.toLatin1().data()); + QString data = QString::fromUtf8(sessionDoc.toJson()); + str = std::string(data.toLocal8Bit().data()); return true; } @@ -952,7 +952,7 @@ bool StoreSession::json_decoders(QJsonArray &array) auto rows = stack->get_rows_gshow(); for (auto i = rows.begin(); i != rows.end(); i++) { pv::data::decode::Row _row = (*i).first; - QString kn(_row.title().toUtf8().data()); + QString kn = _row.title(); show_obj[kn] = QJsonValue::fromVariant((*i).second); } dec_obj["show"] = show_obj; diff --git a/DSView/pv/utility/encoding.cpp b/DSView/pv/utility/encoding.cpp index 41bf23c6..7d4696bf 100644 --- a/DSView/pv/utility/encoding.cpp +++ b/DSView/pv/utility/encoding.cpp @@ -36,8 +36,9 @@ namespace encoding{ #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) stream.setEncoding(QStringConverter::Utf8); #else - QTextCodec *code = QTextCodec::codecForName("UTF-8"); - stream.setCodec(code); + //QTextCodec *code = QTextCodec::codecForName("UTF-8"); + // stream.setCodec(code); + stream.setCodec("UTF-8"); #endif } }