From dd833d40f11180de666b49f8aa7496c99036935d Mon Sep 17 00:00:00 2001 From: gangphon Date: Tue, 6 Sep 2022 23:40:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=20ledok,=20ledset?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LedOK/LedOK.pro | 3 +- LedOK/deviceitem.cpp | 15 - LedOK/main.cpp | 2 +- LedOK/mainwindow.cpp | 4 + LedOK/player/playwin.cpp | 24 +- LedOK/player/playwin.h | 9 +- LedOK/progpanel.cpp | 2 +- LedOK/tools.h | 2 +- LedOK/translations/app_en.ts | 1707 +++++++++-------- LedOK/translations/app_ja.ts | 1707 +++++++++-------- LedOK/translations/app_zh_CN.ts | 1707 +++++++++-------- LedOK/translations/app_zh_TW.ts | 1707 +++++++++-------- .../controlnetconfigwidget.cpp | 204 +- .../wDevicesManager/controlnetconfigwidget.h | 1 - LedOK/wDevicesManager/ctrladvancedpanel.cpp | 132 +- LedOK/wDevicesManager/ctrladvancedpanel.h | 8 +- LedOK/wDevicesManager/ctrlbrightpanel.cpp | 3 +- LedOK/wProgramManager/evideo.cpp | 28 +- LedOK/wProgramManager/progeditorwin.cpp | 2 +- ledset/expertscreenconnwin.cpp | 70 +- ledset/expertscreenconnwin.h | 11 +- ledset/expertsmartpointsetwin.cpp | 32 +- ledset/expertsmartpointsetwin.h | 2 +- ledset/main.cpp | 2 +- ledset/mainwin.cpp | 42 +- 25 files changed, 3793 insertions(+), 3633 deletions(-) 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 + Form - + Wire Enther(RJ45) Configuration Wire Enther(RJ45) Configuration - - + + DHCP - - + + Specify IP Specify IP - - + + IP Address IP Address - + Mask Address Subnet mask - - + + Gateway Gateway - - + + DNS Address DNS Address - - - - - - - - + + + + + + + Set Set - - - - - - - + + + + + + Readback Readback - - + + WIFI Configuration WiFi Configuration - - + + WiFi On/Off WiFi On/Off - + Input Ap name Input ap name - - + + 4G/5G Configuration Cellular Configuration - - + + Open 4G/5G Enable cellular data - + APN: - - + + Get cellular network status information Get cellular network status information - - + + Check SIM can automatically match to MCC, and then select carrier get apn param,if not found carrier,you can check the CUSTOM checkbox,then enter custom param. 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 Readback APN Info - - + + Set Apn Info,Check SIM can automatically match to MCC, and then select carrier get apn param Set the APN information - - + + CUSTOM CUSTOM - - + + Check SIM chcek SIM Info - - - + + + -> - - + + Country ID(mcc): Country ID(mcc): - - + + Carrier Name Carrier Name - - + + APN: Carrier APN: - - + + APN(Required) APN(Required) - - + + User: User Name: - - - - + + + + Not required Not required - - + + Password: Password: - + Set Apn:iot.cargo - - + + Flight Mode Flight Mode - - + + WiFi name WiFi name - - - - + + + + Password Password - - - - + + + + Input password Input password - - + + Scan Scan - - + + Ap Mode AP - + Ap name AP name - + OFF OFF - + ON ON - + AP name AP name - + Subnet mask Subnet mask - + Input ap name Input AP name - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + Success Success - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + failed failed - - - - + + + + Tip Tip - - + + NoSelectedController Please select screen first - - + + SetEthernet Set wire nether - - - - - - - - + + + + + + + + Attention Attention - + Please input IP address! Please input IP address! - + Your IP Address is Invalid! IP Address is invalid! - + Please input Mask address! Please input Mask address! - + Your Mask Address is Invalid! Mask Address is Invalid! - + Please input Gateway address! Please input Gateway address! - + Your Gateway Address is Invalid! Gateway Address is Invalid! - + Please input DNS address! Please input DNS address! - + Your DNS Address is Invalid! DNS Address is Invalid! - + + GetEthernet Get wire ethernet - + + DHCP IP + DHCP IP + + + + STATIC IP + STATIC IP + + + + Error + Error + + + SetSwitchWiFi Set WiFi on/off - - - - - - + + + + + + SignalPower Signal strength - - + + ConfigurationWiFi Configuration WiFi - + IsPortableHotSpot Get AP or WiFi - + GetWifiList Scan WiFi list - + ConfigurationHotSpot Configuration AP HotSpot - + GetCurrentAPN Get Current Apn - - + + GetSIMStatus Get SIM Status - - + SetAPN Set APN - - + + DeviceItem OnProHttpResponse 解析json文件错误! - + 状态: Status: - + 未知 unknown - + 锁定状态,需要用户的PIN码解锁 Lock status, need user's pin code to unlock - + 锁定状态,需要用户的PUK码解锁 In the locked state, the PUK code of the user is required to be unlocked - + 锁定状态,需要网络的PIN码解锁 In the locked state, the PIN code of the user is required to be unlocked - + 就绪 be ready - + no checked sim card no checked sim card - + 国家码: MCC: - + 号码: number: - + 用户: User name: - + 信号: Signal: - + 信号正常 Signal OK - + 不在服务区 Not in service area - + 仅限紧急呼叫 Emergency call only - + 射频已经关闭 RF off - + 网络: Network type: - + 网络类型未知 unKnown - + GPRS网络 GPRS - + EDGE网络 EDGE - + UMTS网络 UMTS - + CDMA网络,IS95A 或 IS95B. CDM - + EVDO网络, revision 0. EVDO,revision 0. - + EVDO网络, revision A. EVDO,revision A. - + 1xRTT网络 1xRTT - + HSDPA网络 HSDPA - + HSUPA网络 HSUPA - + HSPA网络 HSPA - + 漫游: roam: - + Yes Yes - + No 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 SetSwitchSimData - + ContrFlightMode Set flight mode - + GetFlightModeState Readback flight mode state @@ -2336,673 +2340,691 @@ CtrlAdvancedPanel - + Advanced parameters Advanced parameters - + Screen Width(pixel) Screen Width(pixel) - + Width Width - - + + Height Height - - - - - - - + + + + + + + Set Set - + Alias Alias - + Web Server Address: Web Server Address: - + www.m2mled.net - + www.ledaips.com - + https://www.taxihub.cn:2340 - + https://www.ledaips.com:2340 - + https://www.36taxi.com:2340 - + www.tlzxled.com - + Realtimer Server Address: Realtimer Server Address: - + Clear Clear - + Apk upgrade Apk upgrade - + Check Apk Check Apk - + Uninstall Uninstall - + Running check Running check - + FPGA version check FPGA version check - + Sync FPGA version Sync FPGA version - + Restart led controller system Restart led controller system - + Check Log Check Log - + Start LedSet4 Start LedSet4.0 (Apk Display2.0 and higher) - + Open ADB Open ADB debugging function - + Post Custom JSON Post Custom JSON - - - - - - - + + + + + + + Clear Program Clear Program - + www.ledokcloud.com/realtime - + M80 configuration M80 configuration - + Refresh Refresh - + Restore to default Restore to default - + Taxi top screen configuration Taxi top screen configuration - + Service:High Out of service:Low Service:High Out of service:Low - + Service:Low Out of service:High Service:Low Out of service:High - + Start LedSet3.0 configure LED module Start LedSet3.0 configure LED module (used by manufacturer's professionals) - + Binding *.ic account indentity voucher Binding *.ic account indentity voucher - + Rotate Rotate - + 0 degrees 0 degrees - + 90 degrees 90 degrees - + 180 degrees 180 degrees - + 270 degrees 270 degrees - + Min brightness Min brightness - + (min:1) (min:1) - - - + + + Readback Readback - - - + + + Send Send - + Max brightness Max brightness - + (max:255) (max:255) - - + + SetScreenSize Set Screen Size - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + Success Success - + Compant ID: Company ID - + FPGA Upgrade FPGA Upgrade - + Compant ID Company ID - + InputWebServerAddressTip Please enter web server address - + InputCompanyIdTip Please enter company ID - + Do you want to modify webserveraddress and companyId? Are you sure you want to configure the server address and company ID? - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + failed failed - - + + SetOnlineAddr Set Web server address - + ClearRealtimeServer Clear - + InputRealTimeAddressTip Please enter the realtimer address - + SetRealtimeServer Set realtimer address - - - - + + + + Tip Info Tip Info - - - + + + Can not find LedSet3.0.exe,down you need download and install it Can not find LedSet3.0.exe,down you need download and install it - + RestartAndroid Restart - + FPGA Version FPGA Version - + + running running - + + no running no running - + Check Apk Version Check Apk Version - + + UninstallSoftware Uninstall - + + IsSoftwareRunning Check apk running status - + apk package (*.rpd) - + CheckHardwareVersions Check FPGA version - - - + + + SynchronousHardwareVersion Sync FPGA version - + Check Screen untile fpga update finished Watch the progress of screen upgrade until the upgrade is finished - + OpenAdb Open ADB debugging function - + indentity voucher (*.ic) indentity voucher (*.ic) - - + + + + + InvokeTaxiAppFunction Binding certificate - + Json format is error! - - + + AliIotSetting - + apk package (*.apk *.zip) - + Software Version Info - + Package - + Version - - + + UpgradeSoftware Upgrade firmware - + This screen is encrypted,Please decrypt and upgrade APK! This screen is encrypted,Please decrypt and upgrade APK! - + + + Package name is null + + + + Clearing Program - - + + Timeout Timeout - - + + Failed - + Getting Log - - + + + + + + + + Error Error - + + Open file Failed + + + + Setting Wallpaper - - + + Set Wallpaper - + System Updating - - + + System Update - + Setting Baud Rate - + Set Baud Rate - + Getting Baud Rate - + Get Baud Rate - + Hidden Settings - + Click right button to hide - + Baud Config - + Model - + Uart - + Baud - + Get - - - - + + + + SetScreenRotation Set screen rotation - + SetMinBrightness Set min brightness value - + SetMaxBrightness Set maximum brightness value - + GetMinBrightness Get min brightness - + GetMaxBrightness Get maximum brightness - + SetSpecialResolution Set Special Resolution - + GetSpecialResolution Get Special Resolution - + CleanDisplayScreenSize Restore to default relolution - + SetHighForBusy Set level for busy - + GetStateForBusy Get level of busy - + install start... Start installation... - + InputAliasTip Please input alias - - + + SetCardAlias Set alias @@ -3019,76 +3041,85 @@ Clear program timeout! - + Uploadding Uploading - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tip Tip - - - - - - - - - - - + + + + + + + + + + + + + + NoSelectedController Please select screen first - + InputWidthTip Please enter the correct width pixel value - + InputHeightTip Please enter the correct height pixel value - + Password is error Password is error - - - + + + DeviceItem OnProHttpResponse 解析json文件错误! DeviceItem OnProHttpResponse json error! @@ -3098,34 +3129,34 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + Tip Tip - - - - - - - - - + + + + + + + + + NoSelectedController Please select screen first @@ -3141,19 +3172,19 @@ - + GetBrightnessSensitivity Get brightness sensitivity - - + + SetMinBrightness Set min brightness value - - + + GetMinBrightness Get min brightness @@ -3162,221 +3193,221 @@ brightnenss - - + + NeedSelectSensorTypeTip Please select sensor type first - - + + SensorBrightnessTable Set sensor brightness table - + GetSensorBrightnessTable Get sensor bright table - + no sensorBrightnessTable no sensor brightnessTable in controller - + Save file Save file - - + + GetCurrentSensorBrightness Get Current Brightness - - + + SetBrightness Set brightness - + GetBrightness Get brightness - + Brightness Screen Brightness - - + + BrightnessSchedule (*.bjs) - + Import File - + Save File Save file - + BrightnessValue Brightness Value - + Start Time Start Time - + End Time End Time - - + + SetAutoBrightnessTask Send brightness schedule table - + GetAutoBrightnessTask Get brightness schedule - - - - + + + + Error Error - + Brightness Configuration Brightness configuration - + Auto Auto - + Manual Manual - + Schedule Schedule - + BrightTip1 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. - + BrightTip2 When uploading the file, please confirm to select the correct sensor type, otherwise it will be invalid! - + Sensitivity Sensitivity - + Minbrightness Minimum Brightness - - + + Set Set - + Upload Upload file - - - + + + Readback Readback - + ReadbackTable Readback - + Refresh Refresh - + Cur Brigntness Cur Brigntness - + Brightness value Brightness value - + Default brightness Default brightness - + Add Add - + Clear Clear - + Delete Delete - + Import Import - + Export Export - + Apply Apply - + Default brightness tip 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 - - + + Connection Timeout + Success Success @@ -3408,7 +3440,7 @@ Tip Info - + Fail Fail @@ -3515,12 +3547,12 @@ Screenshot - + Input password Input password - + GetScreenshotFull readback screenshot @@ -3570,241 +3602,239 @@ Detail Info - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - + + + + + + - + - - - - - - - + - - - - - - - - + + + + + + + + - - - - - - - - + + receive Receive - + SetScreenOn Set power - + AliIotSetting - - + + GetScreenStatus GetScreenStatus - - + + Status Status - DHCP IP - DHCP IP + DHCP IP - STATIC IP - STATIC IP + STATIC IP - + Tip Info Tip Info - + password is wrong password is wrong - + GetBrightness Get brightness - - - + + + brightness brightnenss - + MasterSlaveSwitch Configure master slave identity - + SetBrightness Set brightness - - + + SetMinBrightness Set min brightness value - + GetBrightnessSensitivity Get brightness sensitivity - + sensitivity sensitivity - + GetMinBrightness Get min brightness - + SetSensorBrightnessTable SetSensorBrightnessTable - + SetSwitchWiFi Set WiFi on/off - + ConfigurationWiFi Configuration WiFi - + ConfigurationHotSpot Configuration AP HotSpot - + GetSwitchWiFi GetSwitchWiFi - + SetAutoBrightnessTask Send brightness schedule table - + SetAutoVolumeTask Set volume schedule - + SetVolume Set Volume - + GetVolume Get Volume - + SetTimingScreenTask Set schedule task of screen power - + GetControllerDate Get date time - + SetHighForBusy Set level for busy - - + + GetStateForBusy Get level of busy - + Service:Low Out of service:High Service:Low Out of service:High - + Service:High Out of service:Low Service:High Out of service:Low - - - + + + IsPortableHotSpot Get AP or WiFi - + WifiName WifiName - + ApName Ap Name @@ -3813,284 +3843,284 @@ Set Screen Size - + TestScreen Test screen - + SetOnlineAddr Set Web server address - + SetRealtimeServer Set realtimer address - + GetOnlineAddr Get web server address - + GetRealtimeServer Get realtime server address - + SetNtpServer SetNtpServer - + GetNtpServer GetNtpServer - + SyncTime SyncTime - + DelPrograms Clear program - + SetingSyncMethod Set sync method - + GetCurrentSensorBrightness Get Current Brightness - + Cur brightness Cur brightness - + SetSpecialResolution Set Special Resolution - + GetSpecialResolution Get Special Resolution - + totalResolution FPGA total resoltuion - + strCurDisplayResolution Cur display resolution - + CleanDisplayScreenSize Restore to default relolution - + SetMaxBrightness Set maximum brightness value - + GetMaxBrightness Get maximum brightness - + screenSwitch Switch Screen - - - + + + YES On - - - + + + NO Close - + LAN LAN - + Connect Connect - + timeout timeout - + Anycast Anycast - - + + volume Volume - - - - - - + + + + + + GetingSyncMethod Geting Sync Method - - + + identificationCode Identification Code - - + + delaySync Time offset - - + + msec msec - - - - + + + + OtherSyncItem Other sync items - - - - + + + + lastSynchronousTime Last Synchronous Time - + checkNtpTime Synchronization interval - + Uploadding Uploadding - + Success Success - + failed failed - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + - - - - - - - - + + + + success success - - + + Lora identity Lora identity - + Master Master - + Slave Slave - + SetBrightnessSensitivity Set brightness sensitivity - - - + + + on ON - - - + + + off OFF @@ -4098,89 +4128,89 @@ DevicePanel - - + + All ALL ALL - + Online Online Online - - + + Refresh Refresh Refresh - - + + Specify IP Specify IP Specify IP - + Current Screen Current screen - + none none - + Screen ID Screen ID - + Screen IP Screen IP - + Screen Size Screen Size - + Remark Name Alias - + readback pic Screenshot - + send send - + More Info More Info - + Cur Brightness Screen Current Brightness - + Power Status Power Status - + Security encryption @@ -5142,53 +5172,54 @@ EVideo - + Basic Properties Basic properties - + File File - + Play Properties - + Play Duration Play Duration - + Select File Select File - + s s - + Play Times Play Times - + Video Transcoding - - + + Video Transcoding Progress - + + Error Error @@ -5290,83 +5321,83 @@ MainWindow - + Language Language - + Help Help - - + + Check for updates Check for updates - - + + firmware manager Firmware management - - + + Software Configuration Software Configuration - - + + Info - - + + About About - - + + Setting Setting - + Device Termianls - + Program Solutions - + Control Terminal Control - + GuangYinPin Lora screen - + Check card Detect - + Tip Info Tip Info - + RestoreLedCardIpByUdpTip 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 ALL @@ -6386,7 +6417,7 @@ UpgradeApkDialog - + Upgrade apk Upgrade apk @@ -6402,154 +6433,154 @@ - + Select apk Select apk - - + + Upgrade Upgrade - + APK: - + Uninstall Uninstall - + check running state check running state - + Select Fpga Select Fpga - + success info - + Refresh Refresh - + Cancel Cancel - + Screen ID Screen ID - + Remark Name Alias - + Online Online - + Screen IP Screen IP - + Security encryption - + Progress Progress - + xixunplayer - + cardsystem - + taxiapp - + starter - + connection - + displayer - + FPGA FPGA - + update - + State State - - - + + + All ALL - + The encrypted control card can be upgraded directly The encrypted control card can be upgraded directly - + apk package (*.rpd) - + apk package (*.apk *.zip) @@ -7564,7 +7595,7 @@ - + IsSoftwareRunning Check apk running status @@ -7593,50 +7624,50 @@ - + SynchronousHardwareVersion Sync FPGA - + Tip Info Tip Info - + password is wrong password is wrong - - + + UninstallSoftware Uninstall - - + + Success Success - + Running Running - + NoRunning Not running - + install success Install success - - + + Fail 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 - Form - リフレッシュ + リフレッシュ - + Wire Enther(RJ45) Configuration 有線ネットワークの設定 - - + + DHCP - - + + Specify IP 指定IP - - + + IP Address IPアドレス - + Mask Address サブネットマスク - - + + Gateway ゲートウェイ - - + + DNS Address DNSアドレス - - - - - - - - + + + + + + + Set セット - - - - - - - + + + + + + Readback 読み戻し - - + + WIFI Configuration WiFiの設定 - - + + WiFi On/Off WiFi機能 - + Input Ap name 入力AP名 - - + + 4G/5G Configuration セルラーデータ構成 - - + + Open 4G/5G セルラーデータを有効にする - + APN: - - + + Get cellular network status information セルラーネットワーク状態情報を取得する - - + + Check SIM can automatically match to MCC, and then select carrier get apn param,if not found carrier,you can check the CUSTOM checkbox,then enter custom param. チェックシムは自動的にMCCに一致することができますし、キャリアー取得APNパームを選択し、キャリアが見つからない場合は、カスタムチェックボックスをチェックし、カスタムパームを入力します。 - - + + Readback APN Info APN情報を読み返す - - + + Set Apn Info,Check SIM can automatically match to MCC, and then select carrier get apn param APN情報を設定する - - + + CUSTOM カスタム - - + + Check SIM SIM情報の照会 - - - + + + -> - - + + Country ID(mcc): 国号(mcc): - - + + Carrier Name 運営者 - - + + APN: キャリアAPN: - - + + APN(Required) APN(必ず記入) - - + + User: ユーザ名: - - - - + + + + Not required 必要でない - - + + Password: パスワード: - + Set Apn:iot.cargo - - + + Flight Mode 飛行モード - - + + WiFi name WiFiの名前 - - - - + + + + Password パスワード - - - - + + + + Input password パスワードを入力 - - + + Scan スキャン - - + + Ap Mode APエネルギー - + Ap name APの名前 - + OFF オフ - + ON オン - + AP name AP名 - + Subnet mask サブネットマスク - + Input ap name APの名前を入力 - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + Success 成功 - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + failed 失敗 - - - - + + + + Tip 提示 - - + + NoSelectedController 先に大きいスクリーンを選んでください - - + + SetEthernet 有線網を設置する - - - - - - - - + + + + + + + + Attention 注意 - + Please input IP address! IPアドレスを入力してください! - + Your IP Address is Invalid! IPアドレスが無効です! - + Please input Mask address! サブネットマスクの住所を入力してください! - + Your Mask Address is Invalid! マスクアドレスが無効です! - + Please input Gateway address! ゲートウェイのアドレスを入力してください! - + Your Gateway Address is Invalid! ゲートウェイアドレスが無効です! - + Please input DNS address! DNSアドレスを入力してください! - + Your DNS Address is Invalid! DNSアドレスを入力してください! - + + GetEthernet 有線ネットワークの設定を取得 - + + DHCP IP + DHCP IP + + + + STATIC IP + 静的IP + + + + Error + エラー + + + SetSwitchWiFi WiFiスイッチの設定 - - - - - - + + + + + + SignalPower 信号強度 - - + + ConfigurationWiFi WiFiの設定 - + IsPortableHotSpot ホットスポットとWiFiモードの取得 - + GetWifiList スキャンWiFi - + ConfigurationHotSpot ホットスポットの設定 - + GetCurrentAPN APN情報の取得 - - + + GetSIMStatus SIM状態を取得 - - + SetAPN APNの設定 - - + + DeviceItem OnProHttpResponse 解析json文件错误! - + 状态: 状態: - + 未知 不明 - + 锁定状态,需要用户的PIN码解锁 ロック状態は、ユーザのPINコードのロック解除が必要です - + 锁定状态,需要用户的PUK码解锁 ロック状態は、ユーザのPUKコードのアンロックが必要です - + 锁定状态,需要网络的PIN码解锁 ロック状態は、ユーザのPINコードのアンロックが必要です - + 就绪 準備完了 - + no checked sim card simカードが検出されませんでした - + 国家码: 国号: - + 号码: 番号: - + 用户: ユーザ: - + 信号: 信号: - + 信号正常 信号が正常である - + 不在服务区 サービスエリアにはいません - + 仅限紧急呼叫 緊急呼び出しのみ - + 射频已经关闭 無線周波数はすでに閉鎖されました - + 网络: ネットワークタイプ: - + 网络类型未知 不明 - + GPRS网络 GPRS - + EDGE网络 EDGE - + UMTS网络 UMTS - + CDMA网络,IS95A 或 IS95B. CDM - + EVDO网络, revision 0. EVDO,revision 0. - + EVDO网络, revision A. EVDO,revision A. - + 1xRTT网络 1xRTT - + HSDPA网络 HSDPA - + HSUPA网络 HSUPA - + HSPA网络 HSPA - + 漫游: ローミング: - + Yes - + No いいえ - + 数据连接状态: データ接続状態: - + 断开 切断 - + 正在连接 接続中 - + 已连接 接続済み - + 暂停 一時停止 - + 数据活动休眠状态: データアクティビティの休止状態: - + 活动,但无数据发送和接收 アクティブですが、データ送信と受信はありません - + 活动,正在接收数据 アクティブ、データ受信中 - + 活动,正在发送数据 イベント、データ送信中 - + 活动,正在接收和发送数据 イベント、データ受信と送信中 - + 休眠状态 スリープ状態 - + 信号强度: 信号の強度: - + SetSwitchSimData 4G/5Gスイッチの設定 - + ContrFlightMode 飛行モードの設定 - + GetFlightModeState 飛行モード状態を取得 @@ -2336,673 +2340,691 @@ CtrlAdvancedPanel - + Advanced parameters 上級パラメータ - + Screen Width(pixel) 画面幅(ピクセル) - + Width - - + + Height 高さ - - - - - - - + + + + + + + Set セット - + Alias 別名 - + Web Server Address: Webサーバのアドレス: - + www.m2mled.net - + www.ledaips.com - + https://www.taxihub.cn:2340 - + https://www.ledaips.com:2340 - + https://www.36taxi.com:2340 - + www.tlzxled.com - + Realtimer Server Address: Realtimerアドレス: - + Clear クリア - + Apk upgrade APKアップグレード - + Check Apk APKを検出 - + Uninstall アンマウント - + Running check 運転状態モニタ - + FPGA version check FPGAバージョンクエリ - + Sync FPGA version 同期FPGAバージョン - + Restart led controller system 再起動 - + Check Log ログを見る - + Start LedSet4 - + Open ADB ADBデバッグ機能を開く - + Post Custom JSON Post Custom JSON - - - - - - - + + + + + + + Clear Program 番組をクリア - + www.ledokcloud.com/realtime - + M80 configuration M 80の設定 - + 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 LedSet 3.0を使ってLEDモジュールを配置する(メーカーの専門家が使用する) - + Binding *.ic account indentity voucher テーピングtaxihubプラットフォームのユーザーID証明書 - + Rotate 回転 - + 0 degrees 0度 - + 90 degrees 90度 - + 180 degrees 180度 - + 270 degrees 270度 - + Min brightness 最低輝度 - + (min:1) (最小:1) - - - + + + Readback 読み戻し - - - + + + Send 送信 - + Max brightness 最高輝度 - + (max:255) (マックス:255) - - + + SetScreenSize スクリーンのピクセルサイズを設定 - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + Success 成功 - + Compant ID: 会社ID: - + FPGA Upgrade FPGAアップグレード - + Compant ID 会社ID - + InputWebServerAddressTip Webサーバのアドレスを入力してください - + InputCompanyIdTip 会社IDを入力してください - + Do you want to modify webserveraddress and companyId? 設定サーバアドレスと会社IDを確認しますか? - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + failed 失敗 - - + + SetOnlineAddr ウェブサーバのアドレスを設定 - + ClearRealtimeServer クリア - + InputRealTimeAddressTip RealTimerアドレスを入力してください - + SetRealtimeServer RealTimerアドレスを設定 - - - - + + + + Tip Info ヒント - - - + + + Can not find LedSet3.0.exe,down you need download and install it LEDSET 3.0 . exeを見つけることができません。ダウンロードしてインストールする必要があります - + RestartAndroid 再起動 - + FPGA Version FPGAバージョン - + + running 実行中 - + + no running 実行されていません - + Check Apk Version チェック APK バージョン - + + UninstallSoftware アンマウント - + + IsSoftwareRunning APK運転状態監視 - + apk package (*.rpd) - + CheckHardwareVersions お問い合わせFPGAバージョン - - - + + + SynchronousHardwareVersion ハードウェアバージョンの同期 - + Check Screen untile fpga update finished 画面のアップグレードの進捗を確認します - + OpenAdb ADBデバッグ機能を開く - + indentity voucher (*.ic) 身分証明書(*.ic) - - + + + + + InvokeTaxiAppFunction 証明書をバインド - + Json format is error! - - + + AliIotSetting - + apk package (*.apk *.zip) - + Software Version Info - + Package - + Version バージョン - - + + UpgradeSoftware ファームウェアをアップグレードする - + This screen is encrypted,Please decrypt and upgrade APK! この画面は、暗号化され、復号化し、アップグレードAPK! - + + + Package name is null + パッケージ名は空です + + + Clearing Program プログラムクリア - - + + Timeout タイムアウト - - + + Failed 失敗 - + Getting Log - - + + + + + + + + Error エラー - + + Open file Failed + ファイルのオープンに失敗しました + + + Setting Wallpaper - - + + Set Wallpaper - + System Updating - - + + System Update - + Setting Baud Rate - + Set Baud Rate - + Getting Baud Rate - + Get Baud Rate - + Hidden Settings - + Click right button to hide - + Baud Config - + Model - + Uart - + Baud - + Get - - - - + + + + SetScreenRotation 画面の回転を設定する - + SetMinBrightness 最小輝度値を設定します - + SetMaxBrightness 輝度最大値を設定 - + GetMinBrightness 輝度最小値を取得 - + GetMaxBrightness 輝度最大値を取得 - + SetSpecialResolution 解像度を設定 - + GetSpecialResolution 読み込み解像度 - + CleanDisplayScreenSize デフォルトの解像度を復元 - + SetHighForBusy 客レベルの設定 - + GetStateForBusy ゲストレベルを取得 - + install start... インストールを開始します... - + InputAliasTip エイリアスを入力してください - - + + SetCardAlias エイリアスの設定 @@ -3019,76 +3041,85 @@ 番組クリアタイムアウト - + Uploadding アップロード - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tip 提示 - - - - - - - - - - - + + + + + + + + + + + + + + NoSelectedController 先に大きいスクリーンを選んでください - + InputWidthTip 正しい幅のピクセル値を入力してください - + InputHeightTip 正しい高さのピクセル値を入力してください - + Password is error パスワード - - - + + + DeviceItem OnProHttpResponse 解析json文件错误! jsonファイルの解析エラー! @@ -3098,34 +3129,34 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + Tip 提示 - - - - - - - - - + + + + + + + + + NoSelectedController 先に大きいスクリーンを選んでください @@ -3137,238 +3168,238 @@ - + GetBrightnessSensitivity 明るさ感を得る - - + + SetMinBrightness 最小輝度値を設定します - - + + GetMinBrightness 輝度最小値を取得 - - + + NeedSelectSensorTypeTip センサータイプを選択してください - - + + SensorBrightnessTable 輝度センサ設定テーブルの設定 - + GetSensorBrightnessTable センサーブライトテーブル - + no sensorBrightnessTable コントロールカードに輝度設定表が見つかりませんでした - + Save file 保存 - - + + GetCurrentSensorBrightness 現在の明るさを取得する - - + + SetBrightness 輝度を設定する - + GetBrightness 輝度値を取得 - + Brightness スクリーン輝度 - + Import File インポートファイル - - + + BrightnessSchedule (*.bjs) - + Save File 保存 - + BrightnessValue 輝度値 - + Start Time 開始時間 - + End Time 終了時間 - - + + SetAutoBrightnessTask 送信タイミング輝度表 - + GetAutoBrightnessTask 取得タイミング輝度表 - - - - + + + + Error エラー - + Brightness Configuration 輝度の設定 - + Auto 自動 - + Manual 手動 - + Schedule スケジュール - + BrightTip1 最大輝度が64であるならば、最小の明るさは1%または適切な値として構成されることができます;最大の明るさが255であるならば、最小の明るさは36%かそれ以上として構成されなければなりません、さもなければ、明るさは低くなります。 - + BrightTip2 ファイルをアップロードする時、正しいセンサータイプを選択してください。でないと、無効です。 - + Sensitivity 感度 - + Minbrightness 最小輝度 - - + + Set セット - + Upload ファイルのアップロード - - - + + + Readback 読み戻し - + ReadbackTable 読み戻し - + Refresh 更新 - + Cur Brigntness カールの明るさ - + Brightness value 輝度値 - + Default brightness 標準の明るさ - + Add 追加 - + Clear クリア - + Delete 削除 - + Import インポート - + Export 出力 - + Apply 適用 - + Default brightness tip ヒント:この設定時間内は明るさを設定し、設定時間外はデフォルトの明るさとなります。例えば、デフォルトの輝度を80とし、設定輝度は180とし、時間範囲は8:00〜17:00とすると、時間範囲は180となり、他の時間はデフォルトの輝度80となる。 @@ -3376,14 +3407,15 @@ Def - - + + Connection Timeout 接続タイムアウト + Success 成功 @@ -3400,7 +3432,7 @@ ヒント - + Fail 失敗 @@ -3507,12 +3539,12 @@ 回読画面 - + Input password パスワードを入力 - + GetScreenshotFull 回読画面 @@ -3562,523 +3594,521 @@ 詳細 - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - + + + + + + - + - - - - - - - + - - - - - - - - + + + + + + + + - - - - - - - - + + receive 受信 - + SetScreenOn 電源の設定 - + AliIotSetting - - + + GetScreenStatus スクリーン状態を取得 - - + + Status 状態 - DHCP IP - DHCP IP + DHCP IP - STATIC IP - 静的IP + 静的IP - + Tip Info ヒント - + password is wrong パスワードが間違っている - + GetBrightness 輝度値を取得 - - - + + + brightness 明るさ - + MasterSlaveSwitch メインの個人情報を設定 - + SetBrightness 輝度を設定する - - + + SetMinBrightness 最小輝度値を設定します - + GetBrightnessSensitivity 明るさ感を得る - + sensitivity 感度 - + GetMinBrightness 輝度最小値を取得 - + SetSensorBrightnessTable センサーパラメータの設定表 - + SetSwitchWiFi WiFiスイッチの設定 - + ConfigurationWiFi WiFiの設定 - + ConfigurationHotSpot ホットスポットの設定 - + GetSwitchWiFi WiFi状態を取得 - + SetAutoBrightnessTask 送信タイミング輝度表 - + SetAutoVolumeTask 設定タイミング音量表 - + SetVolume 音量調節 - + GetVolume 現在の音量を取得 - + SetTimingScreenTask 画面タイミングスイッチタスクの設定 - + GetControllerDate 日付時間の取得 - + SetHighForBusy 客レベルの設定 - - + + GetStateForBusy ゲストレベルを取得 - + Service:Low Out of service:High 客がいます:低 客がいません:高 - + Service:High Out of service:Low 客がいます:高 客がいません:低 - - - + + + IsPortableHotSpot ホットスポットとWiFiモードの取得 - + WifiName Wifiの名前 - + ApName AP名前 - + TestScreen テスト画面 - + SetOnlineAddr ウェブサーバのアドレスを設定 - + SetRealtimeServer RealTimerアドレスを設定 - + GetOnlineAddr ウェブサーバのアドレスを取得 - + GetRealtimeServer realtimeサーバのアドレスを取得します - + SetNtpServer NTPサービスの設定 - + GetNtpServer NTPサービス情報を取得する - + SyncTime キャリブレーション時間 - + DelPrograms 番組をクリア - + SetingSyncMethod set syncメソッド - + GetCurrentSensorBrightness 現在の明るさを取得する - + Cur brightness カールの明るさ - + SetSpecialResolution 解像度を設定 - + GetSpecialResolution 読み込み解像度 - + totalResolution FPGAトータル解像度 - + strCurDisplayResolution 表示解像度 - + CleanDisplayScreenSize デフォルトの解像度を復元 - + SetMaxBrightness 輝度最大値を設定 - + GetMaxBrightness 輝度最大値を取得 - + screenSwitch スクリーンの切り替え - - - + + + YES 開く - - - + + + NO オフ - + LAN LAN - + Connect 接続 - + timeout タイムアウト - + Anycast リクエスト - - + + volume 音量 - - - - - - + + + + + + GetingSyncMethod 同期方式を取得 - - + + identificationCode 識別コード - - + + delaySync 時間オフセット - - + + msec ミリ秒 - - - - + + + + OtherSyncItem その他の同期項目 - - - - + + + + lastSynchronousTime 最終同期時間 - + checkNtpTime 同期間隔 - + Uploadding アップロード - + Success 成功 - + failed 失敗 - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + - - - - - - - - + + + + success 成功 - - + + Lora identity ロラの身分 - + Master - + Slave から - + SetBrightnessSensitivity 輝度センサ感度を設定する - - - + + + on オン - - - + + + off オフ @@ -4086,88 +4116,88 @@ DevicePanel - - + + All トータル トータル - + Online オンライン中 - - + + Refresh 更新 更新 - - + + Specify IP 指定IP 指定IP - + Current Screen 現在のスクリーン - + none なし - + Screen ID ターミナルID - + Screen IP ターミナルIP - + Screen Size スクリーンサイズ - + Remark Name 別名 - + readback pic 読み戻し - + send 送信 - + More Info 詳細 - + Cur Brightness 現在の画面の明るさ - + Power Status 画面切り替えステータス - + Security 暗号化 @@ -5129,53 +5159,54 @@ EVideo - + Basic Properties 基本的な属性 - + File ファイル - + Play Properties 再生方法 - + Play Duration 再生時間 - + Select File ファイルを選択 - + s - + Play Times 再生回数 - + Video Transcoding - - + + Video Transcoding Progress ビデオ変換の進歩 - + + Error エラー @@ -5277,83 +5308,83 @@ MainWindow - + Language 言語 - + Help ヘルプ - - + + Check for updates アップデートをチェック - - + + firmware manager ファームウェア管理 - - + + Software Configuration ソフトウェアの設定 - - + + Info 情報 - - + + About 当ソフトウェアについて - - + + Setting 設置 - + Device 端末管理 - + Program コンテンツ管理 - + Control ターミナルコントロール - + GuangYinPin スクリーン - + Check card ワンタッチ修復 - + Tip Info ヒント - + RestoreLedCardIpByUdpTip この操作はLAN内のすべてのコンピュータIPと同じセグメントにないコントロールカードを固定IPに修正します。慎重に操作してください。 @@ -6018,7 +6049,7 @@ スクリーンは暗号化されています - + All トータル @@ -6365,7 +6396,7 @@ UpgradeApkDialog - + Upgrade apk アップグレード @@ -6381,154 +6412,154 @@ - + Select apk Appパッケージを選択 - - + + Upgrade アップグレード - + APK: - + Uninstall アンマウント - + check running state 運転状態を検出 - + Select Fpga FPGAファイルを選択 - + success info - + Refresh 更新 - + Cancel キャンセル - + Screen ID ターミナルID - + Remark Name 別名 - + Online オンライン中 - + Screen IP ターミナルIP - + Security 暗号化 - + Progress 程度 - + xixunplayer - + cardsystem - + taxiapp - + starter - + connection - + displayer - + FPGA FPGA - + update - + State 状態 - - - + + + All トータル - + The encrypted control card can be upgraded directly 暗号化されたコントロールカードを直接アップグレードすることができます - + apk package (*.rpd) - + apk package (*.apk *.zip) @@ -7543,7 +7574,7 @@ - + IsSoftwareRunning APK運転状態監視 @@ -7572,50 +7603,50 @@ - + SynchronousHardwareVersion 同期FPGA - + Tip Info ヒント - + password is wrong - - + + UninstallSoftware アンマウント - - + + Success 成功 - + Running 実行中 - + NoRunning 実行されていません - + install success インストール成功 - - + + Fail 失敗 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 + Form - + Wire Enther(RJ45) Configuration 有线网配置 - - + + DHCP - - + + Specify IP 指定IP - - + + IP Address IP地址 - + Mask Address 子网掩码 - - + + Gateway 网关 - - + + DNS Address DNS地址 - - - - - - - - + + + + + + + Set 设置 - - - - - - - + + + + + + Readback 回读 - - + + WIFI Configuration WiFi配置 - - + + WiFi On/Off WiFi使能 - + Input Ap name 输入热点名称 - - + + 4G/5G Configuration 蜂窝数据配置 - - + + Open 4G/5G 启用蜂窝数据 - + APN: - - + + Get cellular network status information 获取蜂窝网络状态信息 - - + + Check SIM can automatically match to MCC, and then select carrier get apn param,if not found carrier,you can check the CUSTOM checkbox,then enter custom param. 通过获取状态按钮可以自动匹配国家码MCC,然后选择“运营商”可获取到响应的APN信息,如果找不到运营商,可以选中“自定义”复选框,然后手动输入APN信息。 - - + + Readback APN Info 回读APN信息 - - + + Set Apn Info,Check SIM can automatically match to MCC, and then select carrier get apn param 设置Apn信息 - - + + CUSTOM 自定义 - - + + Check SIM 查询SIM信息 - - - + + + -> - - + + Country ID(mcc): 国家码(mcc): - - + + Carrier Name 运营商 - - + + APN: 运营商APN: - - + + APN(Required) APN(必填) - - + + User: 用户名: - - - - + + + + Not required 非必填 - - + + Password: 密码: - + Set Apn:iot.cargo - - + + Flight Mode 飞行模式 - - + + WiFi name WiFi名称 - - - - + + + + Password 密码 - - - - + + + + Input password 输入密码 - - + + Scan 扫描 - - + + Ap Mode AP使能 - + Ap name 热点名称 - + OFF - + ON - + AP name 热点名称 - + Subnet mask 子网掩码 - + Input ap name 输入AP名称 - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + Success 成功 - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + failed 失败 - - - - + + + + Tip 提示 - - + + NoSelectedController 请先选择大屏幕 - - + + SetEthernet 设置有线网 - - - - - - - - + + + + + + + + Attention 注意 - + Please input IP address! 请输入IP地址! - + Your IP Address is Invalid! IP地址无效! - + Please input Mask address! 请输入子网掩码地址! - + Your Mask Address is Invalid! 掩码地址无效! - + Please input Gateway address! 请输入网关地址! - + Your Gateway Address is Invalid! 网关地址无效! - + Please input DNS address! 请输入DNS地址! - + Your DNS Address is Invalid! DNS地址无效! - + + GetEthernet 获取有线网配置 - + + DHCP IP + 动态DHCP IP + + + + STATIC IP + 静态IP + + + + Error + 错误 + + + SetSwitchWiFi 设置WiFi开关 - - - - - - + + + + + + SignalPower 信号强度 - - + + ConfigurationWiFi 配置WiFi - + IsPortableHotSpot 获取热点和WiFi模式 - + GetWifiList 扫描WiFi - + ConfigurationHotSpot 配置热点 - + GetCurrentAPN 获取APN信息 - - + + GetSIMStatus 获取SIM状态 - - + SetAPN 设置APN - - + + DeviceItem OnProHttpResponse 解析json文件错误! - + 状态: 状态: - + 未知 未知 - + 锁定状态,需要用户的PIN码解锁 锁定状态,需要用户的PIN码解锁 - + 锁定状态,需要用户的PUK码解锁 锁定状态,需要用户的PUK码解锁 - + 锁定状态,需要网络的PIN码解锁 锁定状态,需要网络的PIN码解锁 - + 就绪 就绪 - + no checked sim card 检测不到sim卡 - + 国家码: 国家码: - + 号码: 号码: - + 用户: 用户: - + 信号: 信号: - + 信号正常 信号正常 - + 不在服务区 不在服务区 - + 仅限紧急呼叫 仅限紧急呼叫 - + 射频已经关闭 射频已经关闭 - + 网络: 网络: - + 网络类型未知 未知 - + GPRS网络 GPRS - + EDGE网络 EDGE - + UMTS网络 UMTS - + CDMA网络,IS95A 或 IS95B. CDM - + EVDO网络, revision 0. EVDO,revision 0. - + EVDO网络, revision A. EVDO,revision A. - + 1xRTT网络 1xRTT - + HSDPA网络 HSDPA - + HSUPA网络 HSUPA - + HSPA网络 HSPA - + 漫游: 漫游: - + Yes - + No - + 数据连接状态: 数据连接状态: - + 断开 断开 - + 正在连接 正在连接 - + 已连接 已连接 - + 暂停 暂停 - + 数据活动休眠状态: 数据活动休眠状态: - + 活动,但无数据发送和接收 活动,但无数据发送和接收 - + 活动,正在接收数据 活动,正在接收数据 - + 活动,正在发送数据 活动,正在发送数据 - + 活动,正在接收和发送数据 活动,正在接收和发送数据 - + 休眠状态 休眠状态 - + 信号强度: - + SetSwitchSimData 设置4G/5G开关 - + ContrFlightMode 配置飞行模式 - + GetFlightModeState 获取飞行模式状态 @@ -2336,747 +2340,774 @@ CtrlAdvancedPanel - + Advanced parameters 高级参数 - + Screen Width(pixel) 屏幕宽(像素) - + Width - - + + Height - - - - - - - + + + + + + + Set 设置 - + Alias 别名 - + Web Server Address: Web服务器地址: - + www.m2mled.net - + www.ledaips.com - + https://www.taxihub.cn:2340 - + https://www.ledaips.com:2340 - + https://www.36taxi.com:2340 - + www.tlzxled.com - + Realtimer Server Address: Realtimer地址: - + Clear 清除 - + Apk upgrade Apk升级 - + Check Apk 检查Apk - + Uninstall 卸载 - + Running check 运行状态监测 - + FPGA version check FPGA版本查询 - + Sync FPGA version 同步FPGA版本 - + Restart led controller system 重启 - + Check Log 查看日志 - + Start LedSet4 使用 LedSet4.0 配置LED模组(Apk Display2.0以上版本) - + Open ADB 打开ADB调试功能 - + Post Custom JSON Post Custom JSON - - - - - - - + + + + + + + Clear Program 清除节目 - + www.ledokcloud.com/realtime - + M80 configuration M80配置 - + 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 使用LedSet3.0配置LED模组(厂家专业人员使用) - + Binding *.ic account indentity voucher 绑定taxihub平台用户身份凭证 - + Rotate 旋转 - + 0 degrees 0度 - + 90 degrees 90度 - + 180 degrees 180度 - + 270 degrees 270度 - + Min brightness 最低亮度 - + (min:1) (最小:1) - - - + + + Readback 回读 - - - + + + Send 发送 - + Max brightness 最高亮度 - + (max:255) (最高:255) - - + + SetScreenSize 设置屏幕像素尺寸 - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + Success 成功 - + Compant ID: 公司ID: - + FPGA Upgrade FPGA升级 - + Compant ID 公司ID - + InputWebServerAddressTip 请输入Web服务器地址 - + InputCompanyIdTip 请输入公司ID - + Do you want to modify webserveraddress and companyId? 是否确认配置服务器地址和公司ID? - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + failed 失败 - - + + SetOnlineAddr 设置web服务器地址 - + ClearRealtimeServer 清除 - + InputRealTimeAddressTip 请输入RealTimer地址 - + SetRealtimeServer 设置RealTimer地址 - - - - + + + + Tip Info 提示 - - - + + + Can not find LedSet3.0.exe,down you need download and install it 找不到LedSet3.0.exe,确认下载并安装 - + RestartAndroid 重启 - + FPGA Version FPGA版本 - + + running 正在运行 - + + no running 没有运行 - + Check Apk Version 查询已安装apk版本 - + + UninstallSoftware 卸载 - + + IsSoftwareRunning 监测APK运行状态 - + apk package (*.rpd) - + CheckHardwareVersions 查询FPGA版本 - - - + + + SynchronousHardwareVersion 同步FPGA硬件版本 - + Check Screen untile fpga update finished 观察屏幕升级进度直到升级成功 - + OpenAdb 打开ADB调试功能 - + indentity voucher (*.ic) 身份凭证(*.ic) - - + + + + + InvokeTaxiAppFunction 绑定证书 - + Json format is error! - - + + AliIotSetting - + apk package (*.apk *.zip) - + Software Version Info 软件版本信息 - + Package 包名 - + Version 版本 - - + + UpgradeSoftware 升级固件 - + This screen is encrypted,Please decrypt and upgrade APK! 此屏幕已加密,请解密并升级APK! - + + + Package name is null + 包名为空 + + + Clearing Program 正在清除节目 - - + + Timeout 超时 - - + + Failed 失败 - + Getting Log 正在获取日志 - - + + + + + + + + Error 错误 - + + Open file Failed + 文件打开失败 + + + Setting Wallpaper 正在设置系统桌面背景 - - + + Set Wallpaper 设置系统桌面背景 - + System Updating 系统升级中 - - + + System Update 系统升级 - + Setting Baud Rate 正在设置波特率 - + Set Baud Rate 设置波特率 - + Getting Baud Rate 正在获取波特率 - + Get Baud Rate 获取波特率 - + Hidden Settings 隐藏的设置 - + Click right button to hide 点击右键隐藏 - + Baud Config 波特率配置 - + Model 设备型号 - + Uart 串口节点 - + Baud 波特率 - + Get 获取 - - - - + + + + SetScreenRotation 设置屏幕旋转 - + SetMinBrightness 设置最小的亮度值 - + SetMaxBrightness 设置亮度最大值 - + GetMinBrightness 获取亮度最小值 - + GetMaxBrightness 获取亮度最大值 - + SetSpecialResolution 设置分辨率 - + GetSpecialResolution 读取分辨率 - + CleanDisplayScreenSize 恢复默认分辨率 - + SetHighForBusy 设置有无客电平 - + GetStateForBusy 获取有无客电平 - + install start... 开始安装... - + InputAliasTip 请输入别名 - - + + SetCardAlias 设置别名 - + Uploadding 上传 - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tip 提示 - - - - - - - - - - - + + + + + + + + + + + + + + NoSelectedController 请先选择大屏幕 - + InputWidthTip 请输入正确的宽度像素值 - + InputHeightTip 请输入正确的高度像素值 - + Password is error 密码错误 - - - + + + DeviceItem OnProHttpResponse 解析json文件错误! 解析json文件错误! @@ -3086,34 +3117,34 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + Tip 提示 - - - - - - - - - + + + + + + + + + NoSelectedController 请先选择大屏幕 @@ -3125,238 +3156,238 @@ - + GetBrightnessSensitivity 获取亮度传感器灵敏度 - - + + SetMinBrightness 设置最小的亮度值 - - + + GetMinBrightness 获取亮度最小值 - - + + NeedSelectSensorTypeTip 请先选择传感器类型 - - + + SensorBrightnessTable 设置亮度传感器配置表 - + GetSensorBrightnessTable 获取传感器亮度配置表 - + no sensorBrightnessTable 控制卡没有发现亮度配置表 - + Save file 保存 - - + + GetCurrentSensorBrightness 获取当前亮度 - - + + SetBrightness 设置亮度 - + GetBrightness 获取亮度值 - + Brightness 屏体亮度 - + Import File 导入文件 - - + + BrightnessSchedule (*.bjs) - + Save File 保存文件 - + BrightnessValue 亮度值 - + Start Time 开始时间 - + End Time 结束时间 - - + + SetAutoBrightnessTask 发送定时亮度表 - + GetAutoBrightnessTask 获取定时亮度表 - - - - + + + + Error 错误 - + Brightness Configuration 亮度配置 - + Auto 自动 - + Manual 手动 - + Schedule 定时 - + BrightTip1 如果最大亮度为64,则最小亮度可以配置为1%或适当的值;如果最大亮度为255,则最小亮度必须配置为36%或更高,否则亮度将很低。 - + BrightTip2 上传文件时,请确认选择正确的传感器类型,否则无效! - + Sensitivity 灵敏度 - + Minbrightness 最小亮度值 - - + + Set 设置 - + Upload 上传配置文件 - - - + + + Readback 回读 - + ReadbackTable 回读 - + Refresh 刷新 - + Cur Brigntness 当前亮度 - + Brightness value 亮度值 - + Default brightness 默认亮度 - + Add 添加 - + Clear 清空 - + Delete 删除 - + Import 导入 - + Export 导出 - + Apply 应用 - + Default brightness tip 提示:该设定时间内为设定亮度,设定时间外为默认亮度。例如设定默认亮度为80,设定亮度为180,时间范围是8:00-17:00,则时间范围内亮度为180,其他时间内为默认亮度80! @@ -3364,14 +3395,15 @@ Def - - + + Connection Timeout 连接超时 + Success 成功 @@ -3388,7 +3420,7 @@ 提示 - + Fail 失败 @@ -3495,12 +3527,12 @@ 回读画面 - + Input password 输入密码 - + GetScreenshotFull 回读画面 @@ -3550,523 +3582,521 @@ 详细信息 - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - + + + + + + - + - - - - - - - + - - - - - - - - + + + + + + + + - - - - - - - - + + receive 接收 - + SetScreenOn 设置电源 - + AliIotSetting - - + + GetScreenStatus 获取屏幕状态 - - + + Status 状态 - DHCP IP - 动态DHCP IP + 动态DHCP IP - STATIC IP - 静态IP + 静态IP - + Tip Info 提示 - + password is wrong 密码错误 - + GetBrightness 获取亮度值 - - - + + + brightness 亮度 - + MasterSlaveSwitch 配置主从身份 - + SetBrightness 设置亮度 - - + + SetMinBrightness 设置最小的亮度值 - + GetBrightnessSensitivity 获取亮度传感器灵敏度 - + sensitivity 灵敏度 - + GetMinBrightness 获取亮度最小值 - + SetSensorBrightnessTable 配置传感器参数表 - + SetSwitchWiFi 设置WiFi开关 - + ConfigurationWiFi 配置WiFi - + ConfigurationHotSpot 配置热点 - + GetSwitchWiFi 获取WiFi状态 - + SetAutoBrightnessTask 发送定时亮度表 - + SetAutoVolumeTask 配置定时音量表 - + SetVolume 音量调节 - + GetVolume 获取当前音量 - + SetTimingScreenTask 设置屏幕定时开关任务 - + GetControllerDate 获取日期时间 - + SetHighForBusy 设置有无客电平 - - + + GetStateForBusy 获取有无客电平 - + Service:Low Out of service:High 有客:低电平 无客:高电平 - + Service:High Out of service:Low 有客:高电平 无客:低电平 - - - + + + IsPortableHotSpot 获取热点和WiFi模式 - + WifiName Wifi名称 - + ApName 热点名称 - + TestScreen 测试屏幕 - + SetOnlineAddr 设置web服务器地址 - + SetRealtimeServer 设置RealTimer地址 - + GetOnlineAddr 获取web服务器地址 - + GetRealtimeServer 获取realtime服务器地址 - + SetNtpServer 设置NTP服务 - + GetNtpServer 获取NTP服务信息 - + SyncTime 校准时间 - + DelPrograms 清除节目 - + SetingSyncMethod 设置同步方法 - + GetCurrentSensorBrightness 获取当前亮度 - + Cur brightness 当前亮度 - + SetSpecialResolution 设置分辨率 - + GetSpecialResolution 读取分辨率 - + totalResolution 包括行场数的分辨率 - + strCurDisplayResolution 当前显示屏分辨率 - + CleanDisplayScreenSize 恢复默认分辨率 - + SetMaxBrightness 设置亮度最大值 - + GetMaxBrightness 获取亮度最大值 - + screenSwitch 开关屏 - - - + + + YES - - - + + + NO - + LAN 局域网 - + Connect 连接 - + timeout 超时 - + Anycast 点播 - - + + volume 音量 - - - - - - + + + + + + GetingSyncMethod 获取同步方式 - - + + identificationCode 识别码 - - + + delaySync 时间偏移 - - + + msec 毫秒 - - - - + + + + OtherSyncItem 其他同步项 - - - - + + + + lastSynchronousTime 上次同步时间 - + checkNtpTime 同步间隔 - + Uploadding 上传 - + Success 成功 - + failed 失败 - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + - - - - - - - - + + + + success 成功 - - + + Lora identity Lora身份 - + Master - + Slave - + SetBrightnessSensitivity 设置亮度传感器灵敏度 - - - + + + on - - - + + + off @@ -4074,89 +4104,89 @@ DevicePanel - - + + All 总数 总数 - + Online 在线 在线 - - + + Refresh 刷新 刷新 - + Current Screen 当前屏幕 - + none - - + + Specify IP 指定IP 指定IP - + Screen ID 屏幕ID - + Screen IP 屏幕IP - + Screen Size 屏幕像素 - + Remark Name 別名 - + readback pic 回读画面 - + send 发送 - + More Info 详细信息 - + Cur Brightness 屏幕当前亮度 - + Power Status 屏幕开关状态 - + Security 加密 @@ -5118,53 +5148,54 @@ EVideo - + Basic Properties 基本属性 - + File 文件 - + Play Properties 播放方式 - + Play Duration 播放时长 - + Select File 选择文件 - + s - + Play Times 播放次数 - + Video Transcoding 视频转码 - - + + Video Transcoding Progress 视频转码进度 - + + Error 错误 @@ -5266,83 +5297,83 @@ MainWindow - + Language 语言 - + Help 帮助 - - + + Check for updates 检查更新 - - + + firmware manager 固件管理 - - + + Software Configuration 软件配置 - - + + Info 信息 - - + + About 关于 - - + + Setting 设置 - + Device 设备管理 - + Program 节目管理 - + Control 终端控制 - + GuangYinPin 光影屏 - + Check card 一键找卡 - + Tip Info 提示 - + RestoreLedCardIpByUdpTip 该操作会把局域网内的所有与计算机IP不在同一网段的控制卡修复成固定IP,请谨慎操作! @@ -6007,7 +6038,7 @@ 屏幕已加密 - + All 总数 @@ -6354,7 +6385,7 @@ UpgradeApkDialog - + Upgrade apk 升级apk @@ -6370,154 +6401,154 @@ - + Select apk 选择Apk包 - - + + Upgrade 升级 - + APK: - + Uninstall 卸载 - + check running state 检测运行状态 - + Select Fpga 选择FPGA文件 - + success info - + Refresh 刷新 - + Cancel 取消 - + Screen ID 屏幕ID - + Remark Name 別名 - + Online 在线 - + Screen IP 屏幕IP - + Security 加密 - + Progress 进度 - + xixunplayer - + cardsystem - + taxiapp - + starter - + connection - + displayer - + FPGA FPGA - + update - + State 状态 - - - + + + All 总数 - + The encrypted control card can be upgraded directly 加密控制卡可以直接升级 - + apk package (*.rpd) - + apk package (*.apk *.zip) @@ -7532,7 +7563,7 @@ - + IsSoftwareRunning 监测APK运行状态 @@ -7561,50 +7592,50 @@ - + SynchronousHardwareVersion 同步FPGA - + Tip Info 提示 - + password is wrong 密码错误 - - + + UninstallSoftware 卸载 - - + + Success 成功 - + Running 正在运行 - + NoRunning 没有运行 - + install success 安装成功 - - + + Fail 失败 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 + Form - + Wire Enther(RJ45) Configuration 有線網配寘 - - + + DHCP - - + + Specify IP 指定IP - - + + IP Address IP地址 - + Mask Address 子網路遮罩 - - + + Gateway 閘道 - - + + DNS Address DNS地址 - - - - - - - - + + + + + + + Set 設定 - - - - - - - + + + + + + Readback 回讀 - - + + WIFI Configuration WiFi配寘 - - + + WiFi On/Off WiFi使能 - + Input Ap name 輸入熱點名稱 - - + + 4G/5G Configuration 蜂窩數據G配寘 - - + + Open 4G/5G 啟用蜂窩數據 - + APN: - - + + Get cellular network status information 獲取蜂窩網絡狀態資訊 - - + + Check SIM can automatically match to MCC, and then select carrier get apn param,if not found carrier,you can check the CUSTOM checkbox,then enter custom param. 通過獲取狀態按鈕可以自動匹配國家碼MCC,然後選擇“運營商”可獲取到響應的APN資訊,如果找不到運營商,可以選中“自定義”核取方塊,然後手動輸入APN資訊。 - - + + Readback APN Info 回讀APN資訊 - - + + Set Apn Info,Check SIM can automatically match to MCC, and then select carrier get apn param 設定Apn資訊 - - + + CUSTOM 自定義 - - + + Check SIM 査詢SIM資訊 - - - + + + -> - - + + Country ID(mcc): 国家码(mcc):國家碼(mcc): - - + + Carrier Name 運營商 - - + + APN: 運營商APN: - - + + APN(Required) APN(必填) - - + + User: 用戶名: - - - - + + + + Not required 非必填 - - + + Password: 密碼: - + Set Apn:iot.cargo - - + + Flight Mode 飛行模式 - - + + WiFi name WiFi名稱 - - - - + + + + Password 密碼 - - - - + + + + Input password 輸入密碼 - - + + Scan 掃描 - - + + Ap Mode AP使能 - + Ap name 熱點名稱 - + OFF - + ON - + AP name 熱點名稱 - + Subnet mask 子網路遮罩 - + Input ap name 輸入AP名稱 - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + Success 成功 - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + failed 失敗 - - - - + + + + Tip 提示 - - + + NoSelectedController 請先選擇大螢幕 - - + + SetEthernet 設定有線網 - - - - - - - - + + + + + + + + Attention 注意 - + Please input IP address! 請輸入IP地址! - + Your IP Address is Invalid! IP地址無效! - + Please input Mask address! 請輸入子網路遮罩地址! - + Your Mask Address is Invalid! 遮罩地址無效! - + Please input Gateway address! 請輸入閘道地址! - + Your Gateway Address is Invalid! 閘道地址無效! - + Please input DNS address! 請輸入DNS地址! - + Your DNS Address is Invalid! DNS地址無效! - + + GetEthernet 獲取有線網配寘 - + + DHCP IP + 動態DHCP IP + + + + STATIC IP + 靜態IP + + + + Error + 錯誤 + + + SetSwitchWiFi 設定WiFi開關 - - - - - - + + + + + + SignalPower 信號強度 - - + + ConfigurationWiFi 配寘WiFi - + IsPortableHotSpot 獲取熱點和WiFi模式 - + GetWifiList 掃描WiFi - + ConfigurationHotSpot 配寘熱點 - + GetCurrentAPN 獲取APN資訊 - - + + GetSIMStatus 獲取SIM狀態 - - + SetAPN 設定APN - - + + DeviceItem OnProHttpResponse 解析json文件错误! DeviceItem OnProHttpResponse 解析json檔案錯誤! - + 状态: 狀態: - + 未知 未知 - + 锁定状态,需要用户的PIN码解锁 鎖定狀態,需要用戶的PIN碼解鎖 - + 锁定状态,需要用户的PUK码解锁 鎖定狀態,需要用戶的PUK碼解鎖 - + 锁定状态,需要网络的PIN码解锁 鎖定狀態,需要網絡的PIN碼解鎖 - + 就绪 就緒 - + no checked sim card 檢測不到sim卡 - + 国家码: 國家碼: - + 号码: 號碼: - + 用户: 用戶: - + 信号: 信号: - + 信号正常 訊號正常 - + 不在服务区 不在服務區 - + 仅限紧急呼叫 僅限緊急呼叫 - + 射频已经关闭 射頻已經關閉 - + 网络: 網絡: - + 网络类型未知 未知 - + GPRS网络 GPRS - + EDGE网络 EDGE - + UMTS网络 UMTS - + CDMA网络,IS95A 或 IS95B. CDM - + EVDO网络, revision 0. EVDO,revision 0. - + EVDO网络, revision A. EVDO,revision A. - + 1xRTT网络 1xRTT - + HSDPA网络 HSDPA - + HSUPA网络 HSUPA - + HSPA网络 HSPA - + 漫游: 漫遊: - + Yes - + No - + 数据连接状态: 數據連接狀態: - + 断开 斷開 - + 正在连接 正在連接 - + 已连接 已連接 - + 暂停 暫停 - + 数据活动休眠状态: 數據活動休眠狀態: - + 活动,但无数据发送和接收 活動,但無數據發送和接收 - + 活动,正在接收数据 活動,正在接收數據 - + 活动,正在发送数据 活動,正在發送數據 - + 活动,正在接收和发送数据 活動,正在接收和發送數據 - + 休眠状态 休眠狀態 - + 信号强度: 信號強度: - + SetSwitchSimData 設定4G/5G開關 - + ContrFlightMode 配寘飛行模式 - + GetFlightModeState 獲取飛行模式狀態 @@ -2341,747 +2345,774 @@ CtrlAdvancedPanel - + Advanced parameters 高級參數 - + Screen Width(pixel) 荧幕寬(點數) - + Width - - + + Height - - - - - - - + + + + + + + Set 設定 - + Alias 別名 - + Web Server Address: Web伺服器地址: - + www.m2mled.net - + www.ledaips.com - + https://www.taxihub.cn:2340 - + https://www.ledaips.com:2340 - + https://www.36taxi.com:2340 - + www.tlzxled.com - + Realtimer Server Address: Realtimer地址: - + Clear 清除 - + Apk upgrade Apk陞級 - + Check Apk 檢查Apk - + Uninstall 卸載 - + Running check 運行狀態監測 - + FPGA version check FPGA版本査詢 - + Sync FPGA version 同步FPGA版本 - + Restart led controller system 重啓 - + Check Log 查看日誌 - + Start LedSet4 - + Open ADB 打開ADB調試功能 - + Post Custom JSON Post Custom JSON - - - - - - - + + + + + + + Clear Program 清除節目 - + www.ledokcloud.com/realtime - + M80 configuration M80配寘 - + 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 使用LedSet3.0配寘LED模組(廠家專業人員使用) - + Binding *.ic account indentity voucher 綁定taxihub平臺用戶身份憑證 - + Rotate 旋轉 - + 0 degrees 0度 - + 90 degrees 90度 - + 180 degrees 10度 - + 270 degrees 270度 - + Min brightness 最低亮度 - + (min:1) (最小:1) - - - + + + Readback 回讀 - - - + + + Send 發送 - + Max brightness 最高亮度 - + (max:255) (最高:255) - - + + SetScreenSize 設定荧幕點數尺寸 - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + Success 成功 - + Compant ID: 公司ID: - + FPGA Upgrade FPGA陞級 - + Compant ID 公司ID - - - - - - - - - - - + + + + + + + + + + + + + + NoSelectedController 請先選擇大螢幕 - + InputWebServerAddressTip 請輸入Web伺服器地址 - + InputCompanyIdTip 請輸入公司ID - + Do you want to modify webserveraddress and companyId? 是否確認配寘伺服器地址和公司ID? - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + failed 失敗 - - + + SetOnlineAddr 設定web伺服器地址 - + ClearRealtimeServer 清除 - + InputRealTimeAddressTip 請輸入RealTimer地址 - + SetRealtimeServer 設定RealTimer地址 - - - - + + + + Tip Info 提示 - - - + + + Can not find LedSet3.0.exe,down you need download and install it 找不到LedSet3.0.exe,確認下載並安裝 - + RestartAndroid 重啓 - + FPGA Version FPGA版本 - + + running 正在運行 - + + no running 沒有運行 - + Check Apk Version 査詢已安裝apk版本 - + + UninstallSoftware 卸載 - + + IsSoftwareRunning 監測APK運行狀態 - + apk package (*.rpd) - + CheckHardwareVersions 査詢FPGA版本 - - - + + + SynchronousHardwareVersion 同步FPGA硬體版本 - + Check Screen untile fpga update finished 觀察荧幕陞級進度直到陞級成功 - + OpenAdb 打開ADB調試功能 - + indentity voucher (*.ic) 身份憑證(*.ic) - - + + + + + InvokeTaxiAppFunction 綁定證書 - + Json format is error! - - + + AliIotSetting - + apk package (*.apk *.zip) - + Software Version Info 軟體版本資訊 - + Package 包名 - + Version 版本 - - + + UpgradeSoftware 陞級固件 - + This screen is encrypted,Please decrypt and upgrade APK! 此荧幕已加密,請解密並陞級APK! - + + + Package name is null + 包名為空 + + + Clearing Program 正在清除節目 - - + + Timeout 超時 - - + + Failed 失敗 - + Getting Log 讀取日誌 - - + + + + + + + + Error 錯誤 - + + Open file Failed + 檔案打開失敗 + + + Setting Wallpaper 正在設定系統桌面背景 - - + + Set Wallpaper 設定系統桌面背景 - + System Updating 系統升級中 - - + + System Update 系統升級 - + Setting Baud Rate 正在設定串列傳輸速率 - + Set Baud Rate 設定串列傳輸速率 - + Getting Baud Rate 正在讀取串列傳輸速率 - + Get Baud Rate 讀取串列傳輸速率 - + Hidden Settings 隱藏的設定 - + Click right button to hide 點擊右鍵隱藏 - + Baud Config 串列傳輸速率配寘 - + Model 設備型號 - + Uart 串口節點 - + Baud 串列傳輸速率 - + Get 讀取 - - - + + + DeviceItem OnProHttpResponse 解析json文件错误! DeviceItem OnProHttpResponse 解析json檔案錯誤! - - - - + + + + SetScreenRotation 設定荧幕旋轉 - + SetMinBrightness 設定最小的亮度值 - + SetMaxBrightness 設定亮度最大值 - + GetMinBrightness 獲取亮度最小值 - + GetMaxBrightness 獲取亮度最大值 - + SetSpecialResolution 設定分辯率 - + GetSpecialResolution 讀取分辯率 - + CleanDisplayScreenSize 恢復默認分辯率 - + SetHighForBusy 設定有無客電平 - + GetStateForBusy 獲取有無客電平 - + install start... 開始安裝… - + InputAliasTip 請輸入別名 - - + + SetCardAlias 設定別名 - + Uploadding 上傳 - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tip 提示 - + InputWidthTip 請輸入正確的寬度點數值 - + InputHeightTip 請輸入正確的高度點數值 - + Password is error 密碼錯誤 @@ -3091,34 +3122,34 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + Tip 提示 - - - - - - - - - + + + + + + + + + NoSelectedController 請先選擇大螢幕 @@ -3130,89 +3161,89 @@ - + GetBrightnessSensitivity 獲取亮度感測器靈敏度 - - + + SetMinBrightness 設定最小的亮度值 - - + + GetMinBrightness 獲取亮度最小值 - - + + NeedSelectSensorTypeTip 請先選擇感測器類型 - - + + SensorBrightnessTable 設定亮度感測器配寘錶 - + GetSensorBrightnessTable 獲取感測器亮度配寘錶 - + no sensorBrightnessTable 控制卡沒有發現亮度配寘錶 - + Save file 保存 - - + + GetCurrentSensorBrightness 獲取當前亮度 - - + + SetBrightness 設定亮度 - + GetBrightness 獲取亮度值 - + Brightness 屏体亮度 - + Import File 導入檔案 - - + + BrightnessSchedule (*.bjs) - + Save File 保存 - + BrightnessValue 亮度值 @@ -3222,151 +3253,151 @@ 開始時間 - + Start Time 開始時間 - + End Time 結束時間 - - + + SetAutoBrightnessTask 發送定時亮度錶 - + GetAutoBrightnessTask 獲取定時亮度錶 - - - - + + + + Error 錯誤 - + Brightness Configuration 亮度配寘 - + Auto 自動 - + Manual 手動 - + Schedule 定時 - + BrightTip1 如果最大亮度為64,則最小亮度可以配寘為1%或適當的值;如果最大亮度為255,則最小亮度必須配寘為36%或更高,否則亮度將很低。 - + BrightTip2 上傳文件時,請確認選擇正確的感測器類型,否則無效! - + Sensitivity 靈敏度 - + Minbrightness 最小亮度值 - - + + Set 設定 - + Upload 上傳設定檔 - - - + + + Readback 回讀 - + ReadbackTable 回讀 - + Refresh 檢測 - + Cur Brigntness 當前亮度 - + Brightness value 亮度值 - + Default brightness 默認亮度 - + Add 添加 - + Clear 清空 - + Delete 删除 - + Import 導入 - + Export 匯出 - + Apply 應用 - + Default brightness tip 提示:該設定時間內為設定亮度,設定時間外為默認亮度。例如設定默認亮度為80,設定亮度為180,時間範圍是8:00-17:00,則時間範圍內亮度為180,其他時間內為默認亮度80! @@ -3374,14 +3405,15 @@ Def - - + + Connection Timeout 連接超時 + Success 成功 @@ -3398,7 +3430,7 @@ 提示 - + Fail 失敗 @@ -3505,12 +3537,12 @@ 回讀畫面 - + Input password 輸入密碼 - + GetScreenshotFull 回讀畫面 @@ -3560,523 +3592,521 @@ 詳細資訊 - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - + + + + + + - + - - - - - - - + - - - - - - - - + + + + + + + + - - - - - - - - + + receive 接收 - + SetScreenOn 設定電源 - + AliIotSetting - - + + GetScreenStatus 獲取荧幕狀態 - - + + Status 狀態 - DHCP IP - 動態DHCP IP + 動態DHCP IP - STATIC IP - 靜態IP + 靜態IP - + Tip Info 提示 - + password is wrong 密碼錯誤 - + GetBrightness 獲取亮度值 - - - + + + brightness 亮度 - + MasterSlaveSwitch 配寘主從身份 - + SetBrightness 設定亮度 - - + + SetMinBrightness 設定最小的亮度值 - + GetBrightnessSensitivity 獲取亮度感測器靈敏度 - + sensitivity 靈敏度 - + GetMinBrightness 獲取亮度最小值 - + SetSensorBrightnessTable 配寘感測器參數表 - + SetSwitchWiFi 設定WiFi開關 - + ConfigurationWiFi 配寘WiFi - + ConfigurationHotSpot 配寘熱點 - + GetSwitchWiFi 獲取WiFi狀態 - + SetAutoBrightnessTask 發送定時亮度錶 - + SetAutoVolumeTask 配寘定時音量表 - + SetVolume 音量調節 - + GetVolume 獲取當前音量 - + SetTimingScreenTask 設定荧幕定時開關任務 - + GetControllerDate 獲取日期時間 - + SetHighForBusy 設定有無客電平 - - + + GetStateForBusy 獲取有無客電平 - + Service:Low Out of service:High 有客:低電平 無客:高電平 - + Service:High Out of service:Low 有客:高電平無客:低電平 - - - + + + IsPortableHotSpot 獲取熱點和WiFi模式 - + WifiName Wifi名稱 - + ApName 熱點名稱 - + TestScreen 測試荧幕 - + SetOnlineAddr 設定web伺服器地址 - + SetRealtimeServer 設定RealTimer地址 - + GetOnlineAddr 取得web伺服器地址 - + GetRealtimeServer 獲取realtime伺服器地址 - + SetNtpServer 設定NTP服務 - + GetNtpServer 獲取NTP服務資訊 - + SyncTime 校準時間 - + DelPrograms 清除節目 - + SetingSyncMethod 設定同步方法 - + GetCurrentSensorBrightness 獲取當前亮度 - + Cur brightness 當前亮度 - + SetSpecialResolution 設定分辯率 - + GetSpecialResolution 讀取分辯率 - + totalResolution 行数を含む解像度 - + strCurDisplayResolution 當前顯示分辯率 - + CleanDisplayScreenSize 恢復默認分辯率 - + SetMaxBrightness 設定亮度最大值 - + GetMaxBrightness 獲取亮度最大值 - + screenSwitch 開關屏 - - - + + + YES - - - + + + NO - + LAN 局域網 - + Connect 連接 - + timeout 超時 - + Anycast 點播 - - + + volume 音量 - - - - - - + + + + + + GetingSyncMethod 獲取同步管道 - - + + identificationCode 識別碼 - - + + delaySync 時間偏移 - - + + msec 毫秒 - - - - + + + + OtherSyncItem 其他同步項 - - - - + + + + lastSynchronousTime 上次同步時間 - + checkNtpTime 同步間隔 - + Uploadding 上傳 - + Success 成功 - + failed 失敗 - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + - - - - - - - - + + + + success 成功 - - + + Lora identity Lora身份 - + Master - + Slave - + SetBrightnessSensitivity 設定亮度感測器靈敏度 - - - + + + on - - - + + + off @@ -4084,87 +4114,87 @@ DevicePanel - - + + All 總數 - + Online 在线 線上 - - + + Refresh 檢測 - - + + Specify IP 指定IP 指定IP - + Current Screen 当前屏幕 - + none - + Screen ID 荧幕ID - + Screen IP 荧幕IP - + Screen Size 荧幕點數 - + Remark Name 別名 - + readback pic 回讀畫面 - + send 發送 - + More Info 詳細資訊 - + Cur Brightness 荧幕當前亮度 - + Power Status 荧幕開關狀態 - + Security 加密 @@ -5126,53 +5156,54 @@ EVideo - + Basic Properties 基本屬性 - + File 檔案 - + Play Properties 播放管道 - + Play Duration 播放時長 - + Select File 選擇檔案 - + s - + Play Times 播放次數 - + Video Transcoding - - + + Video Transcoding Progress 視頻轉碼進度 - + + Error 錯誤 @@ -5274,83 +5305,83 @@ MainWindow - + Language 語言 - + Help 幫助 - - + + Check for updates 檢查更新 - - + + firmware manager 固件管理 - - + + Software Configuration 軟件配寘 - - + + Info 資訊 - - + + About 關於 - - + + Setting 設定 - + Device 設備管理 - + Program 節目管理 - + Control 終端控制 - + GuangYinPin 光影屏 - + Check card 一键找卡 - + Tip Info 提示 - + RestoreLedCardIpByUdpTip 該操作會把局域網內的所有與電腦IP不在同一網段的控制卡修復成固定IP,請謹慎操作! @@ -6015,7 +6046,7 @@ 荧幕已加密 - + All 總數 @@ -6362,7 +6393,7 @@ UpgradeApkDialog - + Upgrade apk 陞級apk @@ -6378,154 +6409,154 @@ - + Select apk 選擇Apk包 - - + + Upgrade 陞級 - + APK: - + Uninstall 卸載 - + check running state 檢測運行狀態 - + Select Fpga 選擇FPGA檔案 - + success info - + Refresh 檢測 - + Cancel 取消 - + Screen ID 荧幕ID - + Remark Name 別名 - + Online 線上 - + Screen IP 荧幕IP - + Security 加密 - + Progress 進度 - + xixunplayer - + cardsystem - + taxiapp - + starter - + connection - + displayer - + FPGA FPGA - + update - + State 陳述 - - - + + + All 總數 - + The encrypted control card can be upgraded directly 加密控制卡可以直接陞級 - + apk package (*.rpd) - + apk package (*.apk *.zip) @@ -7540,7 +7571,7 @@ - + IsSoftwareRunning 監測APK運行狀態 @@ -7569,50 +7600,50 @@ - + SynchronousHardwareVersion 同步FPGA - + Tip Info 提示 - + password is wrong 密碼錯誤 - - + + UninstallSoftware 卸載 - - + + Success 成功 - + Running 正在運行 - + NoRunning 沒有運行 - + install success 安裝成功 - - + + Fail 失敗 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(); });