ledok增加版本提示
This commit is contained in:
parent
6015d932d3
commit
332897f9cf
|
@ -25,7 +25,7 @@ CONFIG += embed_translations
|
|||
# You can also select to disable deprecated APIs only up to a certain version of Qt.
|
||||
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
|
||||
|
||||
VERSION = 1.5.0
|
||||
VERSION = 1.5.1
|
||||
DEFINES += APP_VERSION=\\\"$$VERSION\\\"
|
||||
msvc {
|
||||
contains(QT_ARCH, i386) {
|
||||
|
|
|
@ -232,7 +232,7 @@ UpgradeApkDialog::UpgradeApkDialog(QWidget *parent) : QDialog(parent) {
|
|||
if(isApk || ! json["hasProgress"].toBool()) {
|
||||
item->isUpdating = false;
|
||||
item->setResult(tr("Install Success"), Qt::darkGreen);
|
||||
if(isApk) item->OnCheckSoftVersions();
|
||||
if(isApk) item->OnCheckSoftVersions(1);
|
||||
else item->OnCheckFpgaVersions();
|
||||
} else {
|
||||
sendProgress(item);
|
||||
|
@ -427,7 +427,7 @@ UpgradeApkDialog::UpgradeApkDialog(QWidget *parent) : QDialog(parent) {
|
|||
}
|
||||
if(isEmpty) for(int rr=0; rr<cnt; rr++) {
|
||||
auto item = table->item(rr);
|
||||
item->setHidden(! (item->text("xixunplayer").contains(text)
|
||||
item->setHidden(! (item->text("playerVer").contains(text)
|
||||
|| item->text("cardsystem").contains(text)
|
||||
|| item->text("starter").contains(text)
|
||||
|| item->text("taxiapp").contains(text)
|
||||
|
@ -449,7 +449,7 @@ UpgradeApkDialog::UpgradeApkDialog(QWidget *parent) : QDialog(parent) {
|
|||
table->addCol("encrypt", tr("Security"), 40);
|
||||
table->addCol("progress", tr("Progress"), 100);
|
||||
table->addCol("remarks", tr("State"), 200, QHeaderView::Stretch);
|
||||
table->addCol("xixunplayer", "xixunplayer", 70);
|
||||
table->addCol("playerVer", "XixunPlayer", 70);
|
||||
table->addCol("cardsystem", "cardsystem", 70);
|
||||
table->addCol("starter", "starter", 70);
|
||||
table->addCol("taxiapp", "taxiapp", 70);
|
||||
|
@ -504,7 +504,7 @@ void UpgradeApkDialog::sendProgress(UpdateApkItem *item) {
|
|||
if(progre >= 100) {
|
||||
item->isUpdating = false;
|
||||
item->fdProgress->setValue(100);
|
||||
item->setResult(tr("Install Success"), Qt::darkGreen);
|
||||
item->setResult("FPGA "+tr("Install Success"), Qt::darkGreen);
|
||||
item->OnCheckFpgaVersions();
|
||||
} else if(progre == -1) {
|
||||
item->isUpdating = false;
|
||||
|
@ -536,47 +536,45 @@ void UpdateApkItem::OnCheckFpgaVersions() {
|
|||
auto reply = NetReq("http://"+text("ip")+":2016/settings").timeout(60000).post(json);
|
||||
ConnReply(reply, fdProgress) [=] {
|
||||
if(treeWidget()==0) return;
|
||||
QJsonDocument json;
|
||||
QString err = checkReplyForJson(reply, &json);
|
||||
if(! err.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
JValue json;
|
||||
auto err = errStrWithJson(reply, &json);
|
||||
if(! err.isEmpty()) return;
|
||||
QString strBuf;
|
||||
auto vers = json["versions"].toArray();
|
||||
for(int i=0; i<vers.size(); i++) {
|
||||
if(i) strBuf += "\n";
|
||||
strBuf += "["+QString::number(i)+"]:"+vers[i].toString();
|
||||
auto vers = json["versions"];
|
||||
for(auto &ver : vers) {
|
||||
if(! strBuf.isEmpty()) strBuf += ", ";
|
||||
strBuf += ver.toStr();
|
||||
}
|
||||
setText("fpga", strBuf);
|
||||
auto item = findItem(text("id"));
|
||||
if(item) {
|
||||
item->mCard.HardVersion = strBuf;
|
||||
}
|
||||
if(item) item->mCard.HardVersion = strBuf;
|
||||
});
|
||||
}
|
||||
void UpdateApkItem::OnCheckSoftVersions() {
|
||||
void UpdateApkItem::OnCheckSoftVersions(int repeat) {
|
||||
QJsonObject json;
|
||||
json.insert("_id", "CheckSoftVersions");
|
||||
json.insert("_type", "CheckSoftVersions");
|
||||
auto reply = NetReq("http://"+text("ip")+":2016/settings").timeout(60000).post(json);
|
||||
ConnReply(reply, fdProgress) [=] {
|
||||
if(treeWidget()==0) return;
|
||||
QJsonDocument json;
|
||||
QString err = checkReplyForJson(reply, &json);
|
||||
if(! err.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
auto apps = json["apps"].toArray();
|
||||
foreach(QJsonValue app, apps) {
|
||||
QString packageName = app["packageName"].toString();
|
||||
QString verName = app["versionName"].toString();
|
||||
if(packageName=="com.xixun.xixunplayer") setText("xixunplayer", verName);
|
||||
else if(packageName=="com.xixun.joey.cardsystem") setText("cardsystem", verName);
|
||||
else if(packageName=="net.sysolution.starter") setText("starter", verName);
|
||||
else if(packageName=="net.sysolution.taxiapp") setText("taxiapp", verName);
|
||||
else if(packageName=="com.xixun.display") setText("displayer", verName);
|
||||
else if(packageName=="com.xixun.xy.conn") setText("connection", verName);
|
||||
else if(packageName=="com.xixun.xy.update") setText("update", verName);
|
||||
JValue json;
|
||||
auto err = errStrWithJson(reply, &json);
|
||||
if(! err.isEmpty()) return;
|
||||
QString playerVer;
|
||||
auto apps = json["apps"];
|
||||
for(auto &app : apps) {
|
||||
auto packageName = app["packageName"].toStr();
|
||||
if(packageName=="com.xixun.xixunplayer") playerVer = app["versionName"].toStr();
|
||||
else if(packageName=="com.xixun.joey.cardsystem") setText("cardsystem", app["versionName"].toStr());
|
||||
else if(packageName=="net.sysolution.starter") setText("starter", app["versionName"].toStr());
|
||||
else if(packageName=="net.sysolution.taxiapp") setText("taxiapp", app["versionName"].toStr());
|
||||
else if(packageName=="com.xixun.display") setText("displayer", app["versionName"].toStr());
|
||||
else if(packageName=="com.xixun.xy.conn") setText("connection", app["versionName"].toStr());
|
||||
else if(packageName=="com.xixun.xy.update") setText("update", app["versionName"].toStr());
|
||||
}
|
||||
setText("playerVer", playerVer);
|
||||
auto item = findItem(text("id"));
|
||||
if(item) item->mCard.playerVer = playerVer;
|
||||
if(playerVer.isEmpty() && repeat) OnCheckSoftVersions(repeat-1);
|
||||
});
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@ public:
|
|||
setToolTip(remarks, tip);
|
||||
setForeground(remarks, color);
|
||||
}
|
||||
void OnCheckSoftVersions();
|
||||
void OnCheckSoftVersions(int = 0);
|
||||
void OnCheckFpgaVersions();
|
||||
|
||||
QLabel *fdOnline;
|
||||
|
|
|
@ -506,15 +506,15 @@ void DevicePanel::init(DeviceItem *item) {
|
|||
json.insert("_type", "GetBuildInformation");
|
||||
auto reply = NetReq("http://"+item->mCard.ip+":2016/settings").timeout(120000).post(json);
|
||||
ConnReply(reply, item) [=] {
|
||||
QJsonDocument json;
|
||||
QString err = checkReplyForJson(reply, &json);
|
||||
JValue json;
|
||||
auto err = errStrWithJson(reply, &json);
|
||||
if(! err.isEmpty()) return;
|
||||
item->mCard.BrightnessLevel = json["BrightnessLevel"].toInt();
|
||||
item->mCard.FirmwareVersion = json["FirmwareVersion"].toString();
|
||||
item->mCard.HardVersion = json["HardVersion"].toString();
|
||||
item->mCard.ScreenResolution = json["ScreenResolution"].toString();
|
||||
item->mCard.IMEI = json["IMEI"].toString();
|
||||
auto androidVersion = json["AndroidVersion"].toString();
|
||||
item->mCard.FirmwareVersion = json["FirmwareVersion"].toStr();
|
||||
item->mCard.HardVersion = json["HardVersion"].toStr();
|
||||
item->mCard.ScreenResolution = json["ScreenResolution"].toStr();
|
||||
item->mCard.IMEI = json["IMEI"].toStr();
|
||||
auto androidVersion = json["AndroidVersion"].toStr();
|
||||
if(! androidVersion.isEmpty()) item->mCard.androidVersion = androidVersion;
|
||||
});
|
||||
|
||||
|
@ -524,8 +524,8 @@ void DevicePanel::init(DeviceItem *item) {
|
|||
json.insert("_type", "GetScreenSize");
|
||||
reply = NetReq("http://"+item->mCard.ip+":2016/settings").timeout(120000).post(json);
|
||||
ConnReply(reply, item) [=] {
|
||||
QJsonDocument json;
|
||||
QString err = checkReplyForJson(reply, &json);
|
||||
JValue json;
|
||||
auto err = errStrWithJson(reply, &json);
|
||||
if(! err.isEmpty()) return;
|
||||
item->mCard.mWidth = json["width"].toInt();
|
||||
item->mCard.mHeight = json["height"].toInt();
|
||||
|
@ -538,8 +538,8 @@ void DevicePanel::init(DeviceItem *item) {
|
|||
json.insert("_type", "GetBrightness");
|
||||
reply = NetReq("http://"+item->mCard.ip+":2016/settings").timeout(120000).post(json);
|
||||
ConnReply(reply, item) [=] {
|
||||
QJsonDocument json;
|
||||
QString err = checkReplyForJson(reply, &json);
|
||||
JValue json;
|
||||
auto err = errStrWithJson(reply, &json);
|
||||
if(! err.isEmpty()) return;
|
||||
item->mCard.bright = json["brightnessPercentage"].toInt(-1);
|
||||
if(item->mCard.bright==-1) item->mCard.bright = qRound(json["brightness"].toInt() * 100.0 / item->mCard.BrightnessLevel);
|
||||
|
@ -550,8 +550,8 @@ void DevicePanel::init(DeviceItem *item) {
|
|||
json.insert("_type", "IsScreenOn");
|
||||
reply = NetReq("http://"+item->mCard.ip+":2016/settings").timeout(120000).post(json);
|
||||
ConnReply(reply, item) [=] {
|
||||
QJsonDocument json;
|
||||
QString err = checkReplyForJson(reply, &json);
|
||||
JValue json;
|
||||
auto err = errStrWithJson(reply, &json);
|
||||
if(! err.isEmpty()) return;
|
||||
item->mCard.isScreenOn = json["on"].toBool();
|
||||
item->setForeground("power"**mDeviceTable, item->mCard.isScreenOn ? Qt::green : Qt::red);
|
||||
|
@ -562,10 +562,10 @@ void DevicePanel::init(DeviceItem *item) {
|
|||
json.insert("_type", "GetCardAlias");
|
||||
reply = NetReq("http://"+item->mCard.ip+":2016/settings").timeout(120000).post(json);
|
||||
ConnReply(reply, item) [=] {
|
||||
QJsonDocument json;
|
||||
QString err = checkReplyForJson(reply, &json);
|
||||
JValue json;
|
||||
auto err = errStrWithJson(reply, &json);
|
||||
if(! err.isEmpty()) return;
|
||||
item->mCard.alias = QString::fromUtf8(QByteArray::fromBase64(json["alias"].toString().toLatin1()));
|
||||
item->mCard.alias = QString::fromUtf8(QByteArray::fromBase64(json["alias"].toStr().toLatin1()));
|
||||
item->setText("alias", item->mCard.alias);
|
||||
});
|
||||
|
||||
|
@ -574,8 +574,8 @@ void DevicePanel::init(DeviceItem *item) {
|
|||
json.insert("_type", "HasControllerPassword");
|
||||
reply = NetReq("http://"+item->mCard.ip+":2016/settings").timeout(120000).post(json);
|
||||
ConnReply(reply, item) [=] {
|
||||
QJsonDocument json;
|
||||
QString err = checkReplyForJson(reply, &json);
|
||||
JValue json;
|
||||
auto err = errStrWithJson(reply, &json);
|
||||
if(! err.isEmpty()) return;
|
||||
item->mCard.hasPassword = json["result"].toBool();
|
||||
if(item->mCard.hasPassword) {//加过密
|
||||
|
@ -583,6 +583,21 @@ void DevicePanel::init(DeviceItem *item) {
|
|||
item->btnUnlock->setIcon(QIcon(item->mCard.isLocked ? ":/res/Lock.png" : ":/res/UnLock.png"));
|
||||
} else item->btnUnlock->hide();
|
||||
});
|
||||
|
||||
json = QJsonObject();
|
||||
json.insert("_id", "CheckSoftVersions");
|
||||
json.insert("_type", "CheckSoftVersions");
|
||||
reply = NetReq("http://"+item->mCard.ip+":2016/settings").timeout(120000).post(json);
|
||||
ConnReply(reply, item) [=] {
|
||||
JValue json;
|
||||
auto err = errStrWithJson(reply, &json);
|
||||
if(! err.isEmpty()) return;
|
||||
auto apps = json["apps"];
|
||||
for(auto &app : apps) if(app["packageName"].toStr().contains("xixunplayer")) {
|
||||
item->mCard.playerVer = app["versionName"].toStr();
|
||||
return;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
ImgDlg::ImgDlg(const QByteArray &data, QWidget *parent) : QDialog(parent) {
|
||||
|
|
|
@ -45,6 +45,21 @@ QString checkReply(QNetworkReply *reply, QJsonDocument *outJson) {
|
|||
}
|
||||
return "";
|
||||
}
|
||||
QString errStrWithJson(QNetworkReply *reply, JValue *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;
|
||||
}
|
||||
QString error;
|
||||
auto json = JFrom(data, &error);
|
||||
if(! error.isEmpty()) return "JSON Error: "+error+"\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 = json;
|
||||
return "";
|
||||
}
|
||||
QString checkReplyForJson(QNetworkReply *reply, QJsonDocument *outJson, QByteArray *outData) {
|
||||
auto err = errStr(reply);
|
||||
auto data = reply->readAll();
|
||||
|
|
|
@ -1,20 +1,22 @@
|
|||
#ifndef GLOBALDEFINE_H
|
||||
#define GLOBALDEFINE_H
|
||||
|
||||
#include "gutil/qjson.h"
|
||||
#include <QJsonDocument>
|
||||
#include <QNetworkReply>
|
||||
|
||||
struct LedCard {
|
||||
QString id;
|
||||
QString ip;
|
||||
int mWidth{0};
|
||||
int mHeight{0};
|
||||
int bright{100};
|
||||
int BrightnessLevel{255};
|
||||
int mWidth = 0;
|
||||
int mHeight = 0;
|
||||
int bright = 100;
|
||||
int BrightnessLevel = 255;
|
||||
QString FirmwareVersion;
|
||||
QString HardVersion = "0000";
|
||||
QString ScreenResolution;
|
||||
QString androidVersion;
|
||||
QString playerVer;
|
||||
QString alias;
|
||||
QString IMEI;
|
||||
bool hasPassword{false};
|
||||
|
@ -87,6 +89,7 @@ inline int verCompare(const QString& a, const QString& b) {
|
|||
}
|
||||
|
||||
QString checkReply(QNetworkReply *, QJsonDocument * = 0);
|
||||
QString errStrWithJson(QNetworkReply *, JValue * = 0, QByteArray * = 0);
|
||||
QString checkReplyForJson(QNetworkReply *, QJsonDocument * = 0, QByteArray * = 0);
|
||||
QString checkReplyForJson(QNetworkReply *, QString errField);
|
||||
|
||||
|
|
|
@ -35,6 +35,13 @@ SendProgramDialog::SendProgramDialog(QString progName, QWidget *parent) : QDialo
|
|||
int sentCnt = 0;
|
||||
SendProgramItem *item;
|
||||
auto remarks = "remarks"**table;
|
||||
for(int rr=0; rr<cnt; rr++) if(! (item = (SendProgramItem*) table->topLevelItem(rr))->isHidden() && item->checkState("id") == Qt::Checked && ! item->isSending) {
|
||||
auto playerVer = item->text("playerVer");
|
||||
if(! playerVer.isEmpty() && playerVer[0]>='a' && playerVer[0]<='z') {
|
||||
if(QMessageBox::No == QMessageBox::question(this, tr("Info"), tr("Some player versions are too low and may not be compatible. It's recommended to update the player to 2.0. Or download the old version %1 from website").arg("<a href='https://ledok.cn/download.html'>LedOK Express 1.4.1</a>")+"<br>\n"+tr("Do you want to continue?"))) return;
|
||||
break;
|
||||
}
|
||||
}
|
||||
for(int rr=0; rr<cnt; rr++) if(! (item = (SendProgramItem*) table->topLevelItem(rr))->isHidden() && item->checkState("id") == Qt::Checked && ! item->isSending) {
|
||||
if(item->btnUnlock && item->isLocked) {
|
||||
item->setResult(tr("This screen is encrypted"), Qt::red);
|
||||
|
@ -101,6 +108,7 @@ SendProgramDialog::SendProgramDialog(QString progName, QWidget *parent) : QDialo
|
|||
end:
|
||||
item->setText("ip", card.ip);
|
||||
item->setText("alias", card.alias);
|
||||
item->setText("playerVer", card.playerVer);
|
||||
item->setText("size", QString("%1 x %2").arg(card.mWidth).arg(card.mHeight));
|
||||
item->fdOnline->setPixmap({card.isOnline ? ":/res/online.png" : ":/res/offline.png"});
|
||||
if(! card.hasPassword) {
|
||||
|
@ -176,6 +184,7 @@ SendProgramDialog::SendProgramDialog(QString progName, QWidget *parent) : QDialo
|
|||
table->addCol("ip", "IP", 100);
|
||||
table->addCol("size", tr("Screen Size"), 80).alignC(),
|
||||
table->addCol("alias", tr("Alias"), 120);
|
||||
table->addCol("playerVer", "Player Ver", 70);
|
||||
table->addCol("encrypt", tr("Security"), 40);
|
||||
table->addCol("progress", tr("Progress"), 120);
|
||||
table->addCol("remarks", tr("Remarks"), QHeaderView::Stretch);
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
1093
LedOK/ts/app_pt.ts
1093
LedOK/ts/app_pt.ts
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user