#include "DataManager.h" #include #include #include DataManager* DataManager::g_GlobalSingle = NULL; std::mutex DataManager::m_Mutex; DataManager::DataManager(QObject* parent) : QObject(parent) { InitTestFileData(); } DataManager& DataManager::instance() { if (g_GlobalSingle == NULL) { std::unique_lock lock(m_Mutex); if (g_GlobalSingle == NULL) { g_GlobalSingle = new (std::nothrow) DataManager(); } } return *g_GlobalSingle; } void DataManager::destroyInstance() { std::unique_lock lock(m_Mutex); if (g_GlobalSingle) { delete g_GlobalSingle; g_GlobalSingle = NULL; } } std::string DataManager::string_To_UTF8(const std::string& str) { QTextCodec* codec = QTextCodec::codecForName("GBK"); // 根据实际情况调整源编码 if (!codec) { return str; } QString unicodeStr = codec->toUnicode(str.c_str()); QByteArray utf8Data = unicodeStr.toUtf8(); return std::string(utf8Data.constData(), utf8Data.length()); } std::string DataManager::UTF8_to_string(const std::string& str) { QTextCodec* utf8Codec = QTextCodec::codecForName("UTF-8"); if (!utf8Codec) { return str; } QString unicodeStr = utf8Codec->toUnicode(str.c_str()); QTextCodec* localCodec = QTextCodec::codecForName("GBK"); // 根据实际情况调整目标编码 if (!localCodec) { return str; } QByteArray localData = localCodec->fromUnicode(unicodeStr); return std::string(localData.constData(), localData.length()); } bool DataManager::JsonToStyled(const std::string& str, std::string& strRetrun) { Json::Reader reader; Json::Value root; if (reader.parse(str, root)) { return JsonToStyled(root, strRetrun); } else { return false; } } bool DataManager::JsonToStyled(Json::Value& jValue, std::string& strRetrun) { Json::StyledWriter jWriter; if (jValue.isNull()) { return false; } else { strRetrun = jWriter.write(jValue); return true; } } void DataManager::AddHttpLog(LogJson& pNewLog) { m_vectorLogJson.push_back(pNewLog); emit dataChanged(HttpLogList); } void DataManager::ClearHttpLog() { m_vectorLogJson.clear(); emit dataChanged(HttpLogList); } void DataManager::InitTestFileData() { QString strPath=QApplication::applicationDirPath()+"/allData.txt"; QFile pFile(strPath); if(pFile.open(QIODevice::ReadOnly|QIODevice::Text)) { strAllDataFile=pFile.readAll(); }; }