diff --git a/LedOK/LedOK.pro b/LedOK/LedOK.pro
index 86b30b1..39e8702 100644
--- a/LedOK/LedOK.pro
+++ b/LedOK/LedOK.pro
@@ -17,7 +17,7 @@ CONFIG += embed_translations
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
TARGET = $$quote(LedOK Express)
-VERSION = 1.2.8
+VERSION = 1.2.9
DEFINES += APP_VERSION=\\\"$$VERSION\\\"
msvc {
@@ -304,6 +304,7 @@ LIBS += -L$$PWD/ffmpeg/lib/\
-lswscale
copy.files += $$files(ffmpeg/lib/*.dll)
+copy.files += ffmpeg/lib/ffmpeg.exe
include(./xlsx/qtxlsx.pri)
include(./QSimpleUpdater/QSimpleUpdater.pri)
diff --git a/LedOK/deviceitem.cpp b/LedOK/deviceitem.cpp
index 17df320..9f8d5eb 100644
--- a/LedOK/deviceitem.cpp
+++ b/LedOK/deviceitem.cpp
@@ -373,21 +373,6 @@ void DeviceItem::OnProHttpResponse(QString url, QString postMD5, QByteArray data
emit sigOutputInfo(m_pLedCard->m_strCardId+":"+tr("receive")+"<-"+tr("GetScreenStatus")+tr("success")+","+tr("Status")+":"+tr("off"));
}
}
- }
- else if(strType == "GetEthernet")
- {
- QString strDhcp="";
- if(jsonObject["dhcp"].toBool())
- {
- strDhcp=tr("DHCP IP");
- }
- else {
- strDhcp=tr("STATIC IP");
-
- }
- emit sigOutputInfo(m_pLedCard->m_strCardId+":"+strDhcp+","+"IP:"+jsonObject["ipAddr"].toString()+" GateWay:"+jsonObject["gateWay"].toString()+" Mask:"+jsonObject["netMask"].toString()+" Dns:"+jsonObject["dnsAddr"].toString());
-
-
}
else if(strType == "VerifyPassword")
{
diff --git a/LedOK/main.cpp b/LedOK/main.cpp
index d4719a2..f72ce99 100644
--- a/LedOK/main.cpp
+++ b/LedOK/main.cpp
@@ -20,7 +20,7 @@ LONG WINAPI handleException(_EXCEPTION_POINTERS *excep) {
MINIDUMP_EXCEPTION_INFORMATION dumpInfo{GetCurrentThreadId(), excep, TRUE};
MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hDumpFile, MiniDumpNormal, &dumpInfo, NULL, NULL);//写入Dump文件内容
CloseHandle(hDumpFile);
- QMessageBox::critical(nullptr, "程序出错", "程序出错! (code: "+errCode+". addr: "+errAddr+")
请将C盘下的 ledok-crash.dmp 文件发送到 gangphon@qq.com 邮箱, 研发人员会尽快处理.");
+ QMessageBox::critical(nullptr, "程序出错 (ver: " APP_VERSION")", "程序出错! (code: "+errCode+". addr: "+errAddr+")
请将C盘下的 ledok-crash.dmp 文件发送到 gangphon@qq.com 邮箱, 研发人员会尽快处理.");
return EXCEPTION_EXECUTE_HANDLER;
// EXCEPTION_EXECUTE_HANDLER 已处理异常, 让 windows 正常结束
// EXCEPTION_CONTINUE_SEARCH 未处理异常, 让 windows 弹出错误框并结束 (Qt会卡死一段时间)
diff --git a/LedOK/mainwindow.cpp b/LedOK/mainwindow.cpp
index e1506ed..b5e7a95 100644
--- a/LedOK/mainwindow.cpp
+++ b/LedOK/mainwindow.cpp
@@ -14,6 +14,7 @@
#include
QWidget *gMainWin;
+extern QPoint gPlayPos;
class ImgBtn : public QToolButton {
public:
@@ -106,6 +107,8 @@ MainWindow::MainWindow(QWidget *parent) : BaseWin(parent) {
else resize(1280, 720);
if(settings.value("MainIsMax", false).toBool()) setWindowState(Qt::WindowMaximized);
+ gPlayPos = settings.value("PlayPos").toPoint();
+
setWindowTitle("LedOK Express");
icon.load(":/res/Logo.png");
titlePos = QPointF(26, 80);
@@ -392,6 +395,7 @@ MainWindow::~MainWindow() {
if(act) settings.setValue("Language", act->objectName());
settings.setValue("MainGeo", normalGeometry());
settings.setValue("MainIsMax", isMaximized());
+ settings.setValue("PlayPos", gPlayPos);
if(m_pTimerSendResoreIpOneKey!=nullptr) {
if(m_pTimerSendResoreIpOneKey->isActive()) m_pTimerSendResoreIpOneKey->stop();
diff --git a/LedOK/player/playwin.cpp b/LedOK/player/playwin.cpp
index 8be15cc..4d6f77a 100644
--- a/LedOK/player/playwin.cpp
+++ b/LedOK/player/playwin.cpp
@@ -18,14 +18,21 @@
#include
#include
#include
+#include
PlayWin* PlayWin::self = nullptr;
+QPoint gPlayPos{0, 0};
Page::Page(QWidget *parent) : QWidget{parent} {
}
-PlayWin::PlayWin(QString dir, int x, int y, int width, int height, const QJsonObject &aprog, QWidget *parent) : QWidget(parent) {
+PlayWin *PlayWin::newIns(int width, int height, QString dir, const QJsonObject &aprog, QWidget *parent) {
+ if(! gPlayPos.isNull() && QGuiApplication::screenAt(QPoint(gPlayPos.x()+width/2, gPlayPos.y()+height/2))==0) gPlayPos = QPoint();
+ return new PlayWin(gPlayPos.x(), gPlayPos.y(), width, height, dir, aprog, parent);
+}
+
+PlayWin::PlayWin(int x, int y, int width, int height, QString dir, const QJsonObject &aprog, QWidget *parent) : QWidget(parent) {
setAttribute(Qt::WA_DeleteOnClose);
setAttribute(Qt::WA_QuitOnClose, false);
setWindowFlag(Qt::FramelessWindowHint);
@@ -127,11 +134,13 @@ PlayWin::PlayWin(QString dir, int x, int y, int width, int height, const QJsonOb
if(page->timeSpan>0) pages.append(page);
}
setVisible(true);
- Page* page0 = pages[0];
- EleBase* eleptr;
- for(int ee=0; eeeles.size(); ee++) if((eleptr = &page0->eles[ee])->startTime > 0 || eleptr->endTime < page0->timeSpan) {
- if(eleptr->startTime > 0) timerMap.insert(startTimer(eleptr->startTime), TimerValue(eleptr->wgt, true));
- timerMap.insert(startTimer(eleptr->endTime), TimerValue(eleptr->wgt, false));
+ if(! pages.isEmpty()) {
+ Page* page0 = pages[0];
+ EleBase* eleptr;
+ for(int ee=0; eeeles.size(); ee++) if((eleptr = &page0->eles[ee])->startTime > 0 || eleptr->endTime < page0->timeSpan) {
+ if(eleptr->startTime > 0) timerMap.insert(startTimer(eleptr->startTime), TimerValue(eleptr->wgt, true));
+ timerMap.insert(startTimer(eleptr->endTime), TimerValue(eleptr->wgt, false));
+ }
}
menu = new QMenu(this);
@@ -179,7 +188,7 @@ void PlayWin::timerEvent(QTimerEvent *e){
}
}
void PlayWin::paintEvent(QPaintEvent *e){
- if(timer==nullptr && isVisible()) {
+ if(timer==nullptr && isVisible() && ! pages.isEmpty()) {
if(cur!=0) {
pages[cur]->setVisible(false);
cur = 0;
@@ -215,4 +224,5 @@ void PlayWin::contextMenuEvent(QContextMenuEvent *event){
}
void PlayWin::closeEvent(QCloseEvent *) {
if(self==this) self = nullptr;
+ gPlayPos = pos();
}
diff --git a/LedOK/player/playwin.h b/LedOK/player/playwin.h
index bbff8ee..9caa8f1 100644
--- a/LedOK/player/playwin.h
+++ b/LedOK/player/playwin.h
@@ -20,10 +20,14 @@ public:
QWidget* ele;
bool visible;
};
-class PlayWin : public QWidget{
+
+class PlayWin : public QWidget {
Q_OBJECT
public:
- static PlayWin* self;
+ static PlayWin *self;
+ static PlayWin *newIns(int width, int height, QString dir, const QJsonObject &prog, QWidget *parent = nullptr);
+ PlayWin(int x, int y, int width, int height, QString dir, const QJsonObject &prog, QWidget *parent = nullptr);
+
SyncTimer* timer = nullptr;
int cur = 0;
QVector pages;
@@ -31,7 +35,6 @@ public:
QPoint mPressRel;
QMenu *menu;
- PlayWin(QString dir, int x, int y, int width, int height, const QJsonObject &prog, QWidget *parent = nullptr);
public slots:
void sltNext();
void sltSetVisible(QWidget *wgt, bool visible){
diff --git a/LedOK/progpanel.cpp b/LedOK/progpanel.cpp
index b934283..57286bc 100644
--- a/LedOK/progpanel.cpp
+++ b/LedOK/progpanel.cpp
@@ -81,7 +81,7 @@ ProgPanel::ProgPanel(QWidget *parent) : QWidget(parent) {
QJsonObject prog = QJsonDocument::fromJson(value.toUtf8(), &jsErr).object();
if(jsErr.error) return;
if(PlayWin::self!=nullptr) PlayWin::self->close();
- PlayWin::self = new PlayWin(dir, 0, 0, item->width(), item->height(), prog);
+ PlayWin::self = PlayWin::newIns(item->width(), item->height(), dir, prog);
break;
}
}
diff --git a/LedOK/tools.h b/LedOK/tools.h
index 18c7085..2b82f00 100644
--- a/LedOK/tools.h
+++ b/LedOK/tools.h
@@ -46,7 +46,7 @@ public:
static int color2Int(const QColor& color);
static QBrush getBrush(const QColor& color);
static QString selectStr(bool f, const QString &s0, const QString &s1 = "");
- static QString convertFileSize(const qlonglong & bytes) ;
+ static QString convertFileSize(const qlonglong & bytes);
static QString styleSheet();
~Tools() {
killTimer(timer_id);
diff --git a/LedOK/translations/app_en.ts b/LedOK/translations/app_en.ts
index 7397840..7b4c9d4 100644
--- a/LedOK/translations/app_en.ts
+++ b/LedOK/translations/app_en.ts
@@ -491,669 +491,673 @@
ControlNetConfigWidget
-
- Form
+ Form
-
+
Wire Enther(RJ45) Configuration
-
-
+
+
-
-
+
+
Specify IP
-
-
+
+
IP Address
-
+
Subnet mask
-
-
+
+
Gateway
-
-
+
+
DNS Address
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
Set
-
-
-
-
-
-
-
+
+
+
+
+
+
Readback
-
-
+
+
WiFi Configuration
-
-
+
+
WiFi On/Off
-
+
Input ap name
-
-
+
+
Cellular Configuration
-
-
+
+
Enable cellular data
-
+
-
-
+
+
Get cellular network status information
-
-
+
+
Through the chcek status button, you can automatically match the country code MCC, and then select "operator" to get the response APN information. If you can't find the operator, you can select the "custom" check box, and then enter the APN information manually.
-
-
+
+
Readback APN Info
-
-
+
+
Set the APN information
-
-
+
+
CUSTOM
-
-
+
+
chcek SIM Info
-
-
-
+
+
+
-
-
+
+
Country ID(mcc):
-
-
+
+
Carrier Name
-
-
+
+
Carrier APN:
-
-
+
+
APN(Required)
-
-
+
+
User Name:
-
-
-
-
+
+
+
+
Not required
-
-
+
+
Password:
-
+
-
-
+
+
Flight Mode
-
-
+
+
WiFi name
-
-
-
-
+
+
+
+
Password
-
-
-
-
+
+
+
+
Input password
-
-
+
+
Scan
-
-
+
+
AP
-
+
AP name
-
+
OFF
-
+
ON
-
+
AP name
-
+
Subnet mask
-
+
Input AP name
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
Success
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
failed
-
-
-
-
+
+
+
+
Tip
-
-
+
+
Please select screen first
-
-
+
+
Set wire nether
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
Attention
-
+
Please input IP address!
-
+
IP Address is invalid!
-
+
Please input Mask address!
-
+
Mask Address is Invalid!
-
+
Please input Gateway address!
-
+
Gateway Address is Invalid!
-
+
Please input DNS address!
-
+
DNS Address is Invalid!
-
+
+
Get wire ethernet
-
+
+
+ DHCP IP
+
+
+
+
+ STATIC IP
+
+
+
+
+ Error
+
+
+
Set WiFi on/off
-
-
-
-
-
-
+
+
+
+
+
+
Signal strength
-
-
+
+
Configuration WiFi
-
+
Get AP or WiFi
-
+
Scan WiFi list
-
+
Configuration AP HotSpot
-
+
Get Current Apn
-
-
+
+
Get SIM Status
-
-
+
Set APN
-
-
+
+
-
+
Status:
-
+
unknown
-
+
Lock status, need user's pin code to unlock
-
+
In the locked state, the PUK code of the user is required to be unlocked
-
+
In the locked state, the PIN code of the user is required to be unlocked
-
+
be ready
-
+
no checked sim card
-
+
MCC:
-
+
number:
-
+
User name:
-
+
Signal:
-
+
Signal OK
-
+
Not in service area
-
+
Emergency call only
-
+
RF off
-
+
Network type:
-
+
unKnown
-
+
GPRS
-
+
EDGE
-
+
UMTS
-
+
CDM
-
+
EVDO,revision 0.
-
+
EVDO,revision A.
-
+
1xRTT
-
+
HSDPA
-
+
HSUPA
-
+
HSPA
-
+
roam:
-
+
Yes
-
+
No
-
+
Data connection status:
-
+
OFF
-
+
connecting
-
+
Connected
-
+
suspend
-
+
Data active sleep state:
-
+
Active, but no data sent and received
-
+
Activity, receiving data
-
+
Activity, sending data
-
+
Activity, receiving and sending data
-
+
Sleep state
-
+
Signal strength:
-
+
SetSwitchSimData
-
+
Set flight mode
-
+
Readback flight mode state
@@ -2336,673 +2340,691 @@
CtrlAdvancedPanel
-
+
Advanced parameters
-
+
Screen Width(pixel)
-
+
Width
-
-
+
+
Height
-
-
-
-
-
-
-
+
+
+
+
+
+
+
Set
-
+
Alias
-
+
Web Server Address:
-
+
-
+
-
+
-
+
-
+
-
+
-
+
Realtimer Server Address:
-
+
Clear
-
+
Apk upgrade
-
+
Check Apk
-
+
Uninstall
-
+
Running check
-
+
FPGA version check
-
+
Sync FPGA version
-
+
Restart led controller system
-
+
Check Log
-
+
Start LedSet4.0 (Apk Display2.0 and higher)
-
+
Open ADB debugging function
-
+
Post Custom JSON
-
-
-
-
-
-
-
+
+
+
+
+
+
+
Clear Program
-
+
-
+
M80 configuration
-
+
Refresh
-
+
Restore to default
-
+
Taxi top screen configuration
-
+
Service:High Out of service:Low
-
+
Service:Low Out of service:High
-
+
Start LedSet3.0 configure LED module (used by manufacturer's professionals)
-
+
Binding *.ic account indentity voucher
-
+
Rotate
-
+
0 degrees
-
+
90 degrees
-
+
180 degrees
-
+
270 degrees
-
+
Min brightness
-
+
(min:1)
-
-
-
+
+
+
Readback
-
-
-
+
+
+
Send
-
+
Max brightness
-
+
(max:255)
-
-
+
+
Set Screen Size
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Success
-
+
Company ID
-
+
FPGA Upgrade
-
+
Company ID
-
+
Please enter web server address
-
+
Please enter company ID
-
+
Are you sure you want to configure the server address and company ID?
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
failed
-
-
+
+
Set Web server address
-
+
Clear
-
+
Please enter the realtimer address
-
+
Set realtimer address
-
-
-
-
+
+
+
+
Tip Info
-
-
-
+
+
+
Can not find LedSet3.0.exe,down you need download and install it
-
+
Restart
-
+
FPGA Version
-
+
+
running
-
+
+
no running
-
+
Check Apk Version
-
+
+
Uninstall
-
+
+
Check apk running status
-
+
-
+
Check FPGA version
-
-
-
+
+
+
Sync FPGA version
-
+
Watch the progress of screen upgrade until the upgrade is finished
-
+
Open ADB debugging function
-
+
indentity voucher (*.ic)
-
-
+
+
+
+
+
Binding certificate
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
-
+
+
Upgrade firmware
-
+
This screen is encrypted,Please decrypt and upgrade APK!
-
+
+
+
+
+
+
+
-
-
+
+
Timeout
-
-
+
+
-
+
-
-
+
+
+
+
+
+
+
+
Error
-
+
+
+
+
+
+
-
-
+
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
+
+
+
+
Set screen rotation
-
+
Set min brightness value
-
+
Set maximum brightness value
-
+
Get min brightness
-
+
Get maximum brightness
-
+
Set Special Resolution
-
+
Get Special Resolution
-
+
Restore to default relolution
-
+
Set level for busy
-
+
Get level of busy
-
+
Start installation...
-
+
Please input alias
-
-
+
+
Set alias
@@ -3019,76 +3041,85 @@
Clear program timeout!
-
+
Uploading
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tip
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Please select screen first
-
+
Please enter the correct width pixel value
-
+
Please enter the correct height pixel value
-
+
Password is error
-
-
-
+
+
+
DeviceItem OnProHttpResponse json error!
@@ -3098,34 +3129,34 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
Tip
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
Please select screen first
@@ -3141,19 +3172,19 @@
-
+
Get brightness sensitivity
-
-
+
+
Set min brightness value
-
-
+
+
Get min brightness
@@ -3162,221 +3193,221 @@
brightnenss
-
-
+
+
Please select sensor type first
-
-
+
+
Set sensor brightness table
-
+
Get sensor bright table
-
+
no sensor brightnessTable in controller
-
+
Save file
-
-
+
+
Get Current Brightness
-
-
+
+
Set brightness
-
+
Get brightness
-
+
Screen Brightness
-
-
+
+
-
+
-
+
Save file
-
+
Brightness Value
-
+
Start Time
-
+
End Time
-
-
+
+
Send brightness schedule table
-
+
Get brightness schedule
-
-
-
-
+
+
+
+
Error
-
+
Brightness configuration
-
+
Auto
-
+
Manual
-
+
Schedule
-
+
If the maximum brightness is 64, the minimum brightness can be configured as 1% or appropriate value; if the maximum brightness is 255, the minimum brightness must be configured as 36% or above, otherwise the brightness will be low.
-
+
When uploading the file, please confirm to select the correct sensor type, otherwise it will be invalid!
-
+
Sensitivity
-
+
Minimum Brightness
-
-
+
+
Set
-
+
Upload file
-
-
-
+
+
+
Readback
-
+
Readback
-
+
Refresh
-
+
Cur Brigntness
-
+
Brightness value
-
+
Default brightness
-
+
Add
-
+
Clear
-
+
Delete
-
+
Import
-
+
Export
-
+
Apply
-
+
Tip: within the setting time is the setting brightness, and outside the setting time is the default brightness. For example, set the default brightness to 80, set the brightness to 180, and the time range to 8:00-17:00, then the brightness in the time range is 180, and the default brightness in other times is 80!
@@ -3384,14 +3415,15 @@
Def
-
-
+
+
+
Success
@@ -3408,7 +3440,7 @@
Tip Info
-
+
Fail
@@ -3515,12 +3547,12 @@
Screenshot
-
+
Input password
-
+
readback screenshot
@@ -3570,241 +3602,239 @@
Detail Info
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
-
+
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
Receive
-
+
Set power
-
+
-
-
+
+
GetScreenStatus
-
-
+
+
Status
-
- DHCP IP
+ DHCP IP
-
- STATIC IP
+ STATIC IP
-
+
Tip Info
-
+
password is wrong
-
+
Get brightness
-
-
-
+
+
+
brightnenss
-
+
Configure master slave identity
-
+
Set brightness
-
-
+
+
Set min brightness value
-
+
Get brightness sensitivity
-
+
sensitivity
-
+
Get min brightness
-
+
SetSensorBrightnessTable
-
+
Set WiFi on/off
-
+
Configuration WiFi
-
+
Configuration AP HotSpot
-
+
GetSwitchWiFi
-
+
Send brightness schedule table
-
+
Set volume schedule
-
+
Set Volume
-
+
Get Volume
-
+
Set schedule task of screen power
-
+
Get date time
-
+
Set level for busy
-
-
+
+
Get level of busy
-
+
Service:Low Out of service:High
-
+
Service:High Out of service:Low
-
-
-
+
+
+
Get AP or WiFi
-
+
WifiName
-
+
Ap Name
@@ -3813,284 +3843,284 @@
Set Screen Size
-
+
Test screen
-
+
Set Web server address
-
+
Set realtimer address
-
+
Get web server address
-
+
Get realtime server address
-
+
SetNtpServer
-
+
GetNtpServer
-
+
SyncTime
-
+
Clear program
-
+
Set sync method
-
+
Get Current Brightness
-
+
Cur brightness
-
+
Set Special Resolution
-
+
Get Special Resolution
-
+
FPGA total resoltuion
-
+
Cur display resolution
-
+
Restore to default relolution
-
+
Set maximum brightness value
-
+
Get maximum brightness
-
+
Switch Screen
-
-
-
+
+
+
On
-
-
-
+
+
+
Close
-
+
LAN
-
+
Connect
-
+
timeout
-
+
Anycast
-
-
+
+
Volume
-
-
-
-
-
-
+
+
+
+
+
+
Geting Sync Method
-
-
+
+
Identification Code
-
-
+
+
Time offset
-
-
+
+
msec
-
-
-
-
+
+
+
+
Other sync items
-
-
-
-
+
+
+
+
Last Synchronous Time
-
+
Synchronization interval
-
+
Uploadding
-
+
Success
-
+
failed
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
-
-
-
-
-
-
-
-
+
+
+
+
success
-
-
+
+
Lora identity
-
+
Master
-
+
Slave
-
+
Set brightness sensitivity
-
-
-
+
+
+
ON
-
-
-
+
+
+
OFF
@@ -4098,89 +4128,89 @@
DevicePanel
-
-
+
+
ALL
ALL
-
+
Online
Online
-
-
+
+
Refresh
Refresh
-
-
+
+
Specify IP
Specify IP
-
+
Current screen
-
+
none
-
+
Screen ID
-
+
Screen IP
-
+
Screen Size
-
+
Alias
-
+
Screenshot
-
+
send
-
+
More Info
-
+
Screen Current Brightness
-
+
Power Status
-
+
encryption
@@ -5142,53 +5172,54 @@
EVideo
-
+
Basic properties
-
+
File
-
+
-
+
Play Duration
-
+
Select File
-
+
s
-
+
Play Times
-
+
-
-
+
+
-
+
+
Error
@@ -5290,83 +5321,83 @@
MainWindow
-
+
Language
-
+
Help
-
-
+
+
Check for updates
-
-
+
+
Firmware management
-
-
+
+
Software Configuration
-
-
+
+
-
-
+
+
About
-
-
+
+
Setting
-
+
Termianls
-
+
Solutions
-
+
Terminal Control
-
+
Lora screen
-
+
Detect
-
+
Tip Info
-
+
This operation will fix all the control cards in the LAN that are not in the same network segment as the computer IP. Please be careful!
@@ -6031,7 +6062,7 @@
This screen is encrypted
-
+
ALL
@@ -6386,7 +6417,7 @@
UpgradeApkDialog
-
+
Upgrade apk
@@ -6402,154 +6433,154 @@
-
+
Select apk
-
-
+
+
Upgrade
-
+
-
+
Uninstall
-
+
check running state
-
+
Select Fpga
-
+
-
+
Refresh
-
+
Cancel
-
+
Screen ID
-
+
Alias
-
+
Online
-
+
Screen IP
-
+
encryption
-
+
Progress
-
+
-
+
-
+
-
+
-
+
-
+
-
+
FPGA
-
+
-
+
State
-
-
-
+
+
+
ALL
-
+
The encrypted control card can be upgraded directly
-
+
-
+
@@ -7564,7 +7595,7 @@
-
+
Check apk running status
@@ -7593,50 +7624,50 @@
-
+
Sync FPGA
-
+
Tip Info
-
+
password is wrong
-
-
+
+
Uninstall
-
-
+
+
Success
-
+
Running
-
+
Not running
-
+
Install success
-
-
+
+
Fail
diff --git a/LedOK/translations/app_ja.ts b/LedOK/translations/app_ja.ts
index 1f6ae64..2d723f4 100644
--- a/LedOK/translations/app_ja.ts
+++ b/LedOK/translations/app_ja.ts
@@ -491,669 +491,673 @@
ControlNetConfigWidget
-
- リフレッシュ
+ リフレッシュ
-
+
有線ネットワークの設定
-
-
+
+
-
-
+
+
指定IP
-
-
+
+
IPアドレス
-
+
サブネットマスク
-
-
+
+
ゲートウェイ
-
-
+
+
DNSアドレス
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
セット
-
-
-
-
-
-
-
+
+
+
+
+
+
読み戻し
-
-
+
+
WiFiの設定
-
-
+
+
WiFi機能
-
+
入力AP名
-
-
+
+
セルラーデータ構成
-
-
+
+
セルラーデータを有効にする
-
+
-
-
+
+
セルラーネットワーク状態情報を取得する
-
-
+
+
チェックシムは自動的にMCCに一致することができますし、キャリアー取得APNパームを選択し、キャリアが見つからない場合は、カスタムチェックボックスをチェックし、カスタムパームを入力します。
-
-
+
+
APN情報を読み返す
-
-
+
+
APN情報を設定する
-
-
+
+
カスタム
-
-
+
+
SIM情報の照会
-
-
-
+
+
+
-
-
+
+
国号(mcc):
-
-
+
+
運営者
-
-
+
+
キャリアAPN:
-
-
+
+
APN(必ず記入)
-
-
+
+
ユーザ名:
-
-
-
-
+
+
+
+
必要でない
-
-
+
+
パスワード:
-
+
-
-
+
+
飛行モード
-
-
+
+
WiFiの名前
-
-
-
-
+
+
+
+
パスワード
-
-
-
-
+
+
+
+
パスワードを入力
-
-
+
+
スキャン
-
-
+
+
APエネルギー
-
+
APの名前
-
+
オフ
-
+
オン
-
+
AP名
-
+
サブネットマスク
-
+
APの名前を入力
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
成功
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
失敗
-
-
-
-
+
+
+
+
提示
-
-
+
+
先に大きいスクリーンを選んでください
-
-
+
+
有線網を設置する
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
注意
-
+
IPアドレスを入力してください!
-
+
IPアドレスが無効です!
-
+
サブネットマスクの住所を入力してください!
-
+
マスクアドレスが無効です!
-
+
ゲートウェイのアドレスを入力してください!
-
+
ゲートウェイアドレスが無効です!
-
+
DNSアドレスを入力してください!
-
+
DNSアドレスを入力してください!
-
+
+
有線ネットワークの設定を取得
-
+
+
+ DHCP IP
+
+
+
+
+ 静的IP
+
+
+
+
+ エラー
+
+
+
WiFiスイッチの設定
-
-
-
-
-
-
+
+
+
+
+
+
信号強度
-
-
+
+
WiFiの設定
-
+
ホットスポットとWiFiモードの取得
-
+
スキャンWiFi
-
+
ホットスポットの設定
-
+
APN情報の取得
-
-
+
+
SIM状態を取得
-
-
+
APNの設定
-
-
+
+
-
+
状態:
-
+
不明
-
+
ロック状態は、ユーザのPINコードのロック解除が必要です
-
+
ロック状態は、ユーザのPUKコードのアンロックが必要です
-
+
ロック状態は、ユーザのPINコードのアンロックが必要です
-
+
準備完了
-
+
simカードが検出されませんでした
-
+
国号:
-
+
番号:
-
+
ユーザ:
-
+
信号:
-
+
信号が正常である
-
+
サービスエリアにはいません
-
+
緊急呼び出しのみ
-
+
無線周波数はすでに閉鎖されました
-
+
ネットワークタイプ:
-
+
不明
-
+
GPRS
-
+
EDGE
-
+
UMTS
-
+
CDM
-
+
EVDO,revision 0.
-
+
EVDO,revision A.
-
+
1xRTT
-
+
HSDPA
-
+
HSUPA
-
+
HSPA
-
+
ローミング:
-
+
は
-
+
いいえ
-
+
データ接続状態:
-
+
切断
-
+
接続中
-
+
接続済み
-
+
一時停止
-
+
データアクティビティの休止状態:
-
+
アクティブですが、データ送信と受信はありません
-
+
アクティブ、データ受信中
-
+
イベント、データ送信中
-
+
イベント、データ受信と送信中
-
+
スリープ状態
-
+
信号の強度:
-
+
4G/5Gスイッチの設定
-
+
飛行モードの設定
-
+
飛行モード状態を取得
@@ -2336,673 +2340,691 @@
CtrlAdvancedPanel
-
+
上級パラメータ
-
+
画面幅(ピクセル)
-
+
幅
-
-
+
+
高さ
-
-
-
-
-
-
-
+
+
+
+
+
+
+
セット
-
+
別名
-
+
Webサーバのアドレス:
-
+
-
+
-
+
-
+
-
+
-
+
-
+
Realtimerアドレス:
-
+
クリア
-
+
APKアップグレード
-
+
APKを検出
-
+
アンマウント
-
+
運転状態モニタ
-
+
FPGAバージョンクエリ
-
+
同期FPGAバージョン
-
+
再起動
-
+
ログを見る
-
+
-
+
ADBデバッグ機能を開く
-
+
Post Custom JSON
-
-
-
-
-
-
-
+
+
+
+
+
+
+
番組をクリア
-
+
-
+
M 80の設定
-
+
更新
-
+
標準の値を復元
-
+
タクシートップ画面の設定
-
+
客がいます:高 客がいません:低
-
+
客がいます:低 客がいません:高
-
+
LedSet 3.0を使ってLEDモジュールを配置する(メーカーの専門家が使用する)
-
+
テーピングtaxihubプラットフォームのユーザーID証明書
-
+
回転
-
+
0度
-
+
90度
-
+
180度
-
+
270度
-
+
最低輝度
-
+
(最小:1)
-
-
-
+
+
+
読み戻し
-
-
-
+
+
+
送信
-
+
最高輝度
-
+
(マックス:255)
-
-
+
+
スクリーンのピクセルサイズを設定
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
成功
-
+
会社ID:
-
+
FPGAアップグレード
-
+
会社ID
-
+
Webサーバのアドレスを入力してください
-
+
会社IDを入力してください
-
+
設定サーバアドレスと会社IDを確認しますか?
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
失敗
-
-
+
+
ウェブサーバのアドレスを設定
-
+
クリア
-
+
RealTimerアドレスを入力してください
-
+
RealTimerアドレスを設定
-
-
-
-
+
+
+
+
ヒント
-
-
-
+
+
+
LEDSET 3.0 . exeを見つけることができません。ダウンロードしてインストールする必要があります
-
+
再起動
-
+
FPGAバージョン
-
+
+
実行中
-
+
+
実行されていません
-
+
チェック APK バージョン
-
+
+
アンマウント
-
+
+
APK運転状態監視
-
+
-
+
お問い合わせFPGAバージョン
-
-
-
+
+
+
ハードウェアバージョンの同期
-
+
画面のアップグレードの進捗を確認します
-
+
ADBデバッグ機能を開く
-
+
身分証明書(*.ic)
-
-
+
+
+
+
+
証明書をバインド
-
+
-
-
+
+
-
+
-
+
-
+
-
+
バージョン
-
-
+
+
ファームウェアをアップグレードする
-
+
この画面は、暗号化され、復号化し、アップグレードAPK!
-
+
+
+
+ パッケージ名は空です
+
+
+
プログラムクリア
-
-
+
+
タイムアウト
-
-
+
+
失敗
-
+
-
-
+
+
+
+
+
+
+
+
エラー
-
+
+
+ ファイルのオープンに失敗しました
+
+
+
-
-
+
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
+
+
+
+
画面の回転を設定する
-
+
最小輝度値を設定します
-
+
輝度最大値を設定
-
+
輝度最小値を取得
-
+
輝度最大値を取得
-
+
解像度を設定
-
+
読み込み解像度
-
+
デフォルトの解像度を復元
-
+
客レベルの設定
-
+
ゲストレベルを取得
-
+
インストールを開始します...
-
+
エイリアスを入力してください
-
-
+
+
エイリアスの設定
@@ -3019,76 +3041,85 @@
番組クリアタイムアウト
-
+
アップロード
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
提示
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
先に大きいスクリーンを選んでください
-
+
正しい幅のピクセル値を入力してください
-
+
正しい高さのピクセル値を入力してください
-
+
パスワード
-
-
-
+
+
+
jsonファイルの解析エラー!
@@ -3098,34 +3129,34 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
提示
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
先に大きいスクリーンを選んでください
@@ -3137,238 +3168,238 @@
-
+
明るさ感を得る
-
-
+
+
最小輝度値を設定します
-
-
+
+
輝度最小値を取得
-
-
+
+
センサータイプを選択してください
-
-
+
+
輝度センサ設定テーブルの設定
-
+
センサーブライトテーブル
-
+
コントロールカードに輝度設定表が見つかりませんでした
-
+
保存
-
-
+
+
現在の明るさを取得する
-
-
+
+
輝度を設定する
-
+
輝度値を取得
-
+
スクリーン輝度
-
+
インポートファイル
-
-
+
+
-
+
保存
-
+
輝度値
-
+
開始時間
-
+
終了時間
-
-
+
+
送信タイミング輝度表
-
+
取得タイミング輝度表
-
-
-
-
+
+
+
+
エラー
-
+
輝度の設定
-
+
自動
-
+
手動
-
+
スケジュール
-
+
最大輝度が64であるならば、最小の明るさは1%または適切な値として構成されることができます;最大の明るさが255であるならば、最小の明るさは36%かそれ以上として構成されなければなりません、さもなければ、明るさは低くなります。
-
+
ファイルをアップロードする時、正しいセンサータイプを選択してください。でないと、無効です。
-
+
感度
-
+
最小輝度
-
-
+
+
セット
-
+
ファイルのアップロード
-
-
-
+
+
+
読み戻し
-
+
読み戻し
-
+
更新
-
+
カールの明るさ
-
+
輝度値
-
+
標準の明るさ
-
+
追加
-
+
クリア
-
+
削除
-
+
インポート
-
+
出力
-
+
適用
-
+
ヒント:この設定時間内は明るさを設定し、設定時間外はデフォルトの明るさとなります。例えば、デフォルトの輝度を80とし、設定輝度は180とし、時間範囲は8:00〜17:00とすると、時間範囲は180となり、他の時間はデフォルトの輝度80となる。
@@ -3376,14 +3407,15 @@
Def
-
-
+
+
接続タイムアウト
+
成功
@@ -3400,7 +3432,7 @@
ヒント
-
+
失敗
@@ -3507,12 +3539,12 @@
回読画面
-
+
パスワードを入力
-
+
回読画面
@@ -3562,523 +3594,521 @@
詳細
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
-
+
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
受信
-
+
電源の設定
-
+
-
-
+
+
スクリーン状態を取得
-
-
+
+
状態
-
- DHCP IP
+ DHCP IP
-
- 静的IP
+ 静的IP
-
+
ヒント
-
+
パスワードが間違っている
-
+
輝度値を取得
-
-
-
+
+
+
明るさ
-
+
メインの個人情報を設定
-
+
輝度を設定する
-
-
+
+
最小輝度値を設定します
-
+
明るさ感を得る
-
+
感度
-
+
輝度最小値を取得
-
+
センサーパラメータの設定表
-
+
WiFiスイッチの設定
-
+
WiFiの設定
-
+
ホットスポットの設定
-
+
WiFi状態を取得
-
+
送信タイミング輝度表
-
+
設定タイミング音量表
-
+
音量調節
-
+
現在の音量を取得
-
+
画面タイミングスイッチタスクの設定
-
+
日付時間の取得
-
+
客レベルの設定
-
-
+
+
ゲストレベルを取得
-
+
客がいます:低 客がいません:高
-
+
客がいます:高 客がいません:低
-
-
-
+
+
+
ホットスポットとWiFiモードの取得
-
+
Wifiの名前
-
+
AP名前
-
+
テスト画面
-
+
ウェブサーバのアドレスを設定
-
+
RealTimerアドレスを設定
-
+
ウェブサーバのアドレスを取得
-
+
realtimeサーバのアドレスを取得します
-
+
NTPサービスの設定
-
+
NTPサービス情報を取得する
-
+
キャリブレーション時間
-
+
番組をクリア
-
+
set syncメソッド
-
+
現在の明るさを取得する
-
+
カールの明るさ
-
+
解像度を設定
-
+
読み込み解像度
-
+
FPGAトータル解像度
-
+
表示解像度
-
+
デフォルトの解像度を復元
-
+
輝度最大値を設定
-
+
輝度最大値を取得
-
+
スクリーンの切り替え
-
-
-
+
+
+
開く
-
-
-
+
+
+
オフ
-
+
LAN
-
+
接続
-
+
タイムアウト
-
+
リクエスト
-
-
+
+
音量
-
-
-
-
-
-
+
+
+
+
+
+
同期方式を取得
-
-
+
+
識別コード
-
-
+
+
時間オフセット
-
-
+
+
ミリ秒
-
-
-
-
+
+
+
+
その他の同期項目
-
-
-
-
+
+
+
+
最終同期時間
-
+
同期間隔
-
+
アップロード
-
+
成功
-
+
失敗
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
-
-
-
-
-
-
-
-
+
+
+
+
成功
-
-
+
+
ロラの身分
-
+
主
-
+
から
-
+
輝度センサ感度を設定する
-
-
-
+
+
+
オン
-
-
-
+
+
+
オフ
@@ -4086,88 +4116,88 @@
DevicePanel
-
-
+
+
トータル
トータル
-
+
オンライン中
-
-
+
+
更新
更新
-
-
+
+
指定IP
指定IP
-
+
現在のスクリーン
-
+
なし
-
+
ターミナルID
-
+
ターミナルIP
-
+
スクリーンサイズ
-
+
別名
-
+
読み戻し
-
+
送信
-
+
詳細
-
+
現在の画面の明るさ
-
+
画面切り替えステータス
-
+
暗号化
@@ -5129,53 +5159,54 @@
EVideo
-
+
基本的な属性
-
+
ファイル
-
+
再生方法
-
+
再生時間
-
+
ファイルを選択
-
+
秒
-
+
再生回数
-
+
-
-
+
+
ビデオ変換の進歩
-
+
+
エラー
@@ -5277,83 +5308,83 @@
MainWindow
-
+
言語
-
+
ヘルプ
-
-
+
+
アップデートをチェック
-
-
+
+
ファームウェア管理
-
-
+
+
ソフトウェアの設定
-
-
+
+
情報
-
-
+
+
当ソフトウェアについて
-
-
+
+
設置
-
+
端末管理
-
+
コンテンツ管理
-
+
ターミナルコントロール
-
+
スクリーン
-
+
ワンタッチ修復
-
+
ヒント
-
+
この操作はLAN内のすべてのコンピュータIPと同じセグメントにないコントロールカードを固定IPに修正します。慎重に操作してください。
@@ -6018,7 +6049,7 @@
スクリーンは暗号化されています
-
+
トータル
@@ -6365,7 +6396,7 @@
UpgradeApkDialog
-
+
アップグレード
@@ -6381,154 +6412,154 @@
-
+
Appパッケージを選択
-
-
+
+
アップグレード
-
+
-
+
アンマウント
-
+
運転状態を検出
-
+
FPGAファイルを選択
-
+
-
+
更新
-
+
キャンセル
-
+
ターミナルID
-
+
別名
-
+
オンライン中
-
+
ターミナルIP
-
+
暗号化
-
+
程度
-
+
-
+
-
+
-
+
-
+
-
+
-
+
FPGA
-
+
-
+
状態
-
-
-
+
+
+
トータル
-
+
暗号化されたコントロールカードを直接アップグレードすることができます
-
+
-
+
@@ -7543,7 +7574,7 @@
-
+
APK運転状態監視
@@ -7572,50 +7603,50 @@
-
+
同期FPGA
-
+
ヒント
-
+
-
-
+
+
アンマウント
-
-
+
+
成功
-
+
実行中
-
+
実行されていません
-
+
インストール成功
-
-
+
+
失敗
diff --git a/LedOK/translations/app_zh_CN.ts b/LedOK/translations/app_zh_CN.ts
index 7d7649b..14150c6 100644
--- a/LedOK/translations/app_zh_CN.ts
+++ b/LedOK/translations/app_zh_CN.ts
@@ -491,669 +491,673 @@
ControlNetConfigWidget
-
- Form
+ Form
-
+
有线网配置
-
-
+
+
-
-
+
+
指定IP
-
-
+
+
IP地址
-
+
子网掩码
-
-
+
+
网关
-
-
+
+
DNS地址
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
设置
-
-
-
-
-
-
-
+
+
+
+
+
+
回读
-
-
+
+
WiFi配置
-
-
+
+
WiFi使能
-
+
输入热点名称
-
-
+
+
蜂窝数据配置
-
-
+
+
启用蜂窝数据
-
+
-
-
+
+
获取蜂窝网络状态信息
-
-
+
+
通过获取状态按钮可以自动匹配国家码MCC,然后选择“运营商”可获取到响应的APN信息,如果找不到运营商,可以选中“自定义”复选框,然后手动输入APN信息。
-
-
+
+
回读APN信息
-
-
+
+
设置Apn信息
-
-
+
+
自定义
-
-
+
+
查询SIM信息
-
-
-
+
+
+
-
-
+
+
国家码(mcc):
-
-
+
+
运营商
-
-
+
+
运营商APN:
-
-
+
+
APN(必填)
-
-
+
+
用户名:
-
-
-
-
+
+
+
+
非必填
-
-
+
+
密码:
-
+
-
-
+
+
飞行模式
-
-
+
+
WiFi名称
-
-
-
-
+
+
+
+
密码
-
-
-
-
+
+
+
+
输入密码
-
-
+
+
扫描
-
-
+
+
AP使能
-
+
热点名称
-
+
关
-
+
开
-
+
热点名称
-
+
子网掩码
-
+
输入AP名称
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
成功
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
失败
-
-
-
-
+
+
+
+
提示
-
-
+
+
请先选择大屏幕
-
-
+
+
设置有线网
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
注意
-
+
请输入IP地址!
-
+
IP地址无效!
-
+
请输入子网掩码地址!
-
+
掩码地址无效!
-
+
请输入网关地址!
-
+
网关地址无效!
-
+
请输入DNS地址!
-
+
DNS地址无效!
-
+
+
获取有线网配置
-
+
+
+ 动态DHCP IP
+
+
+
+
+ 静态IP
+
+
+
+
+ 错误
+
+
+
设置WiFi开关
-
-
-
-
-
-
+
+
+
+
+
+
信号强度
-
-
+
+
配置WiFi
-
+
获取热点和WiFi模式
-
+
扫描WiFi
-
+
配置热点
-
+
获取APN信息
-
-
+
+
获取SIM状态
-
-
+
设置APN
-
-
+
+
-
+
状态:
-
+
未知
-
+
锁定状态,需要用户的PIN码解锁
-
+
锁定状态,需要用户的PUK码解锁
-
+
锁定状态,需要网络的PIN码解锁
-
+
就绪
-
+
检测不到sim卡
-
+
国家码:
-
+
号码:
-
+
用户:
-
+
信号:
-
+
信号正常
-
+
不在服务区
-
+
仅限紧急呼叫
-
+
射频已经关闭
-
+
网络:
-
+
未知
-
+
GPRS
-
+
EDGE
-
+
UMTS
-
+
CDM
-
+
EVDO,revision 0.
-
+
EVDO,revision A.
-
+
1xRTT
-
+
HSDPA
-
+
HSUPA
-
+
HSPA
-
+
漫游:
-
+
是
-
+
否
-
+
数据连接状态:
-
+
断开
-
+
正在连接
-
+
已连接
-
+
暂停
-
+
数据活动休眠状态:
-
+
活动,但无数据发送和接收
-
+
活动,正在接收数据
-
+
活动,正在发送数据
-
+
活动,正在接收和发送数据
-
+
休眠状态
-
+
-
+
设置4G/5G开关
-
+
配置飞行模式
-
+
获取飞行模式状态
@@ -2336,747 +2340,774 @@
CtrlAdvancedPanel
-
+
高级参数
-
+
屏幕宽(像素)
-
+
宽
-
-
+
+
高
-
-
-
-
-
-
-
+
+
+
+
+
+
+
设置
-
+
别名
-
+
Web服务器地址:
-
+
-
+
-
+
-
+
-
+
-
+
-
+
Realtimer地址:
-
+
清除
-
+
Apk升级
-
+
检查Apk
-
+
卸载
-
+
运行状态监测
-
+
FPGA版本查询
-
+
同步FPGA版本
-
+
重启
-
+
查看日志
-
+
使用 LedSet4.0 配置LED模组(Apk Display2.0以上版本)
-
+
打开ADB调试功能
-
+
Post Custom JSON
-
-
-
-
-
-
-
+
+
+
+
+
+
+
清除节目
-
+
-
+
M80配置
-
+
刷新
-
+
恢复默认值
-
+
车顶有无客电平配置
-
+
有客:高电平 无客:低电平
-
+
有客:低电平 无客:高电平
-
+
使用LedSet3.0配置LED模组(厂家专业人员使用)
-
+
绑定taxihub平台用户身份凭证
-
+
旋转
-
+
0度
-
+
90度
-
+
180度
-
+
270度
-
+
最低亮度
-
+
(最小:1)
-
-
-
+
+
+
回读
-
-
-
+
+
+
发送
-
+
最高亮度
-
+
(最高:255)
-
-
+
+
设置屏幕像素尺寸
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
成功
-
+
公司ID:
-
+
FPGA升级
-
+
公司ID
-
+
请输入Web服务器地址
-
+
请输入公司ID
-
+
是否确认配置服务器地址和公司ID?
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
失败
-
-
+
+
设置web服务器地址
-
+
清除
-
+
请输入RealTimer地址
-
+
设置RealTimer地址
-
-
-
-
+
+
+
+
提示
-
-
-
+
+
+
找不到LedSet3.0.exe,确认下载并安装
-
+
重启
-
+
FPGA版本
-
+
+
正在运行
-
+
+
没有运行
-
+
查询已安装apk版本
-
+
+
卸载
-
+
+
监测APK运行状态
-
+
-
+
查询FPGA版本
-
-
-
+
+
+
同步FPGA硬件版本
-
+
观察屏幕升级进度直到升级成功
-
+
打开ADB调试功能
-
+
身份凭证(*.ic)
-
-
+
+
+
+
+
绑定证书
-
+
-
-
+
+
-
+
-
+
软件版本信息
-
+
包名
-
+
版本
-
-
+
+
升级固件
-
+
此屏幕已加密,请解密并升级APK!
-
+
+
+
+ 包名为空
+
+
+
正在清除节目
-
-
+
+
超时
-
-
+
+
失败
-
+
正在获取日志
-
-
+
+
+
+
+
+
+
+
错误
-
+
+
+ 文件打开失败
+
+
+
正在设置系统桌面背景
-
-
+
+
设置系统桌面背景
-
+
系统升级中
-
-
+
+
系统升级
-
+
正在设置波特率
-
+
设置波特率
-
+
正在获取波特率
-
+
获取波特率
-
+
隐藏的设置
-
+
点击右键隐藏
-
+
波特率配置
-
+
设备型号
-
+
串口节点
-
+
波特率
-
+
获取
-
-
-
-
+
+
+
+
设置屏幕旋转
-
+
设置最小的亮度值
-
+
设置亮度最大值
-
+
获取亮度最小值
-
+
获取亮度最大值
-
+
设置分辨率
-
+
读取分辨率
-
+
恢复默认分辨率
-
+
设置有无客电平
-
+
获取有无客电平
-
+
开始安装...
-
+
请输入别名
-
-
+
+
设置别名
-
+
上传
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
提示
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
请先选择大屏幕
-
+
请输入正确的宽度像素值
-
+
请输入正确的高度像素值
-
+
密码错误
-
-
-
+
+
+
解析json文件错误!
@@ -3086,34 +3117,34 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
提示
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
请先选择大屏幕
@@ -3125,238 +3156,238 @@
-
+
获取亮度传感器灵敏度
-
-
+
+
设置最小的亮度值
-
-
+
+
获取亮度最小值
-
-
+
+
请先选择传感器类型
-
-
+
+
设置亮度传感器配置表
-
+
获取传感器亮度配置表
-
+
控制卡没有发现亮度配置表
-
+
保存
-
-
+
+
获取当前亮度
-
-
+
+
设置亮度
-
+
获取亮度值
-
+
屏体亮度
-
+
导入文件
-
-
+
+
-
+
保存文件
-
+
亮度值
-
+
开始时间
-
+
结束时间
-
-
+
+
发送定时亮度表
-
+
获取定时亮度表
-
-
-
-
+
+
+
+
错误
-
+
亮度配置
-
+
自动
-
+
手动
-
+
定时
-
+
如果最大亮度为64,则最小亮度可以配置为1%或适当的值;如果最大亮度为255,则最小亮度必须配置为36%或更高,否则亮度将很低。
-
+
上传文件时,请确认选择正确的传感器类型,否则无效!
-
+
灵敏度
-
+
最小亮度值
-
-
+
+
设置
-
+
上传配置文件
-
-
-
+
+
+
回读
-
+
回读
-
+
刷新
-
+
当前亮度
-
+
亮度值
-
+
默认亮度
-
+
添加
-
+
清空
-
+
删除
-
+
导入
-
+
导出
-
+
应用
-
+
提示:该设定时间内为设定亮度,设定时间外为默认亮度。例如设定默认亮度为80,设定亮度为180,时间范围是8:00-17:00,则时间范围内亮度为180,其他时间内为默认亮度80!
@@ -3364,14 +3395,15 @@
Def
-
-
+
+
连接超时
+
成功
@@ -3388,7 +3420,7 @@
提示
-
+
失败
@@ -3495,12 +3527,12 @@
回读画面
-
+
输入密码
-
+
回读画面
@@ -3550,523 +3582,521 @@
详细信息
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
-
+
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
接收
-
+
设置电源
-
+
-
-
+
+
获取屏幕状态
-
-
+
+
状态
-
- 动态DHCP IP
+ 动态DHCP IP
-
- 静态IP
+ 静态IP
-
+
提示
-
+
密码错误
-
+
获取亮度值
-
-
-
+
+
+
亮度
-
+
配置主从身份
-
+
设置亮度
-
-
+
+
设置最小的亮度值
-
+
获取亮度传感器灵敏度
-
+
灵敏度
-
+
获取亮度最小值
-
+
配置传感器参数表
-
+
设置WiFi开关
-
+
配置WiFi
-
+
配置热点
-
+
获取WiFi状态
-
+
发送定时亮度表
-
+
配置定时音量表
-
+
音量调节
-
+
获取当前音量
-
+
设置屏幕定时开关任务
-
+
获取日期时间
-
+
设置有无客电平
-
-
+
+
获取有无客电平
-
+
有客:低电平 无客:高电平
-
+
有客:高电平 无客:低电平
-
-
-
+
+
+
获取热点和WiFi模式
-
+
Wifi名称
-
+
热点名称
-
+
测试屏幕
-
+
设置web服务器地址
-
+
设置RealTimer地址
-
+
获取web服务器地址
-
+
获取realtime服务器地址
-
+
设置NTP服务
-
+
获取NTP服务信息
-
+
校准时间
-
+
清除节目
-
+
设置同步方法
-
+
获取当前亮度
-
+
当前亮度
-
+
设置分辨率
-
+
读取分辨率
-
+
包括行场数的分辨率
-
+
当前显示屏分辨率
-
+
恢复默认分辨率
-
+
设置亮度最大值
-
+
获取亮度最大值
-
+
开关屏
-
-
-
+
+
+
开
-
-
-
+
+
+
关
-
+
局域网
-
+
连接
-
+
超时
-
+
点播
-
-
+
+
音量
-
-
-
-
-
-
+
+
+
+
+
+
获取同步方式
-
-
+
+
识别码
-
-
+
+
时间偏移
-
-
+
+
毫秒
-
-
-
-
+
+
+
+
其他同步项
-
-
-
-
+
+
+
+
上次同步时间
-
+
同步间隔
-
+
上传
-
+
成功
-
+
失败
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
-
-
-
-
-
-
-
-
+
+
+
+
成功
-
-
+
+
Lora身份
-
+
主
-
+
从
-
+
设置亮度传感器灵敏度
-
-
-
+
+
+
开
-
-
-
+
+
+
关
@@ -4074,89 +4104,89 @@
DevicePanel
-
-
+
+
总数
总数
-
+
在线
在线
-
-
+
+
刷新
刷新
-
+
当前屏幕
-
+
无
-
-
+
+
指定IP
指定IP
-
+
屏幕ID
-
+
屏幕IP
-
+
屏幕像素
-
+
別名
-
+
回读画面
-
+
发送
-
+
详细信息
-
+
屏幕当前亮度
-
+
屏幕开关状态
-
+
加密
@@ -5118,53 +5148,54 @@
EVideo
-
+
基本属性
-
+
文件
-
+
播放方式
-
+
播放时长
-
+
选择文件
-
+
秒
-
+
播放次数
-
+
视频转码
-
-
+
+
视频转码进度
-
+
+
错误
@@ -5266,83 +5297,83 @@
MainWindow
-
+
语言
-
+
帮助
-
-
+
+
检查更新
-
-
+
+
固件管理
-
-
+
+
软件配置
-
-
+
+
信息
-
-
+
+
关于
-
-
+
+
设置
-
+
设备管理
-
+
节目管理
-
+
终端控制
-
+
光影屏
-
+
一键找卡
-
+
提示
-
+
该操作会把局域网内的所有与计算机IP不在同一网段的控制卡修复成固定IP,请谨慎操作!
@@ -6007,7 +6038,7 @@
屏幕已加密
-
+
总数
@@ -6354,7 +6385,7 @@
UpgradeApkDialog
-
+
升级apk
@@ -6370,154 +6401,154 @@
-
+
选择Apk包
-
-
+
+
升级
-
+
-
+
卸载
-
+
检测运行状态
-
+
选择FPGA文件
-
+
-
+
刷新
-
+
取消
-
+
屏幕ID
-
+
別名
-
+
在线
-
+
屏幕IP
-
+
加密
-
+
进度
-
+
-
+
-
+
-
+
-
+
-
+
-
+
FPGA
-
+
-
+
状态
-
-
-
+
+
+
总数
-
+
加密控制卡可以直接升级
-
+
-
+
@@ -7532,7 +7563,7 @@
-
+
监测APK运行状态
@@ -7561,50 +7592,50 @@
-
+
同步FPGA
-
+
提示
-
+
密码错误
-
-
+
+
卸载
-
-
+
+
成功
-
+
正在运行
-
+
没有运行
-
+
安装成功
-
-
+
+
失败
diff --git a/LedOK/translations/app_zh_TW.ts b/LedOK/translations/app_zh_TW.ts
index 1baf05e..b04bc2b 100644
--- a/LedOK/translations/app_zh_TW.ts
+++ b/LedOK/translations/app_zh_TW.ts
@@ -491,669 +491,673 @@
ControlNetConfigWidget
-
- Form
+ Form
-
+
有線網配寘
-
-
+
+
-
-
+
+
指定IP
-
-
+
+
IP地址
-
+
子網路遮罩
-
-
+
+
閘道
-
-
+
+
DNS地址
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
設定
-
-
-
-
-
-
-
+
+
+
+
+
+
回讀
-
-
+
+
WiFi配寘
-
-
+
+
WiFi使能
-
+
輸入熱點名稱
-
-
+
+
蜂窩數據G配寘
-
-
+
+
啟用蜂窩數據
-
+
-
-
+
+
獲取蜂窩網絡狀態資訊
-
-
+
+
通過獲取狀態按鈕可以自動匹配國家碼MCC,然後選擇“運營商”可獲取到響應的APN資訊,如果找不到運營商,可以選中“自定義”核取方塊,然後手動輸入APN資訊。
-
-
+
+
回讀APN資訊
-
-
+
+
設定Apn資訊
-
-
+
+
自定義
-
-
+
+
査詢SIM資訊
-
-
-
+
+
+
-
-
+
+
国家码(mcc):國家碼(mcc):
-
-
+
+
運營商
-
-
+
+
運營商APN:
-
-
+
+
APN(必填)
-
-
+
+
用戶名:
-
-
-
-
+
+
+
+
非必填
-
-
+
+
密碼:
-
+
-
-
+
+
飛行模式
-
-
+
+
WiFi名稱
-
-
-
-
+
+
+
+
密碼
-
-
-
-
+
+
+
+
輸入密碼
-
-
+
+
掃描
-
-
+
+
AP使能
-
+
熱點名稱
-
+
關
-
+
開
-
+
熱點名稱
-
+
子網路遮罩
-
+
輸入AP名稱
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
成功
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
失敗
-
-
-
-
+
+
+
+
提示
-
-
+
+
請先選擇大螢幕
-
-
+
+
設定有線網
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
注意
-
+
請輸入IP地址!
-
+
IP地址無效!
-
+
請輸入子網路遮罩地址!
-
+
遮罩地址無效!
-
+
請輸入閘道地址!
-
+
閘道地址無效!
-
+
請輸入DNS地址!
-
+
DNS地址無效!
-
+
+
獲取有線網配寘
-
+
+
+ 動態DHCP IP
+
+
+
+
+ 靜態IP
+
+
+
+
+ 錯誤
+
+
+
設定WiFi開關
-
-
-
-
-
-
+
+
+
+
+
+
信號強度
-
-
+
+
配寘WiFi
-
+
獲取熱點和WiFi模式
-
+
掃描WiFi
-
+
配寘熱點
-
+
獲取APN資訊
-
-
+
+
獲取SIM狀態
-
-
+
設定APN
-
-
+
+
DeviceItem OnProHttpResponse 解析json檔案錯誤!
-
+
狀態:
-
+
未知
-
+
鎖定狀態,需要用戶的PIN碼解鎖
-
+
鎖定狀態,需要用戶的PUK碼解鎖
-
+
鎖定狀態,需要網絡的PIN碼解鎖
-
+
就緒
-
+
檢測不到sim卡
-
+
國家碼:
-
+
號碼:
-
+
用戶:
-
+
信号:
-
+
訊號正常
-
+
不在服務區
-
+
僅限緊急呼叫
-
+
射頻已經關閉
-
+
網絡:
-
+
未知
-
+
GPRS
-
+
EDGE
-
+
UMTS
-
+
CDM
-
+
EVDO,revision 0.
-
+
EVDO,revision A.
-
+
1xRTT
-
+
HSDPA
-
+
HSUPA
-
+
HSPA
-
+
漫遊:
-
+
是
-
+
否
-
+
數據連接狀態:
-
+
斷開
-
+
正在連接
-
+
已連接
-
+
暫停
-
+
數據活動休眠狀態:
-
+
活動,但無數據發送和接收
-
+
活動,正在接收數據
-
+
活動,正在發送數據
-
+
活動,正在接收和發送數據
-
+
休眠狀態
-
+
信號強度:
-
+
設定4G/5G開關
-
+
配寘飛行模式
-
+
獲取飛行模式狀態
@@ -2341,747 +2345,774 @@
CtrlAdvancedPanel
-
+
高級參數
-
+
荧幕寬(點數)
-
+
寬
-
-
+
+
高
-
-
-
-
-
-
-
+
+
+
+
+
+
+
設定
-
+
別名
-
+
Web伺服器地址:
-
+
-
+
-
+
-
+
-
+
-
+
-
+
Realtimer地址:
-
+
清除
-
+
Apk陞級
-
+
檢查Apk
-
+
卸載
-
+
運行狀態監測
-
+
FPGA版本査詢
-
+
同步FPGA版本
-
+
重啓
-
+
查看日誌
-
+
-
+
打開ADB調試功能
-
+
Post Custom JSON
-
-
-
-
-
-
-
+
+
+
+
+
+
+
清除節目
-
+
-
+
M80配寘
-
+
檢測
-
+
恢復預設值
-
+
車頂有無客電平配寘
-
+
有客:高電平無客:低電平
-
+
有客:低電平 無客:高電平
-
+
使用LedSet3.0配寘LED模組(廠家專業人員使用)
-
+
綁定taxihub平臺用戶身份憑證
-
+
旋轉
-
+
0度
-
+
90度
-
+
10度
-
+
270度
-
+
最低亮度
-
+
(最小:1)
-
-
-
+
+
+
回讀
-
-
-
+
+
+
發送
-
+
最高亮度
-
+
(最高:255)
-
-
+
+
設定荧幕點數尺寸
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
成功
-
+
公司ID:
-
+
FPGA陞級
-
+
公司ID
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
請先選擇大螢幕
-
+
請輸入Web伺服器地址
-
+
請輸入公司ID
-
+
是否確認配寘伺服器地址和公司ID?
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
失敗
-
-
+
+
設定web伺服器地址
-
+
清除
-
+
請輸入RealTimer地址
-
+
設定RealTimer地址
-
-
-
-
+
+
+
+
提示
-
-
-
+
+
+
找不到LedSet3.0.exe,確認下載並安裝
-
+
重啓
-
+
FPGA版本
-
+
+
正在運行
-
+
+
沒有運行
-
+
査詢已安裝apk版本
-
+
+
卸載
-
+
+
監測APK運行狀態
-
+
-
+
査詢FPGA版本
-
-
-
+
+
+
同步FPGA硬體版本
-
+
觀察荧幕陞級進度直到陞級成功
-
+
打開ADB調試功能
-
+
身份憑證(*.ic)
-
-
+
+
+
+
+
綁定證書
-
+
-
-
+
+
-
+
-
+
軟體版本資訊
-
+
包名
-
+
版本
-
-
+
+
陞級固件
-
+
此荧幕已加密,請解密並陞級APK!
-
+
+
+
+ 包名為空
+
+
+
正在清除節目
-
-
+
+
超時
-
-
+
+
失敗
-
+
讀取日誌
-
-
+
+
+
+
+
+
+
+
錯誤
-
+
+
+ 檔案打開失敗
+
+
+
正在設定系統桌面背景
-
-
+
+
設定系統桌面背景
-
+
系統升級中
-
-
+
+
系統升級
-
+
正在設定串列傳輸速率
-
+
設定串列傳輸速率
-
+
正在讀取串列傳輸速率
-
+
讀取串列傳輸速率
-
+
隱藏的設定
-
+
點擊右鍵隱藏
-
+
串列傳輸速率配寘
-
+
設備型號
-
+
串口節點
-
+
串列傳輸速率
-
+
讀取
-
-
-
+
+
+
DeviceItem OnProHttpResponse 解析json檔案錯誤!
-
-
-
-
+
+
+
+
設定荧幕旋轉
-
+
設定最小的亮度值
-
+
設定亮度最大值
-
+
獲取亮度最小值
-
+
獲取亮度最大值
-
+
設定分辯率
-
+
讀取分辯率
-
+
恢復默認分辯率
-
+
設定有無客電平
-
+
獲取有無客電平
-
+
開始安裝…
-
+
請輸入別名
-
-
+
+
設定別名
-
+
上傳
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
提示
-
+
請輸入正確的寬度點數值
-
+
請輸入正確的高度點數值
-
+
密碼錯誤
@@ -3091,34 +3122,34 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
提示
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
請先選擇大螢幕
@@ -3130,89 +3161,89 @@
-
+
獲取亮度感測器靈敏度
-
-
+
+
設定最小的亮度值
-
-
+
+
獲取亮度最小值
-
-
+
+
請先選擇感測器類型
-
-
+
+
設定亮度感測器配寘錶
-
+
獲取感測器亮度配寘錶
-
+
控制卡沒有發現亮度配寘錶
-
+
保存
-
-
+
+
獲取當前亮度
-
-
+
+
設定亮度
-
+
獲取亮度值
-
+
屏体亮度
-
+
導入檔案
-
-
+
+
-
+
保存
-
+
亮度值
@@ -3222,151 +3253,151 @@
開始時間
-
+
開始時間
-
+
結束時間
-
-
+
+
發送定時亮度錶
-
+
獲取定時亮度錶
-
-
-
-
+
+
+
+
錯誤
-
+
亮度配寘
-
+
自動
-
+
手動
-
+
定時
-
+
如果最大亮度為64,則最小亮度可以配寘為1%或適當的值;如果最大亮度為255,則最小亮度必須配寘為36%或更高,否則亮度將很低。
-
+
上傳文件時,請確認選擇正確的感測器類型,否則無效!
-
+
靈敏度
-
+
最小亮度值
-
-
+
+
設定
-
+
上傳設定檔
-
-
-
+
+
+
回讀
-
+
回讀
-
+
檢測
-
+
當前亮度
-
+
亮度值
-
+
默認亮度
-
+
添加
-
+
清空
-
+
删除
-
+
導入
-
+
匯出
-
+
應用
-
+
提示:該設定時間內為設定亮度,設定時間外為默認亮度。例如設定默認亮度為80,設定亮度為180,時間範圍是8:00-17:00,則時間範圍內亮度為180,其他時間內為默認亮度80!
@@ -3374,14 +3405,15 @@
Def
-
-
+
+
連接超時
+
成功
@@ -3398,7 +3430,7 @@
提示
-
+
失敗
@@ -3505,12 +3537,12 @@
回讀畫面
-
+
輸入密碼
-
+
回讀畫面
@@ -3560,523 +3592,521 @@
詳細資訊
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
-
+
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
接收
-
+
設定電源
-
+
-
-
+
+
獲取荧幕狀態
-
-
+
+
狀態
-
- 動態DHCP IP
+ 動態DHCP IP
-
- 靜態IP
+ 靜態IP
-
+
提示
-
+
密碼錯誤
-
+
獲取亮度值
-
-
-
+
+
+
亮度
-
+
配寘主從身份
-
+
設定亮度
-
-
+
+
設定最小的亮度值
-
+
獲取亮度感測器靈敏度
-
+
靈敏度
-
+
獲取亮度最小值
-
+
配寘感測器參數表
-
+
設定WiFi開關
-
+
配寘WiFi
-
+
配寘熱點
-
+
獲取WiFi狀態
-
+
發送定時亮度錶
-
+
配寘定時音量表
-
+
音量調節
-
+
獲取當前音量
-
+
設定荧幕定時開關任務
-
+
獲取日期時間
-
+
設定有無客電平
-
-
+
+
獲取有無客電平
-
+
有客:低電平 無客:高電平
-
+
有客:高電平無客:低電平
-
-
-
+
+
+
獲取熱點和WiFi模式
-
+
Wifi名稱
-
+
熱點名稱
-
+
測試荧幕
-
+
設定web伺服器地址
-
+
設定RealTimer地址
-
+
取得web伺服器地址
-
+
獲取realtime伺服器地址
-
+
設定NTP服務
-
+
獲取NTP服務資訊
-
+
校準時間
-
+
清除節目
-
+
設定同步方法
-
+
獲取當前亮度
-
+
當前亮度
-
+
設定分辯率
-
+
讀取分辯率
-
+
行数を含む解像度
-
+
當前顯示分辯率
-
+
恢復默認分辯率
-
+
設定亮度最大值
-
+
獲取亮度最大值
-
+
開關屏
-
-
-
+
+
+
開
-
-
-
+
+
+
關
-
+
局域網
-
+
連接
-
+
超時
-
+
點播
-
-
+
+
音量
-
-
-
-
-
-
+
+
+
+
+
+
獲取同步管道
-
-
+
+
識別碼
-
-
+
+
時間偏移
-
-
+
+
毫秒
-
-
-
-
+
+
+
+
其他同步項
-
-
-
-
+
+
+
+
上次同步時間
-
+
同步間隔
-
+
上傳
-
+
成功
-
+
失敗
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
-
-
-
-
-
-
-
-
+
+
+
+
成功
-
-
+
+
Lora身份
-
+
主
-
+
從
-
+
設定亮度感測器靈敏度
-
-
-
+
+
+
開
-
-
-
+
+
+
關
@@ -4084,87 +4114,87 @@
DevicePanel
-
-
+
+
總數
-
+
在线
線上
-
-
+
+
檢測
-
-
+
+
指定IP
指定IP
-
+
当前屏幕
-
+
无
-
+
荧幕ID
-
+
荧幕IP
-
+
荧幕點數
-
+
別名
-
+
回讀畫面
-
+
發送
-
+
詳細資訊
-
+
荧幕當前亮度
-
+
荧幕開關狀態
-
+
加密
@@ -5126,53 +5156,54 @@
EVideo
-
+
基本屬性
-
+
檔案
-
+
播放管道
-
+
播放時長
-
+
選擇檔案
-
+
秒
-
+
播放次數
-
+
-
-
+
+
視頻轉碼進度
-
+
+
錯誤
@@ -5274,83 +5305,83 @@
MainWindow
-
+
語言
-
+
幫助
-
-
+
+
檢查更新
-
-
+
+
固件管理
-
-
+
+
軟件配寘
-
-
+
+
資訊
-
-
+
+
關於
-
-
+
+
設定
-
+
設備管理
-
+
節目管理
-
+
終端控制
-
+
光影屏
-
+
一键找卡
-
+
提示
-
+
該操作會把局域網內的所有與電腦IP不在同一網段的控制卡修復成固定IP,請謹慎操作!
@@ -6015,7 +6046,7 @@
荧幕已加密
-
+
總數
@@ -6362,7 +6393,7 @@
UpgradeApkDialog
-
+
陞級apk
@@ -6378,154 +6409,154 @@
-
+
選擇Apk包
-
-
+
+
陞級
-
+
-
+
卸載
-
+
檢測運行狀態
-
+
選擇FPGA檔案
-
+
-
+
檢測
-
+
取消
-
+
荧幕ID
-
+
別名
-
+
線上
-
+
荧幕IP
-
+
加密
-
+
進度
-
+
-
+
-
+
-
+
-
+
-
+
-
+
FPGA
-
+
-
+
陳述
-
-
-
+
+
+
總數
-
+
加密控制卡可以直接陞級
-
+
-
+
@@ -7540,7 +7571,7 @@
-
+
監測APK運行狀態
@@ -7569,50 +7600,50 @@
-
+
同步FPGA
-
+
提示
-
+
密碼錯誤
-
-
+
+
卸載
-
-
+
+
成功
-
+
正在運行
-
+
沒有運行
-
+
安裝成功
-
-
+
+
失敗
diff --git a/LedOK/wDevicesManager/controlnetconfigwidget.cpp b/LedOK/wDevicesManager/controlnetconfigwidget.cpp
index 986c745..5067992 100644
--- a/LedOK/wDevicesManager/controlnetconfigwidget.cpp
+++ b/LedOK/wDevicesManager/controlnetconfigwidget.cpp
@@ -39,7 +39,7 @@ ControlNetConfigWidget::ControlNetConfigWidget(QWidget *parent,QList
labelIpAddress = new QLabel;
hhh->addWidget(labelIpAddress);
- fdIP = new QIPLineEdit(gBoxSpecifyIp);
+ fdIP = new QIPLineEdit;
fdIP->setFixedWidth(160);
fdIP->setStyleSheet("background-color: #fff;");
hhh->addWidget(fdIP);
@@ -47,21 +47,10 @@ ControlNetConfigWidget::ControlNetConfigWidget(QWidget *parent,QList
vvv->addLayout(hhh);
hhh = new QHBoxLayout();
- labelMaskAddress = new QLabel(gBoxSpecifyIp);
+ labelMaskAddress = new QLabel;
hhh->addWidget(labelMaskAddress);
- fdGateWay = new QIPLineEdit(gBoxSpecifyIp);
- fdGateWay->setFixedWidth(160);
- fdGateWay->setStyleSheet("background-color: #fff;");
- hhh->addWidget(fdGateWay);
-
- vvv->addLayout(hhh);
- hhh = new QHBoxLayout();
-
- labelGateway = new QLabel(gBoxSpecifyIp);
- hhh->addWidget(labelGateway);
-
- fdMask = new QIPLineEdit(gBoxSpecifyIp);
+ fdMask = new QIPLineEdit;
fdMask->setFixedWidth(160);
fdMask->setStyleSheet("background-color: #FFF;");
hhh->addWidget(fdMask);
@@ -69,10 +58,21 @@ ControlNetConfigWidget::ControlNetConfigWidget(QWidget *parent,QList
vvv->addLayout(hhh);
hhh = new QHBoxLayout();
- labelDnsAddress = new QLabel(gBoxSpecifyIp);
+ labelGateway = new QLabel;
+ hhh->addWidget(labelGateway);
+
+ fdGateWay = new QIPLineEdit;
+ fdGateWay->setFixedWidth(160);
+ fdGateWay->setStyleSheet("background-color: #fff;");
+ hhh->addWidget(fdGateWay);
+
+ vvv->addLayout(hhh);
+ hhh = new QHBoxLayout();
+
+ labelDnsAddress = new QLabel;
hhh->addWidget(labelDnsAddress);
- fdDns = new QIPLineEdit(gBoxSpecifyIp);
+ fdDns = new QIPLineEdit;
fdDns->setFixedWidth(160);
fdDns->setStyleSheet("background-color: #FFF;");
hhh->addWidget(fdDns);
@@ -173,6 +173,48 @@ ControlNetConfigWidget::ControlNetConfigWidget(QWidget *parent,QList
btnLanGet = new QPushButton;
btnLanGet->setMinimumSize(QSize(60, 30));
+ connect(btnLanGet, &QPushButton::clicked, this, [this] {
+ if(gSelCards->isEmpty()) {
+ QMessageBox::information(gMainWin, tr("Tip"), tr("NoSelectedController"));
+ return;
+ }
+ QJsonObject json;
+ json.insert("_id", "GetEthernet");
+ json.insert("_type", "GetEthernet");
+ if(gSelCards->count() == 1) {
+ auto waitingDlg = new WaitingDlg(this, tr("GetEthernet"));
+ Def_CtrlReqPre
+ connect(reply, &QNetworkReply::finished, this, [this, reply, waitingDlg] {
+ Def_CtrlSingleGetReply
+ waitingDlg->success();
+ if(json["dhcp"].toBool()) {
+ fdDhcp->setChecked(true);
+ emit sigGetDhcpOrSpecifyIp(0);
+ } else {
+ fdSpecifyIp->setChecked(true);
+ emit sigGetDhcpOrSpecifyIp(1);
+ }
+ fdIP->setText(json["ipAddr"].toString());
+ fdMask->setText(json["netMask"].toString());
+ fdGateWay->setText(json["gateWay"].toString());
+ fdDns->setText(json["dnsAddr"].toString());
+ });
+ } else {
+ foreach(auto card, *gSelCards) {
+ auto reply = Tools::netManager().post(reqForJson("http://"+card->m_strCardIp+":2016/settings"), QJsonDocument{json}.toJson(QJsonDocument::Compact));
+ connect(reply, &QNetworkReply::finished, this, [reply, card] {
+ QJsonDocument json;
+ QString err = checkReplyForJson(reply, &json);
+ if(err.isEmpty()) err = json["dhcp"].toBool() ? tr("DHCP IP") : tr("STATIC IP");
+ gFdResInfo->append(card->m_strCardId+" "+tr("GetEthernet")+" "+err);
+ gFdResInfo->append(" IP: "+json["ipAddr"].toString());
+ gFdResInfo->append(" Mask: "+json["netMask"].toString());
+ gFdResInfo->append(" GateWay: "+json["gateWay"].toString());
+ gFdResInfo->append(" Dns: "+json["dnsAddr"].toString());
+ });
+ }
+ }
+ });
hBox->addWidget(btnLanGet);
hBox->addStretch();
@@ -562,7 +604,6 @@ ControlNetConfigWidget::ControlNetConfigWidget(QWidget *parent,QList
labelMaskAddress->setText(QCoreApplication::translate("ControlNetConfigWidget", "Mask Address", nullptr));
labelGateway->setText(QCoreApplication::translate("ControlNetConfigWidget", "Gateway", nullptr));
labelDnsAddress->setText(QCoreApplication::translate("ControlNetConfigWidget", "DNS Address", nullptr));
- btnLanGet->setText(QCoreApplication::translate("ControlNetConfigWidget", "Readback", nullptr));
label_5->setText(QCoreApplication::translate("ControlNetConfigWidget", "WIFI Configuration", nullptr));
groupBox_3->setTitle(QCoreApplication::translate("ControlNetConfigWidget", "WiFi On/Off", nullptr));
labelWifiName->setText(QCoreApplication::translate("ControlNetConfigWidget", "WiFi name", nullptr));
@@ -637,7 +678,6 @@ ControlNetConfigWidget::ControlNetConfigWidget(QWidget *parent,QList
connect(this,SIGNAL(sigGetDhcpOrSpecifyIp(int)),this,SLOT(OnDhcpOrSpecifyIp(int)));
connect(m_buttonGroup,SIGNAL(buttonClicked(int)),this,SLOT(OnDhcpOrSpecifyIp(int)));
- connect(btnLanGet, SIGNAL(clicked()), this, SLOT(onReadbackWireNetwork()));
connect(pushButtonWiFiModel, SIGNAL(clicked()), this, SLOT(onSetWiFiModel()));
connect(pushButtonReadbackWiFiModel, SIGNAL(clicked()), this, SLOT(onReadbackWiFiModel()));
connect(pushButtonApSet, SIGNAL(clicked()), this, SLOT(onSetAp()));
@@ -790,14 +830,34 @@ void ControlNetConfigWidget::onReadbackAllThisPage()
return;
if(m_pLedlist->count()!=1)
return;
+
QJsonObject json;
- json.insert("_id", getRandomString(10));
+ json.insert("_id", "GetEthernet");
json.insert("_type", "GetEthernet");
- HttpPostByTypeJsonObject(pHpptClientAll,m_strUrl,json);
- fdIP->MyClear();
- fdMask->MyClear();
- fdGateWay->MyClear();
- fdDns->MyClear();
+ if(gSelCards->count() == 1) {
+ auto card = gSelCards->at(0);
+ auto reply = Tools::netManager().post(reqForJson("http://"+card->m_strCardIp+":2016/settings"), QJsonDocument{json}.toJson(QJsonDocument::Compact));
+ connect(reply, &QNetworkReply::finished, this, [this, reply] {
+ QJsonDocument json;
+ QString err = checkReplyForJson(reply, &json);
+ if(! err.isEmpty()) {
+ QMessageBox::critical(gMainWin, tr("Error"), err);
+ return;
+ }
+ if(json["dhcp"].toBool()) {
+ fdDhcp->setChecked(true);
+ emit sigGetDhcpOrSpecifyIp(0);
+ } else {
+ fdSpecifyIp->setChecked(true);
+ emit sigGetDhcpOrSpecifyIp(1);
+ }
+ fdIP->setText(json["ipAddr"].toString());
+ fdGateWay->setText(json["gateWay"].toString());
+ fdMask->setText(json["netMask"].toString());
+ fdDns->setText(json["dnsAddr"].toString());
+ });
+ }
+
QJsonObject json1;
json1.insert("_id", getRandomString(10));
json1.insert("_type", "GetWifiList");
@@ -834,31 +894,7 @@ void ControlNetConfigWidget::onReadbackAllThisPage()
json6.insert("_id", getRandomString(10));
json6.insert("_type", "GetFlightModeState");
HttpPostByTypeJsonObject(pHpptClientAll,m_strUrl,json6);
-
MACRO_DEFINE_TIPDLG_ALL_FUCN(tr("Readback"),tr("Success"),tr("failed"))
-
-}
-
-void ControlNetConfigWidget::onReadbackWireNetwork()
-{
- if(m_pLedlist==nullptr)
- return;
- if(m_pLedlist->count()<=1)
- {
- if(m_pLedCard==nullptr||m_pLedlist->count()==0)
- {
- QMessageBox::information(gMainWin, tr("Tip"),tr("NoSelectedController"));
- return;
- }
- }
- QJsonObject json;
- json.insert("_id", getRandomString(10));
- json.insert("_type", "GetEthernet");
- fdIP->MyClear();
- fdMask->MyClear();
- fdGateWay->MyClear();
- fdDns->MyClear();
- MACRO_DEFINE_TIPDLG_FUCN(tr("GetEthernet"),tr("Success"),tr("failed"))
}
void ControlNetConfigWidget::OnWiFiOpenChanged(bool b)
@@ -1060,43 +1096,9 @@ void ControlNetConfigWidget::OnProHttpResponse(QString url, QString postMD5, QBy
}
QJsonObject jsonObject = document.object();
QString strType=jsonObject["_type"].toString();
- if(jsonObject["success"].toBool()==true)
+ if(jsonObject["success"].toBool())
{
- //qDebug()<m_strCardId +"---------"+ strType;
- if(strType == "GetEthernet")
- {
- if(jsonObject["dhcp"].toBool())
- {
- fdDhcp->setChecked(true);
- emit sigGetDhcpOrSpecifyIp(0);
-
- }
- else
- {
- fdSpecifyIp->setChecked(true);
- emit sigGetDhcpOrSpecifyIp(1);
-
- }
- if(jsonObject["ipAddr"].toString()!="")
- fdIP->setText(jsonObject["ipAddr"].toString());
- if(jsonObject["gateWay"].toString()!="")
- fdMask->setText(jsonObject["gateWay"].toString());
- if(jsonObject["netMask"].toString()!="")
- fdGateWay->setText(jsonObject["netMask"].toString());
- if(jsonObject["dnsAddr"].toString()!="")
- fdDns->setText(jsonObject["dnsAddr"].toString());
- }
- else if(strType == "ConfigurationWiFi"||strType == "ConfigurationHotSpot")
- {
-
-
- }
- else if(strType == "SetSwitchWiFi")
- {
-
-
- }
- else if(strType == "GetSwitchWiFi")
+ if(strType == "GetSwitchWiFi")
{
groupBox_3->setChecked(jsonObject["enable"].toBool());
}
@@ -1314,37 +1316,9 @@ void ControlNetConfigWidget::OnProHttpResponseAll(QString url, QString postMD5,
}
QJsonObject jsonObject = document.object();
QString strType=jsonObject["_type"].toString();
- if(jsonObject["success"].toBool()==true)
- {
- qDebug()<m_strCardId +"---------"+ strType;
- if(strType == "GetEthernet")
- {
- if(jsonObject["dhcp"].toBool())
- {
- fdDhcp->setChecked(true);
- emit sigGetDhcpOrSpecifyIp(0);
- }
- else {
- fdSpecifyIp->setChecked(true);
- emit sigGetDhcpOrSpecifyIp(1);
-
- }
- if(jsonObject["ipAddr"].toString()!="")
- fdIP->setText(jsonObject["ipAddr"].toString());
- if(jsonObject["gateWay"].toString()!="")
- fdMask->setText(jsonObject["gateWay"].toString());
- if(jsonObject["netMask"].toString()!="")
- fdGateWay->setText(jsonObject["netMask"].toString());
- if(jsonObject["dnsAddr"].toString()!="")
- fdDns->setText(jsonObject["dnsAddr"].toString());
- }
- else if(strType == "GetSwitchWiFi")
- {
- groupBox_3->setChecked(jsonObject["enable"].toBool());
- }
- else if(strType == "GetWifiList")
- {
- //QVariant iTemp=jsonObject["wifiList"].toVariant();
+ if(jsonObject["success"].toBool()) {
+ if(strType == "GetSwitchWiFi") groupBox_3->setChecked(jsonObject["enable"].toBool());
+ else if(strType == "GetWifiList") {
QJsonValue value = jsonObject.take("wifiList");
QJsonArray array= value.toArray();
int iSize=array.size();
diff --git a/LedOK/wDevicesManager/controlnetconfigwidget.h b/LedOK/wDevicesManager/controlnetconfigwidget.h
index 2ed8813..d835f2a 100644
--- a/LedOK/wDevicesManager/controlnetconfigwidget.h
+++ b/LedOK/wDevicesManager/controlnetconfigwidget.h
@@ -42,7 +42,6 @@ protected slots:
void changeEvent(QEvent *) override;
void transUi();
- void onReadbackWireNetwork();
void onSetWiFiModel();
void onReadbackWiFiModel();
void onSetAp();
diff --git a/LedOK/wDevicesManager/ctrladvancedpanel.cpp b/LedOK/wDevicesManager/ctrladvancedpanel.cpp
index 9d64dd5..d3c26de 100644
--- a/LedOK/wDevicesManager/ctrladvancedpanel.cpp
+++ b/LedOK/wDevicesManager/ctrladvancedpanel.cpp
@@ -236,7 +236,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel(QWidget *parent,QList *list) : Q
connect(reply, &QNetworkReply::finished, this, [this, reply, waitingDlg] {
Def_CtrlSingleGetReply
waitingDlg->close();
- comboBox->clear();
+ fdPkg->clear();
auto apps = json["apps"].toArray();
auto infoDlg = new QDialog(this);
infoDlg->setWindowFlag(Qt::WindowContextHelpButtonHint, false);
@@ -256,10 +256,10 @@ CtrlAdvancedPanel::CtrlAdvancedPanel(QWidget *parent,QList *list) : Q
for(int i=0; iaddItem(packageName);
table->setItem(i, "apk", new QTableWidgetItem{app["appName"].toString()});
table->setItem(i, "ver", new QTableWidgetItem{app["versionName"].toString()});
table->setItem(i, "pkg", new QTableWidgetItem{packageName});
+ if(! (packageName.endsWith(".cardsystem") || packageName.endsWith(".systemcore") || packageName.endsWith(".update"))) fdPkg->addItem(packageName);
}
infoDlg->show();
});
@@ -289,15 +289,75 @@ CtrlAdvancedPanel::CtrlAdvancedPanel(QWidget *parent,QList *list) : Q
});
hBox->addWidget(btnApkUpgrade);
- comboBox = new QComboBox;
- comboBox->setMinimumWidth(200);
- hBox->addWidget(comboBox);
+ fdPkg = new QComboBox;
+ fdPkg->setEditable(true);
+ fdPkg->setMinimumWidth(200);
+ hBox->addWidget(fdPkg);
- pushButton_unistall = new QPushButton;
- hBox->addWidget(pushButton_unistall);
+ fdUnload = new QPushButton;
+ connect(fdUnload, &QPushButton::clicked, this, [this] {
+ if(gSelCards->isEmpty()) {
+ QMessageBox::information(gMainWin, tr("Tip"), tr("NoSelectedController"));
+ return;
+ }
+ auto pkg = fdPkg->currentText();
+ if(pkg.isEmpty()) {
+ QMessageBox::information(gMainWin, tr("Tip"), tr("Package name is null"));
+ return;
+ }
+ QJsonObject json;
+ json.insert("_id", "UninstallSoftware");
+ json.insert("_type", "UninstallSoftware");
+ json.insert("packageName", pkg);
+ if(gSelCards->count() == 1) {
+ auto waitingDlg = new WaitingDlg(this, tr("UninstallSoftware"));
+ Def_CtrlReqPre
+ connect(reply, &QNetworkReply::finished, this, [reply, waitingDlg] {
+ Def_CtrlSetReqAfter
+ });
+ } else {
+ foreach(auto card, *gSelCards) {
+ Def_CtrlSetMulti(tr("UninstallSoftware"))
+ }
+ }
+ });
+ hBox->addWidget(fdUnload);
- pushButtonRunningCheck = new QPushButton;
- hBox->addWidget(pushButtonRunningCheck);
+ btnRunningCheck = new QPushButton;
+ connect(btnRunningCheck, &QPushButton::clicked, this, [this] {
+ if(gSelCards->isEmpty()) {
+ QMessageBox::information(gMainWin, tr("Tip"), tr("NoSelectedController"));
+ return;
+ }
+ auto pkg = fdPkg->currentText();
+ if(pkg.isEmpty()) {
+ QMessageBox::information(gMainWin, tr("Tip"), tr("Package name is null"));
+ return;
+ }
+ QJsonObject json;
+ json.insert("_id", "IsSoftwareRunning");
+ json.insert("_type", "IsSoftwareRunning");
+ json.insert("packageName", pkg);
+ if(gSelCards->count() == 1) {
+ auto waitingDlg = new WaitingDlg(this, tr("IsSoftwareRunning"));
+ Def_CtrlReqPre
+ connect(reply, &QNetworkReply::finished, this, [reply, waitingDlg] {
+ Def_CtrlSingleGetReply
+ waitingDlg->close();
+ QMessageBox::information(gMainWin, tr("Tip"), json["running"].toBool() ? tr("running") : tr("no running"));
+ });
+ } else {
+ foreach(auto card, *gSelCards) {
+ auto reply = Tools::netManager().post(reqForJson("http://"+card->m_strCardIp+":2016/settings"), QJsonDocument{json}.toJson(QJsonDocument::Compact));
+ connect(reply, &QNetworkReply::finished, this, [reply, card] {
+ QJsonDocument json;
+ QString err = checkReplyForJson(reply, &json);
+ gFdResInfo->append(card->m_strCardId+" "+tr("IsSoftwareRunning")+" "+(err.isEmpty() ? (json["running"].toBool() ? tr("running") : tr("no running")) : err));
+ });
+ }
+ }
+ });
+ hBox->addWidget(btnRunningCheck);
hBox->addStretch();
@@ -885,8 +945,8 @@ CtrlAdvancedPanel::CtrlAdvancedPanel(QWidget *parent,QList *list) : Q
pushButtonSetREaltimeServer->setProperty("ssType", "progManageTool");
pushButtonClearRealtimerAddress->setProperty("ssType", "progManageTool");
pushButtonRestart->setProperty("ssType", "progManageTool");
- pushButton_unistall->setProperty("ssType", "progManageTool");
- pushButtonRunningCheck->setProperty("ssType", "progManageTool");
+ fdUnload->setProperty("ssType", "progManageTool");
+ btnRunningCheck->setProperty("ssType", "progManageTool");
pushButtonFpgaUpgrade->setProperty("ssType", "progManageTool");
pushButtonFpgaVerCheck->setProperty("ssType", "progManageTool");
pushButtonSyncFpgaVer->setProperty("ssType", "progManageTool");
@@ -911,9 +971,6 @@ CtrlAdvancedPanel::CtrlAdvancedPanel(QWidget *parent,QList *list) : Q
connect(pushButtonRestart, SIGNAL(clicked()),this,SLOT(OnRestart()));
-
- connect(pushButton_unistall,SIGNAL(clicked()),this,SLOT(OnUnistall()));
- connect(pushButtonRunningCheck,SIGNAL(clicked()),this,SLOT(OnRunningCheck()));
connect(pushButtonFpgaUpgrade,SIGNAL(clicked()),this,SLOT(OnFpgaUpgrade()));
connect(pushButtonFpgaVerCheck,SIGNAL(clicked()),this,SLOT(OnFpgaVerCheck()));
connect(pushButtonSyncFpgaVer,SIGNAL(clicked()),this,SLOT(OnSyncFpgaVer()));
@@ -937,7 +994,6 @@ CtrlAdvancedPanel::CtrlAdvancedPanel(QWidget *parent,QList *list) : Q
m_pGetAskTimer = new QTimer(this);
connect(this, SIGNAL(sigSend(QJsonObject &,QString)), parent->parent(), SLOT(OnControlSendJson(QJsonObject &,QString)));
-
connect(pHpptClient,SIGNAL(httpGetRspReady(QString , QByteArray )),this,SLOT(OnProHttpGetResponse(QString , QByteArray)));
connect(btnM80Set,SIGNAL(clicked()),this,SLOT(OnM80Set()));
@@ -988,8 +1044,6 @@ void CtrlAdvancedPanel::init() {
bool isSingle = gSelCards->count()==1;
btnApkUpgrade->setEnabled(isSingle);
btnApkCheck->setEnabled(isSingle);
- pushButton_unistall->setEnabled(isSingle);
- pushButtonRunningCheck->setEnabled(isSingle);
pushButtonFpgaUpgrade->setEnabled(isSingle);
pushButtonFpgaVerCheck->setEnabled(isSingle);
pushButtonSyncFpgaVer->setEnabled(isSingle);
@@ -1087,13 +1141,13 @@ void CtrlAdvancedPanel::transUi() {
btnMinBrightGet->setText(tr("Readback"));
pushButtonReadbackMaxBrightess->setText(tr("Readback"));
pushButtonRestart->setText(tr("Restart led controller system"));
- pushButtonRunningCheck->setText(tr("Running check"));
+ btnRunningCheck->setText(tr("Running check"));
pushButtonSendMaxBrightness->setText(tr("Send"));
btnMinBrightSet->setText(tr("Send"));
pushButtonSetREaltimeServer->setText(tr("Set"));
btnWebServerSet->setText(tr("Set"));
pushButtonSyncFpgaVer->setText(tr("Sync FPGA version"));
- pushButton_unistall->setText(tr("Uninstall"));
+ fdUnload->setText(tr("Uninstall"));
radioButton0degrees->setText(tr("0 degrees"));
radioButton180degrees->setText(tr("180 degrees"));
radioButton270degrees->setText(tr("270 degrees"));
@@ -1245,12 +1299,6 @@ void CtrlAdvancedPanel::OnProHttpResponse(QString url, QString, QByteArray data)
MACRO_POSTING_DLG_UNLOCK
QMessageBox::information(gMainWin, tr("Tip"),tr("UpgradeSoftware")+tr("Success"));
}
- else if(strType == "UninstallSoftware"){
-
- MACRO_ASKTIME_STOP
- MACRO_POSTING_DLG_UNLOCK
-
- }
else if(strType == "SynchronousHardwareVersion"){
MACRO_ASKTIME_STOP
@@ -1314,17 +1362,6 @@ void CtrlAdvancedPanel::OnProHttpResponse(QString url, QString, QByteArray data)
}
QMessageBox::information(gMainWin, tr("FPGA Version"),strtempVer);
}
- else if(strType == "IsSoftwareRunning"){
- MACRO_ASKTIME_STOP
- MACRO_POSTING_DLG_UNLOCK
- if(jsonObject["running"].toBool())
- {
- QMessageBox::information(gMainWin, tr("Tip"),tr("running"));
- }
- else {
- QMessageBox::information(gMainWin, tr("Tip"),tr("no running"));
- }
- }
else if (strType == "SetHighForBusy") {
MACRO_ASKTIME_STOP
MACRO_POSTING_DLG_UNLOCK
@@ -1441,29 +1478,6 @@ void CtrlAdvancedPanel::OnProHttpResponseAll(QString url, QString postMD5, QByte
}
}
-
-void CtrlAdvancedPanel::OnUnistall()
-{
- if(comboBox->currentText().isEmpty())
- return;
- CHECK_CARD_SELECTED
- QJsonObject json;
- json.insert("_id", getRandomString(10));
- json.insert("_type", "UninstallSoftware");
- json.insert("packageName", comboBox->currentText());
- MACRO_DEFINE_TIPDLG_FUCN(tr("UninstallSoftware"),tr("Success"),tr("failed"))
-}
-void CtrlAdvancedPanel::OnRunningCheck()
-{
- if(comboBox->currentText().isEmpty())
- return;
- CHECK_CARD_SELECTED
- QJsonObject json;
- json.insert("_id", getRandomString(10));
- json.insert("_type", "IsSoftwareRunning");
- json.insert("packageName", comboBox->currentText());//包名需要填写?
- MACRO_DEFINE_TIPDLG_FUCN(tr("IsSoftwareRunning"),tr("Success"),tr("failed"))
-}
void CtrlAdvancedPanel::OnFpgaUpgrade()
{
QString url="http://"+m_pLedCard->m_strCardIp+":2016/upload?type=hardware";
diff --git a/LedOK/wDevicesManager/ctrladvancedpanel.h b/LedOK/wDevicesManager/ctrladvancedpanel.h
index 7a68075..f00d178 100644
--- a/LedOK/wDevicesManager/ctrladvancedpanel.h
+++ b/LedOK/wDevicesManager/ctrladvancedpanel.h
@@ -53,8 +53,6 @@ protected slots:
void OnClearRealtimeServer();
void OnStartConfigLedScreenSoft();
void OnRestart();
- void OnUnistall();
- void OnRunningCheck();
void OnFpgaUpgrade();
void OnFpgaVerCheck();
void OnSyncFpgaVer();
@@ -104,9 +102,9 @@ private:
QPushButton *pushButtonClearRealtimerAddress;
QPushButton *btnApkCheck;
QPushButton *btnApkUpgrade;
- QComboBox *comboBox;
- QPushButton *pushButton_unistall;
- QPushButton *pushButtonRunningCheck;
+ QComboBox *fdPkg;
+ QPushButton *fdUnload;
+ QPushButton *btnRunningCheck;
QPushButton *pushButtonFpgaUpgrade;
QPushButton *pushButtonFpgaVerCheck;
QPushButton *pushButtonSyncFpgaVer;
diff --git a/LedOK/wDevicesManager/ctrlbrightpanel.cpp b/LedOK/wDevicesManager/ctrlbrightpanel.cpp
index 73b6125..506d6de 100644
--- a/LedOK/wDevicesManager/ctrlbrightpanel.cpp
+++ b/LedOK/wDevicesManager/ctrlbrightpanel.cpp
@@ -126,7 +126,8 @@ CtrlBrightPanel::CtrlBrightPanel(QWidget *parent) : QWidget(parent) {
connect(reply, &QNetworkReply::finished, this, [reply, card] {
QJsonDocument json;
QString err = checkReplyForJson(reply, &json);
- gFdResInfo->append(card->m_strCardId+" "+tr("GetBrightnessSensitivity")+" "+(err.isEmpty()?QString::number(json["sensitivity"].toInt()):err));
+ if(err.isEmpty()) err = QString::number(json["sensitivity"].toInt());
+ gFdResInfo->append(card->m_strCardId+" "+tr("GetBrightnessSensitivity")+" "+err);
});
}
}
diff --git a/LedOK/wProgramManager/evideo.cpp b/LedOK/wProgramManager/evideo.cpp
index 2dd9aff..86f6edf 100644
--- a/LedOK/wProgramManager/evideo.cpp
+++ b/LedOK/wProgramManager/evideo.cpp
@@ -15,12 +15,14 @@ EVideo *EVideo::create(const QString &file, PageListItem *pageItem, EBase *multi
QString err = Tools::videoInfo(file.toUtf8(), img, &dur, &codecId);
if(! err.isEmpty()) {
QMessageBox::critical(gMainWin, "Video Error", err+"\n"+file);
- return nullptr;
+ return 0;
}
QFileInfo rawInfo(file);
QString rawName = rawInfo.fileName();
QString outFile = transcoding(file, rawName, pageItem->mPageDir, img.width(), img.height(), codecId);
+ if(outFile.isEmpty()) return 0;
QFileInfo outInfo(outFile);
+ if(! outInfo.isFile() || outInfo.size()==0) return 0;
return new EVideo(outInfo.absolutePath(), outInfo.fileName(), rawInfo.absolutePath(), rawName, img, dur/1000000, pageItem, multiWin);
}
EVideo *EVideo::create(const QJsonObject &json, PageListItem *pageItem, EBase *multiWin) {
@@ -182,9 +184,9 @@ QWidget* EVideo::attrWgt() {
playDuration = dur/1000000;
fdDuration->setValue(playDuration);
QString outFile = transcoding(rawFile, mRawName, mPageItem->mPageDir, mCoverImg.width(), mCoverImg.height(), codecId);
+ if(outFile.isEmpty()) return;
QFile oldfile(mDir+"/"+mName);
if(oldfile.exists()) oldfile.remove();
-
QFileInfo outInfo(outFile);
mDir = outInfo.absolutePath();
mName = outInfo.fileName();
@@ -270,16 +272,20 @@ QString EVideo::transcoding(QString rawFile, QString rawName, QString dir, int w
});
connect(&process, &QProcess::errorOccurred, &msgBox, [&msgBox](QProcess::ProcessError error) {
msgBox.accept();
- QMessageBox::critical(gMainWin, tr("Error"), QString::number(error)+" "+QMetaEnum::fromType().valueToKey(error));
+ QMessageBox::critical(gMainWin, tr("Error"), QString(QMetaEnum::fromType().valueToKey(error))+" ("+QString::number(error)+")");
});
connect(&process, &QProcess::readyReadStandardOutput, &msgBox, [&process] {
- auto txt = QString::fromUtf8(process.readAllStandardOutput());
- qInfo()<<"StandardOutput";
- qInfo()< -1) dur = QTime::fromString(txt.mid(idx+10, 11)+"0", "HH:mm:ss.zzz").msecsSinceStartOfDay();
@@ -288,10 +294,14 @@ QString EVideo::transcoding(QString rawFile, QString rawName, QString dir, int w
if(idx > -1) {
auto cur = QTime::fromString(txt.mid(idx+5, 11)+"0", "HH:mm:ss.zzz").msecsSinceStartOfDay();
if(dur > 0) msgBox.setText(tr("Video Transcoding Progress")+": "+QString::number(cur*100/dur)+"% ");
- }
+ } else err.append(txt).append("\n");
}
});
process.start("ffmpeg", {"-y", "-i", rawFile, "-vcodec", "h264", "-s", QString::number(w)+"x"+QString::number(h), outFile});
msgBox.exec();
+ if(err.right(32).contains("Conversion failed!")) {
+ QMessageBox::critical(gMainWin, tr("Error"), err);
+ return "";
+ }
return outFile;
}
diff --git a/LedOK/wProgramManager/progeditorwin.cpp b/LedOK/wProgramManager/progeditorwin.cpp
index 2994bc3..86b4e4f 100644
--- a/LedOK/wProgramManager/progeditorwin.cpp
+++ b/LedOK/wProgramManager/progeditorwin.cpp
@@ -198,7 +198,7 @@ ProgEditorWin::ProgEditorWin(QString &name, int &w, int &h, QString &remarks, co
QJsonParseError jsErr;
QJsonObject prog = QJsonDocument::fromJson(value.toUtf8(), &jsErr).object();
if(jsErr.error) return;
- PlayWin::self = new PlayWin(gProgDir+"_tmp", 0, 0, gProgWidth, gProgHeight, prog);
+ PlayWin::self = PlayWin::newIns(gProgWidth, gProgHeight, gProgDir+"_tmp", prog);
}
});
toolBar->addAction(action);
diff --git a/ledset/expertscreenconnwin.cpp b/ledset/expertscreenconnwin.cpp
index 86edc99..ebd2c36 100644
--- a/ledset/expertscreenconnwin.cpp
+++ b/ledset/expertscreenconnwin.cpp
@@ -2,13 +2,13 @@
#include "gqt.h"
#include
#include
-#include
#include
#include
-#include
#include
#include
#include
+#include
+#include
QColor cardColors[] {QColor(0xff2222), QColor(0xffaa00), QColor(0x00bb00), QColor(0x00bbcc), QColor(0x0044ff), QColor(0xffffff), QColor(0xffff00)};
@@ -56,8 +56,6 @@ ExpertScreenConnWin::ExpertScreenConnWin(QWidget *parent) : QWidget{parent} {
auto fdCardColNum = new QSpinBox;
auto fdCardRowNum = new QSpinBox;
- auto fdCardWidth = new QSpinBox;
- auto fdCardHeight = new QSpinBox;
{
auto vBox = new QVBoxLayout(gBox);
auto hhh = new QHBoxLayout;
@@ -86,6 +84,7 @@ ExpertScreenConnWin::ExpertScreenConnWin(QWidget *parent) : QWidget{parent} {
lb = new QLabel("卡宽度: ");
hhh->addWidget(lb);
+ fdCardWidth = new QSpinBox;
fdCardWidth->setRange(0, 9999);
fdCardWidth->setValue(128);
hhh->addWidget(fdCardWidth);
@@ -93,6 +92,7 @@ ExpertScreenConnWin::ExpertScreenConnWin(QWidget *parent) : QWidget{parent} {
lb = new QLabel("卡高度: ");
hhh->addWidget(lb);
+ fdCardHeight = new QSpinBox;
fdCardHeight->setRange(0, 9999);
fdCardHeight->setValue(128);
hhh->addWidget(fdCardHeight);
@@ -103,7 +103,7 @@ ExpertScreenConnWin::ExpertScreenConnWin(QWidget *parent) : QWidget{parent} {
auto hhh = new QHBoxLayout(gBox);
auto pal = palette();
- auto fdNet = new QButtonGroup(gBox);
+ fdNet = new QButtonGroup(gBox);
for(int i=0; isetCheckable(true);
@@ -177,15 +177,7 @@ ExpertScreenConnWin::ExpertScreenConnWin(QWidget *parent) : QWidget{parent} {
hhh->addWidget(bnRefresh);
auto bnBack = new QPushButton("后退");
- connect(bnBack, &QPushButton::clicked, this, [this, fdNet] {
- auto netIdx = fdNet->checkedId();
- if(netss[netIdx].isEmpty()) return;
- auto sels = table->selectedItems();
- if(! sels.isEmpty()) sels[0]->setSelected(false);
- auto point = netss[netIdx].takeLast();
- table->setItem(point.y(), point.x(), 0);
- table->update();
- });
+ connect(bnBack, &QPushButton::clicked, this, &ExpertScreenConnWin::connBack);
hhh->addWidget(bnBack);
hhh->addStretch();
@@ -200,30 +192,35 @@ ExpertScreenConnWin::ExpertScreenConnWin(QWidget *parent) : QWidget{parent} {
table->verticalHeader()->setDefaultAlignment(Qt::AlignCenter);
table->verticalHeader()->setDefaultSectionSize(90);
table->verticalHeader()->setMinimumWidth(30);
- table->setSelectionMode(QTableWidget::SingleSelection);
- connect(table, &QTableWidget::currentCellChanged, this, [this, fdNet, fdCardWidth, fdCardHeight](int row, int column) {
- auto item = table->item(row, column);
- if(item) {
- auto netIdx = item->data(Qt::UserRole).toInt();
- table->setStyleSheet("QTableView{selection-color:"+cardColors[netIdx % (sizeof(cardColors)/sizeof(cardColors[0]))].name()+";}");
- //fdNet->button(netIdx)->setChecked(true);
- return;
- }
- auto netIdx = fdNet->checkedId();
- netss[netIdx].append(QPoint(column, row));
- item = new QTableWidgetItem("网口: "+QString::number(netIdx+1)+"\n接收卡: "+QString::number(netss[netIdx].size())+"\n宽度: "+QString::number(fdCardWidth->value())+"\n高度: "+QString::number(fdCardHeight->value()));
- auto color = cardColors[netIdx % (sizeof(cardColors)/sizeof(cardColors[0]))];
- item->setForeground(color);
- table->setStyleSheet("QTableView{selection-color:"+color.name()+";}");
- item->setData(Qt::UserRole, netIdx);
- table->setItem(row, column, item);
- table->update();
- });
+ table->setSelectionMode(QTableWidget::NoSelection);
+ connect(table, &QTableWidget::currentCellChanged, this, &ExpertScreenConnWin::conn);
connect(fdCardColNum, (void(QSpinBox::*)(int))&QSpinBox::valueChanged, table, &QTableWidget::setColumnCount);
connect(fdCardRowNum, (void(QSpinBox::*)(int))&QSpinBox::valueChanged, table, &QTableWidget::setRowCount);
hh->addWidget(table);
}
+void ExpertScreenConnWin::conn(int row, int column) {
+ if(row < 0) return;
+ auto item = table->item(row, column);
+ if(item) return;
+ auto netIdx = fdNet->checkedId();
+ netss[netIdx].append(QPoint(column, row));
+ item = new QTableWidgetItem("网口: "+QString::number(netIdx+1)+"\n接收卡: "+QString::number(netss[netIdx].size())+"\n宽度: "+QString::number(fdCardWidth->value())+"\n高度: "+QString::number(fdCardHeight->value()));
+ auto color = cardColors[netIdx % (sizeof(cardColors)/sizeof(cardColors[0]))];
+ item->setForeground(color);
+ item->setData(Qt::UserRole, netIdx);
+ table->setItem(row, column, item);
+ table->update();
+}
+void ExpertScreenConnWin::connBack() {
+ auto netIdx = fdNet->checkedId();
+ if(netss[netIdx].isEmpty()) return;
+ table->selectionModel()->clearCurrentIndex();
+ auto point = netss[netIdx].takeLast();
+ table->setItem(point.y(), point.x(), 0);
+ table->update();
+}
+
void CardTable::paintEvent(QPaintEvent *event) {
QTableWidget::paintEvent(event);
QPainter painter(viewport());
@@ -239,3 +236,10 @@ void CardTable::paintEvent(QPaintEvent *event) {
}
}
}
+void CardTable::mousePressEvent(QMouseEvent *event) {
+ if(event->button() != Qt::RightButton) QTableWidget::mousePressEvent(event);
+}
+void CardTable::mouseReleaseEvent(QMouseEvent *event) {
+ QTableWidget::mouseReleaseEvent(event);
+ if(event->button() == Qt::RightButton) win->connBack();
+}
diff --git a/ledset/expertscreenconnwin.h b/ledset/expertscreenconnwin.h
index 2c15238..c56072d 100644
--- a/ledset/expertscreenconnwin.h
+++ b/ledset/expertscreenconnwin.h
@@ -2,12 +2,19 @@
#define EXPERTSCREENCONNWIN_H
#include
+#include
+#include
class CardTable;
class ExpertScreenConnWin : public QWidget {
Q_OBJECT
public:
explicit ExpertScreenConnWin(QWidget *parent = nullptr);
+ void conn(int row, int column);
+ void connBack();
+ QButtonGroup *fdNet;
+ QSpinBox *fdCardWidth;
+ QSpinBox *fdCardHeight;
CardTable *table;
QList> netss{QList{}, QList{}, QList{}, QList{}};
};
@@ -18,7 +25,9 @@ public:
CardTable(int rows, int columns, QWidget *parent = nullptr) : QTableWidget{rows, columns, parent} {}
ExpertScreenConnWin *win;
protected:
- void paintEvent(QPaintEvent *event);
+ void paintEvent(QPaintEvent *event) override;
+ void mousePressEvent(QMouseEvent *event) override;
+ void mouseReleaseEvent(QMouseEvent *event) override;
};
#endif // EXPERTSCREENCONNWIN_H
diff --git a/ledset/expertsmartpointsetwin.cpp b/ledset/expertsmartpointsetwin.cpp
index 1aca82a..7c7e4b8 100644
--- a/ledset/expertsmartpointsetwin.cpp
+++ b/ledset/expertsmartpointsetwin.cpp
@@ -312,14 +312,27 @@ ExpertSmartPointSetWin::ExpertSmartPointSetWin(QWidget *parent) : BaseWin{parent
auto hhh = new QHBoxLayout;
- auto bnReset = new QPushButton("重新走点");
- bnReset->setMinimumSize(90, 30);
- connect(bnReset, &QPushButton::clicked, this, [this] {
+ auto btnReset = new QPushButton("重新走点");
+ btnReset->setMinimumSize(90, 30);
+ connect(btnReset, &QPushButton::clicked, this, [this] {
table->clearContents();
- curPoint = 0;
+ points.clear();
});
+ hhh->addWidget(btnReset);
- hhh->addWidget(bnReset);
+ auto btnUndo = new QPushButton("回撤");
+ btnUndo->setMinimumSize(90, 30);
+ connect(btnUndo, &QPushButton::clicked, this, [this] {
+ if(points.isEmpty()) return;
+ auto last = points.takeLast();
+ table->setItem(last.y(), last.x(), 0);
+ if(points.isEmpty()) table->selectionModel()->clearCurrentIndex();
+ else {
+ last = points.last();
+ table->setCurrentCell(last.y(), last.x());
+ }
+ });
+ hhh->addWidget(btnUndo);
hhh->addStretch();
vBox->addLayout(hhh);
@@ -331,9 +344,12 @@ ExpertSmartPointSetWin::ExpertSmartPointSetWin(QWidget *parent) : BaseWin{parent
table->verticalHeader()->setMinimumWidth(40);
table->verticalHeader()->setDefaultAlignment(Qt::AlignCenter);
table->setSelectionMode(QTableWidget::SingleSelection);
- connect(table, &QTableWidget::currentCellChanged, this, [this](int currentRow, int currentColumn) {
- auto item = table->item(currentRow, currentColumn);
- if(! item) table->setItem(currentRow, currentColumn, new QTableWidgetItem(QString::number(++curPoint)));
+ connect(table, &QTableWidget::currentCellChanged, this, [this](int row, int col) {
+ if(row < 0) return;
+ auto item = table->item(row, col);
+ if(item) return;
+ points.append({col, row});
+ table->setItem(row, col, new QTableWidgetItem(QString::number(points.size())));
});
vBox->addWidget(table);
}
diff --git a/ledset/expertsmartpointsetwin.h b/ledset/expertsmartpointsetwin.h
index 81e9341..083b678 100644
--- a/ledset/expertsmartpointsetwin.h
+++ b/ledset/expertsmartpointsetwin.h
@@ -21,8 +21,8 @@ public:
QSpinBox *fdModuleWidth, *fdModuleHeight;
PointTable *table;
+ QList points;
int moduleWidth{0}, moduleHeight{0};
- int curPoint{0};
};
#endif // EXPERTSMARTPOINTSETWIN_H
diff --git a/ledset/main.cpp b/ledset/main.cpp
index 9d08ddf..44c580e 100644
--- a/ledset/main.cpp
+++ b/ledset/main.cpp
@@ -79,7 +79,7 @@ QRadioButton::indicator:checked {border-image: url(:/imgs/radio-check.png);}
QAbstractScrollArea QScrollBar {background: #555;}
-QTableView {gridline-color:#888; selection-background-color: #226; selection-color: #fff;}
+QTableView {gridline-color:#888;}
QHeaderView::section, QTableCornerButton:section {background: #555;}
QSlider::horizontal {height: 16px;}
diff --git a/ledset/mainwin.cpp b/ledset/mainwin.cpp
index dd0c34b..12c6d9b 100644
--- a/ledset/mainwin.cpp
+++ b/ledset/mainwin.cpp
@@ -15,16 +15,23 @@
class ImgBtn : public QToolButton {
public:
- ImgBtn(QIcon icon) {
- setIcon(icon);
- setStyleSheet("QToolButton{border: none;}");
+ ImgBtn() {
+ setStyleSheet("QToolButton{border: none; padding-top: 4px;}");
}
+ bool isEnter{false};
protected:
- void enterEvent(QEvent *) override {
+ void resizeEvent(QResizeEvent *event) override {
+ QToolButton::resizeEvent(event);
+ if(isEnter) setIconSize(QSize(width(), width()));
+ else setIconSize(QSize(width()-8, width()-8));
+ }
+ void enterEvent(QEvent *event) override {
+ QToolButton::enterEvent(event);
setStyleSheet("QToolButton{border: none;}");
setIconSize(QSize(width(), width()));
}
- void leaveEvent(QEvent *) override {
+ void leaveEvent(QEvent *event) override {
+ QToolButton::leaveEvent(event);
setIconSize(QSize(width()-8, width()-8));
setStyleSheet("QToolButton{border: none; padding-top: 4px;}");
}
@@ -40,12 +47,14 @@ inline QLabel *newSubLabel(QString txt){
lb->setAlignment(Qt::AlignCenter);
return lb;
}
-void addImg(QHBoxLayout *parent, ImgBtn* imgBtn, QString txt) {
- imgBtn->setText(txt);
+ImgBtn *addImg(QHBoxLayout *parent, const QIcon &icon, const QString &text) {
+ auto imgBtn = new ImgBtn();
+ imgBtn->setIcon(icon);
+ imgBtn->setText(text);
imgBtn->setFixedSize(76, 100);
imgBtn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
- imgBtn->setIconSize(QSize(76, 76));
parent->addWidget(imgBtn);
+ return imgBtn;
}
MainWin::MainWin() {
@@ -58,8 +67,7 @@ MainWin::MainWin() {
vBox->addLayout(addBtns(new QHBoxLayout()));
QHBoxLayout *imgsBar = new QHBoxLayout();
- ImgBtn *btnImg;
- addImg(imgsBar, btnImg = new ImgBtn(QPixmap(":/imgs/fast.png").scaledToWidth(128, Qt::SmoothTransformation)), "快速调屏");
+ auto btnImg = addImg(imgsBar, QPixmap(":/imgs/fast.png").scaledToWidth(128, Qt::SmoothTransformation), "快速调屏");
connect(btnImg, &ImgBtn::clicked, this, [=](){
(new Fast(this))->show();
// if(win==0) {
@@ -71,32 +79,32 @@ MainWin::MainWin() {
// win->move(win->x()-100, win->y());
// }
});
- addImg(imgsBar, btnImg = new ImgBtn(QPixmap(":/imgs/expert.png").scaledToWidth(128, Qt::SmoothTransformation)), "专家调屏");
+ btnImg = addImg(imgsBar, QPixmap(":/imgs/expert.png").scaledToWidth(128, Qt::SmoothTransformation), "专家调屏");
connect(btnImg, &ImgBtn::clicked, this, [=](){
(new ExpertWin(this))->show();
});
- addImg(imgsBar, btnImg = new ImgBtn(QPixmap(":/imgs/bright.png").scaledToWidth(128, Qt::SmoothTransformation)), "亮度控制");
+ btnImg = addImg(imgsBar, QPixmap(":/imgs/bright.png").scaledToWidth(128, Qt::SmoothTransformation), "亮度控制");
connect(btnImg, &ImgBtn::clicked, this, [=](){
(new BrightWin(this))->show();
});
- addImg(imgsBar, btnImg = new ImgBtn(QPixmap(":/imgs/correct.png").scaledToWidth(128, Qt::SmoothTransformation)), "相机矫正");
+ btnImg = addImg(imgsBar, QPixmap(":/imgs/correct.png").scaledToWidth(128, Qt::SmoothTransformation), "相机矫正");
connect(btnImg, &ImgBtn::clicked, this, [=](){
});
- addImg(imgsBar, btnImg = new ImgBtn(QPixmap(":/imgs/monitor.png").scaledToWidth(128, Qt::SmoothTransformation)), "屏体监控");
+ btnImg = addImg(imgsBar, QPixmap(":/imgs/monitor.png").scaledToWidth(128, Qt::SmoothTransformation), "屏体监控");
connect(btnImg, &ImgBtn::clicked, this, [=](){
});
- addImg(imgsBar, btnImg = new ImgBtn(QPixmap(":/imgs/multi.png").scaledToWidth(128, Qt::SmoothTransformation)), "多功能卡");
+ btnImg = addImg(imgsBar, QPixmap(":/imgs/multi.png").scaledToWidth(128, Qt::SmoothTransformation), "多功能卡");
connect(btnImg, &ImgBtn::clicked, this, [=](){
//win->move(win->x()-1, win->y());
});
- addImg(imgsBar, btnImg = new ImgBtn(QPixmap(":/imgs/video.png").scaledToWidth(128, Qt::SmoothTransformation)), "网口通信");
+ btnImg = addImg(imgsBar, QPixmap(":/imgs/video.png").scaledToWidth(128, Qt::SmoothTransformation), "网口通信");
connect(btnImg, &ImgBtn::clicked, this, [=](){
auto ins = PcapWin::newIns(this);
if(ins) ins->show();
});
- addImg(imgsBar, btnImg = new ImgBtn(QPixmap(":/imgs/idea.png").scaledToWidth(128, Qt::SmoothTransformation)), "创意显示");
+ btnImg = addImg(imgsBar, QPixmap(":/imgs/idea.png").scaledToWidth(128, Qt::SmoothTransformation), "创意显示");
connect(btnImg, &ImgBtn::clicked, this, [=](){
//qDebug()<<"geometry"<geometry()<<"screen"<screen();
});