#include "globaldefine.h" #include "devicepanel.h" #include "deviceitem.h" #include "gutil/qnetwork.h" #include #include #include #include #include QList gSelCards; bool gVideoCompress = true; bool gVideoTranscoding = true; bool gTextAntialiasing = false; bool gShowLoraScreen = false; bool gWidthSplit = false; DeviceItem *findItem(QString id) { int cnt = gDevicePanel->mDeviceTable->topLevelItemCount(); for(int i=0; imDeviceTable->topLevelItem(i); if(item==0) continue; if(item->mCard.id==id) return item; } return 0; } QString checkReply(QNetworkReply *reply, QJsonDocument *outJson) { auto err = errStr(reply); if(! err.isEmpty()) { auto data = reply->readAll(); if(! data.isEmpty()) err = err+"\n"+QCoreApplication::translate("Def","Device replied")+": "+data; return err; } if(outJson) { auto data = reply->readAll(); QJsonParseError jsonErr; *outJson = QJsonDocument::fromJson(data, &jsonErr); if(jsonErr.error != QJsonParseError::NoError) return "Json error: "+jsonErr.errorString()+"\n"+QCoreApplication::translate("Def","Device replied")+": "+data; } return ""; } QString checkReplyForJson(QNetworkReply *reply, QJsonDocument *outJson, QByteArray *outData) { auto err = errStr(reply); auto data = reply->readAll(); if(outData) *outData = data; if(! err.isEmpty()) { if(! data.isEmpty()) err = err+"\n"+QCoreApplication::translate("Def","Device replied")+": "+data; return err; } QJsonParseError jsonErr; QJsonDocument json = QJsonDocument::fromJson(data, &jsonErr); if(jsonErr.error != QJsonParseError::NoError) return "Json error: "+jsonErr.errorString()+"\n"+QCoreApplication::translate("Def","Device replied")+": "+data; if(! json["success"].toBool()) return QCoreApplication::translate("Def","Fail")+". "+QCoreApplication::translate("Def","Device replied")+": "+data; if(outJson) outJson->swap(json); return ""; } QString checkReplyForJson(QNetworkReply *reply, QString errField) { auto err = errStr(reply); auto data = reply->readAll(); if(! err.isEmpty()) { if(! data.isEmpty()) err = err+"\n"+QCoreApplication::translate("Def","Device replied")+": "+data; return err; } QJsonParseError jsonErr; QJsonDocument json = QJsonDocument::fromJson(data, &jsonErr); if(jsonErr.error != QJsonParseError::NoError) return "Json error: "+jsonErr.errorString()+"\n"+QCoreApplication::translate("Def","Device replied")+": "+data; if(! json["success"].toBool()) { auto errStr = json[errField].toString(); return QCoreApplication::translate("Def","Fail")+". "+QCoreApplication::translate("Def","Device replied")+": "+(errStr.isEmpty() ? data : errStr); } return ""; } quint64 dirFileSize(const QString &path) { QDir dir(path); quint64 size = 0; auto infos = dir.entryInfoList(QDir::Files); foreach(QFileInfo fileInfo, infos) size += fileInfo.size(); auto subDirs = dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot); foreach(QString subDir, subDirs) size += dirFileSize(path + QDir::separator() + subDir); return size; } bool copyDir(const QString &source, const QString &destination, bool override) { QDir directory(source); if(!directory.exists()) return false; QString srcPath = QDir::toNativeSeparators(source); if(!srcPath.endsWith(QDir::separator())) srcPath += QDir::separator(); QString dstPath = QDir::toNativeSeparators(destination); if (!dstPath.endsWith(QDir::separator())) dstPath += QDir::separator(); bool error = false; QStringList fileNames = directory.entryList(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::Hidden); for (QStringList::size_type i=0; i != fileNames.size(); ++i) { QString fileName = fileNames.at(i); QString srcFilePath = srcPath + fileName; QString dstFilePath = dstPath + fileName; QFileInfo fileInfo(srcFilePath); if (fileInfo.isFile() || fileInfo.isSymLink()) { if (override) { QFile::setPermissions(dstFilePath, QFile::WriteOwner); } QFile::copy(srcFilePath, dstFilePath); } else if (fileInfo.isDir()) { QDir dstDir(dstFilePath); dstDir.mkpath(dstFilePath); if (!copyDir(srcFilePath, dstFilePath, override)) { error = true; } } } return !error; } unsigned char GetCheckCodeIn8(unsigned char * pBuffer,unsigned int uiSize) { unsigned int i=0; unsigned char ucCheckCode=0; for (i=0;i