diff --git a/.gitignore b/.gitignore index 2543a6c..03e9bf1 100644 --- a/.gitignore +++ b/.gitignore @@ -20,8 +20,10 @@ moc_*.cpp qrc_*.cpp ui_*.h Makefile* -*-build-* +build-* # QtCreator *.autosave + +*-old/* diff --git a/LedOK/LedOK.pro b/LedOK/LedOK.pro index ed293ed..1ac2109 100644 --- a/LedOK/LedOK.pro +++ b/LedOK/LedOK.pro @@ -19,7 +19,6 @@ CONFIG += embed_translations TARGET = $$quote(LedOK Express) VERSION = 1.2.9 DEFINES += APP_VERSION=\\\"$$VERSION\\\" -DEFINES += QT_USE_FAST_OPERATOR_PLUS msvc { QMAKE_CXXFLAGS += -execution-charset:utf-8 QMAKE_CXXFLAGS += -source-charset:utf-8 @@ -57,7 +56,6 @@ SOURCES += \ base/lodateselector.cpp \ base/loqtitlebar.cpp \ base/loqtreewidget.cpp \ - base/networkmanager.cpp \ base/table.cpp \ base/waitingdlg.cpp \ basedlg.cpp \ @@ -94,7 +92,6 @@ SOURCES += \ tipdialog.cpp \ tools.cpp \ wDevicesManager/controlencryptwidget.cpp \ - wDevicesManager/controlhdmimanual.cpp \ wDevicesManager/controlhdmischedule.cpp \ wDevicesManager/controlhdmiwidget.cpp \ wDevicesManager/controlnetconfigwidget.cpp \ @@ -161,7 +158,6 @@ HEADERS += \ base/lodateselector.h \ base/loqtitlebar.h \ base/loqtreewidget.h \ - base/networkmanager.h \ base/table.h \ base/waitingdlg.h \ basedlg.h \ @@ -197,7 +193,6 @@ HEADERS += \ tipdialog.h \ tools.h \ wDevicesManager/controlencryptwidget.h \ - wDevicesManager/controlhdmimanual.h \ wDevicesManager/controlhdmischedule.h \ wDevicesManager/controlhdmiwidget.h \ wDevicesManager/controlnetconfigwidget.h \ @@ -251,7 +246,6 @@ FORMS += \ mguangyingpinwidget.ui \ tipdialog.ui \ wDevicesManager/controlencryptwidget.ui \ - wDevicesManager/controlhdmimanual.ui \ wDevicesManager/controlhdmischedule.ui \ wDevicesManager/controlhdmiwidget.ui \ wDevicesManager/controlpowermanual.ui \ diff --git a/LedOK/base/networkmanager.cpp b/LedOK/base/networkmanager.cpp deleted file mode 100644 index fea0768..0000000 --- a/LedOK/base/networkmanager.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "networkmanager.h" - -NetworkManager::NetworkManager(QObject *parent) : QObject{parent} { - -} -void NetworkManager::post(const QNetworkRequest &request, const QByteArray &data) { - QNetworkReply* reply = mManager.post(request, data); -} diff --git a/LedOK/base/networkmanager.h b/LedOK/base/networkmanager.h deleted file mode 100644 index 4db6582..0000000 --- a/LedOK/base/networkmanager.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef NETWORKMANAGER_H -#define NETWORKMANAGER_H - -#include - -class NetworkManager : public QObject { - Q_OBJECT -public: - explicit NetworkManager(QObject *parent = nullptr); - - void post(const QNetworkRequest&, const QByteArray &data); - - QNetworkAccessManager mManager; -signals: - -}; - -#endif // NETWORKMANAGER_H diff --git a/LedOK/communication/hpptclient.cpp b/LedOK/communication/hpptclient.cpp index b109e19..beb2586 100644 --- a/LedOK/communication/hpptclient.cpp +++ b/LedOK/communication/hpptclient.cpp @@ -102,7 +102,7 @@ void HpptClient::onHttpGetRspFinished(QNetworkReply *reply) { clearRp(reply); } -void HpptClient::onHttpPostRspProgress(qint64 bytesReceived, qint64 bytesTotal){ +void HpptClient::onHttpPostRspProgress(qint64, qint64 bytesTotal){ if(sender() == NULL) return; QNetworkReply* rp = qobject_cast(sender()); if(rp == NULL) return; diff --git a/LedOK/devicepanel.cpp b/LedOK/devicepanel.cpp index 31fd4ba..57d09eb 100644 --- a/LedOK/devicepanel.cpp +++ b/LedOK/devicepanel.cpp @@ -131,6 +131,7 @@ QPushButton:hover {background-color: #08b;} auto senderAddress = gram.senderAddress(); bool ok = true; if(senderAddress.protocol()==QUdpSocket::IPv6Protocol) senderAddress.setAddress(senderAddress.toIPv4Address(&ok)); + auto addr = ok ? senderAddress.toString() : ""; if(data.startsWith("{\"")) { QJsonParseError error; QJsonDocument document = QJsonDocument::fromJson(gram.data(), &error); @@ -138,10 +139,10 @@ QPushButton:hover {background-color: #08b;} qDebug()<<"DeviceItem OnProHttpResponse 解析json文件错误!"; continue; } - pNetComm->JieXiQJsonObjectOfLedCardInfo(document.object(), ok ? senderAddress.toString() : ""); + pNetComm->JieXiQJsonObjectOfLedCardInfo(document.object(), addr); } else { STREAM_PACKET *pStreamPacket = (STREAM_PACKET *)gram.data().data(); - pNetComm->JieXiQJsonObjectOfLedCardInfoOld(pStreamPacket->ucSerialCode, ok ? senderAddress.toString() : ""); + pNetComm->JieXiQJsonObjectOfLedCardInfoOld(pStreamPacket->ucSerialCode, addr); } } }); diff --git a/LedOK/ffplayer.cpp b/LedOK/ffplayer.cpp index cb11167..38ddc77 100644 --- a/LedOK/ffplayer.cpp +++ b/LedOK/ffplayer.cpp @@ -42,7 +42,15 @@ AVFmt::AVFmt(QByteArray url) { qInfo()<<"Couldn't open Video Codec Ctx"; } else { sws_ctx = sws_getContext(vi.ctx->width, vi.ctx->height, vi.ctx->pix_fmt, vi.ctx->width, vi.ctx->height, AV_PIX_FMT_RGB24, SWS_FAST_BILINEAR, nullptr, nullptr, nullptr); - qInfo()<width<<"x"<height<framerate.num<<"/"<framerate.den; + qInfo()<width<<"x"<height<framerate.num<<"/"<framerate.den<<"color_primaries"<color_primaries<<"colorspace"<colorspace; + if(vi.ctx->color_primaries==AVCOL_PRI_BT2020) { + res = sws_setColorspaceDetails(sws_ctx, sws_getCoefficients(SWS_CS_BT2020), 0, sws_getCoefficients(SWS_CS_DEFAULT), 0, -0x2200, 0x1c000, 0x18000); //0x12800, 0x40000 + qInfo()<<"sws_setColorspaceDetails"<time_base.num * 1000000; vi.time_den = viStream->time_base.den; vi.start = viStream->start_time * vi.time_num / vi.time_den; diff --git a/LedOK/player/elevideo - 副本.cpp b/LedOK/player/elevideo - qt.cpp similarity index 100% rename from LedOK/player/elevideo - 副本.cpp rename to LedOK/player/elevideo - qt.cpp diff --git a/LedOK/player/elevideo - 副本.h b/LedOK/player/elevideo - qt.h similarity index 100% rename from LedOK/player/elevideo - 副本.h rename to LedOK/player/elevideo - qt.h diff --git a/LedOK/player/elevideo - vlc.cpp b/LedOK/player/elevideo - vlc.cpp new file mode 100644 index 0000000..f7d7462 --- /dev/null +++ b/LedOK/player/elevideo - vlc.cpp @@ -0,0 +1,61 @@ +#include "elevideo.h" +#include "tools.h" +#include +#include +#include + +static void *lock(void *opaque, void **planes) { + auto that = (EleVideo *) opaque; + that->imgRaw = QImage(that->mWidth, that->mHeight, QImage::Format_RGB32); + *planes = that->imgRaw.bits(); /*tell VLC to put decoded data to this buffer*/ + return 0; /* picture identifier, not needed here */ +} +static void unlock(void *opaque, void *picture, void *const *planes) { +} + +static void display(void *opaque, void *picture) { + auto that = (EleVideo *) opaque; + that->emDisplay(that->imgRaw); +} + +EleVideo::EleVideo(QString path, QWidget *parent) : QWidget{parent} { + vlc = libvlc_new(0, NULL); + auto pathChars = path.replace("/","\\").toUtf8(); + auto media = libvlc_media_new_path(vlc, pathChars.data()); + qDebug()<<"media"<img; +// qDebug()<<"viCurTime"<viCurTime; +// qDebug()<<"viSize"<viSize; +//} +void EleVideo::showEvent(QShowEvent *) { + if(player!=nullptr) libvlc_media_player_play(player); +} +void EleVideo::hideEvent(QHideEvent *) { + if(player!=nullptr) libvlc_media_player_stop(player); +} + +void EleVideo::paintEvent(QPaintEvent *e) { + QWidget::paintEvent(e); + QPainter painter(this); + painter.drawImage(QRectF(0, 0, width(), height()), img); +} diff --git a/LedOK/player/elevideo - vlc.h b/LedOK/player/elevideo - vlc.h new file mode 100644 index 0000000..d40ab40 --- /dev/null +++ b/LedOK/player/elevideo - vlc.h @@ -0,0 +1,29 @@ +#ifndef ELEVIDEO_H +#define ELEVIDEO_H + +#include +#include + +class EleVideo : public QWidget { + Q_OBJECT +public: + explicit EleVideo(QString path, QWidget *parent = nullptr); + ~EleVideo() { + if(vlc) libvlc_release(vlc); + if(player) libvlc_media_player_release(player); + } + + unsigned mWidth{0}, mHeight{0}; + QImage imgRaw; + QImage img; + libvlc_instance_t *vlc{0}; + libvlc_media_player_t *player{0}; +protected: + void paintEvent(QPaintEvent *) override; + void showEvent(QShowEvent *) override; + void hideEvent(QHideEvent *) override; +signals: + void emDisplay(QImage img); +}; + +#endif // ELEVIDEO_H diff --git a/LedOK/translations/app_en.ts b/LedOK/translations/app_en.ts index de1e2dd..4fe5e46 100644 --- a/LedOK/translations/app_en.ts +++ b/LedOK/translations/app_en.ts @@ -217,86 +217,6 @@ The original password is wrong - - ControlHdmiManual - - - Form - Form - - - - - HDMI IN - HDMI IN - - - - Program In controller - Program in screen - - - - - - Readback - Readback - - - - Async - Async - - - - Tip - Tip - - - - NoSelectedController - Please select screen first - - - - - SyncSwitch - Switch video source from HDMI-IN port - - - - - AnSyncSwitch - Switch video source from Async box - - - - IsSync - Readback video source - - - - - - - Success - Success - - - - - - - failed - failed - - - - - DeviceItem OnProHttpResponse 解析json文件错误! - - - ControlHdmiSchedule @@ -306,31 +226,31 @@ - + Add Add - + Delete Delete - + Clear Clear - + Import Import - + Export Export @@ -341,7 +261,7 @@ - + Apply Apply @@ -401,63 +321,63 @@ SAT - - + + DeviceItem OnProHttpResponse 解析json文件错误! - - + + On On - + SyncSchedule (*.syncs) - + Save File Save file - + Sync Schedule (*.syncs) - - + + Tip Tip - - + + NoSelectedController Please select screen first - + SetTimingHdmiInTask Set video source form HDMI-IN schedule task - + GetTimingHdmiInTask Get video source form HDMI-IN schedule task - - + + Success Success - - + + failed failed @@ -471,29 +391,75 @@ - + HDMI Configuration Video source configuration - + Manual Manual - + Schedule Schedule + + + + Tip + Tip + + + + + NoSelectedController + Please select screen first + + + + + SyncSwitch + Switch video source from HDMI-IN port + + + + + AnSyncSwitch + Switch video source from Async box + + + + + IsSync + Readback video source + + + + Error + Error + + + + HDMI IN + HDMI IN + + + + Async + Async + + + + Readback + Readback + ControlNetConfigWidget - - Form - Form - Wire Enther(RJ45) Configuration @@ -864,21 +830,17 @@ DHCP IP - DHCP IP + DHCP IP STATIC IP - STATIC IP + STATIC IP Error - Error - - - SetSwitchWiFi - Set WiFi on/off + Error @@ -1268,31 +1230,31 @@ - + Add Add - + Delete Delete - + Clear Clear - + Import Import - + Export Export @@ -1308,7 +1270,7 @@ - + Apply Apply @@ -1373,83 +1335,83 @@ SAT - - + + DeviceItem OnProHttpResponse 解析json文件错误! - - + + On On - - + + PowerSchedule (*.pjs) PowerSchedule (*.pjs) - + Save File Save file - - - + + + Tip Tip - - - + + + NoSelectedController Please select screen first - - + + Tip Info Tip Info - - + + Clear schedule task? Clear schedule task? - - + + CleanTimingScreenTask Clear schedule task - + SetTimingScreenTask Set schedule task of screen power - - - - + + + + Success Success - - - - + + + + failed failed - + GetTimingScreenTask Get schedule task of screen power @@ -1463,19 +1425,19 @@ - + Power Configuration Power configuration - + Manual Manual - + Schedule Schedule @@ -2142,19 +2104,19 @@ - + Add Add - + Delete Delete - + Clear Clear @@ -2170,19 +2132,19 @@ - + Import Import - + Export Export - + Apply Apply @@ -2242,68 +2204,68 @@ SAT - + Default volume tip Reminder: the display screen is the default brightness outside the fixed time period - + Default volume Default volume - - + + DeviceItem OnProHttpResponse 解析json文件错误! DeviceItem OnProHttpResponse json error! - + 10 10 - - + + Volume Schedule (*.vols) - + Save File Save file - - + + Tip Tip - - + + NoSelectedController Please select screen first - + SetAutoVolumeTask Set volume schedule - - + + Success Success - - + + failed failed - + GetAutoVolumeTask Get volume schedule @@ -2337,794 +2299,823 @@ 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 + Timeout - - + + + + Failed - + - + Getting Log - - - - - - - + + + + + + + + Error Error - + Open file Failed - + Open file Failed - - - + Setting Wallpaper - - - - + + Set Wallpaper - + System Updating - - + + System Update - + + Select File + Select File + + + + Setting player background + + + + + + Set player background + + + + + Clearing player background + + + + + + + + + + + + Clear player background + + + + 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 - Clear program successed! - Clear program successed! - - - Clear program failed! - Clear program failed! - - - Clear program timeout! - 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! @@ -3171,10 +3162,6 @@ SetBrightnessSensitivity Set brightness sensitivity - - Success - Success - @@ -3193,10 +3180,6 @@ GetMinBrightness Get min brightness - - brightness - brightnenss - @@ -3435,11 +3418,11 @@ Device replied - + - + Success Success @@ -3700,14 +3683,6 @@ Status Status - - DHCP IP - DHCP IP - - - STATIC IP - STATIC IP - Tip Info @@ -3854,10 +3829,6 @@ ApName Ap Name - - SetScreenSize - Set Screen Size - TestScreen @@ -5640,6 +5611,19 @@ Close + + PlayerBackSendThread + + + Open file failed + Open file failed + + + + Read file failed + Read file failed + + PosDlg @@ -6156,14 +6140,6 @@ Your IP Address is Invalid! IP Address is invalid! - - Success - Success - - - Can't find this device IP - Can't find this device IP - Error diff --git a/LedOK/translations/app_ja.ts b/LedOK/translations/app_ja.ts index ed85775..7486964 100644 --- a/LedOK/translations/app_ja.ts +++ b/LedOK/translations/app_ja.ts @@ -217,86 +217,6 @@ 元のパスワードが間違っています - - ControlHdmiManual - - - Form - リフレッシュ - - - - - HDMI IN - HDMI IN - - - - Program In controller - 番組を内蔵する - - - - - - Readback - 読み戻し - - - - Async - アシュリン - - - - Tip - 提示 - - - - NoSelectedController - 先に大きいスクリーンを選んでください - - - - - SyncSwitch - スイッチのビデオソースをHDMI-IN - - - - - AnSyncSwitch - 異ステップモードを切り替え - - - - IsSync - 同じ非同期モードを読み返す - - - - - - - Success - 成功 - - - - - - - failed - 失敗 - - - - - DeviceItem OnProHttpResponse 解析json文件错误! - - - ControlHdmiSchedule @@ -306,31 +226,31 @@ - + Add 追加 - + Delete 削除 - + Clear クリア - + Import インポート - + Export 出力 @@ -341,7 +261,7 @@ - + Apply 適用 @@ -401,63 +321,63 @@ 土曜日 - - + + DeviceItem OnProHttpResponse 解析json文件错误! - - + + On 開く - + SyncSchedule (*.syncs) - + Save File 保存 - + Sync Schedule (*.syncs) - - + + Tip 提示 - - + + NoSelectedController 先に大きいスクリーンを選んでください - + SetTimingHdmiInTask 同期モードタイミングタスクの設定 - + GetTimingHdmiInTask 同期モードタイミングタスクの取得 - - + + Success 成功 - - + + failed 失敗 @@ -471,29 +391,75 @@ - + HDMI Configuration ビデオソースの設定 - + Manual 手動 - + Schedule スケジュール + + + + Tip + 提示 + + + + + NoSelectedController + 先に大きいスクリーンを選んでください + + + + + SyncSwitch + スイッチのビデオソースをHDMI-IN + + + + + AnSyncSwitch + 異ステップモードを切り替え + + + + + IsSync + 同じ非同期モードを読み返す + + + + Error + エラー + + + + HDMI IN + HDMI IN + + + + Async + アシュリン + + + + Readback + 読み戻し + ControlNetConfigWidget - - Form - リフレッシュ - Wire Enther(RJ45) Configuration @@ -876,10 +842,6 @@ Error エラー - - SetSwitchWiFi - WiFiスイッチの設定 - @@ -1268,31 +1230,31 @@ - + Add 追加 - + Delete 削除 - + Clear クリア - + Import インポート - + Export 出力 @@ -1308,7 +1270,7 @@ - + Apply 適用 @@ -1373,83 +1335,83 @@ 土曜日 - - + + DeviceItem OnProHttpResponse 解析json文件错误! - - + + On 開く - - + + PowerSchedule (*.pjs) スイッチパネルタイミング(*.pjs) - + Save File 保存 - - - + + + Tip 提示 - - - + + + NoSelectedController 先に大きいスクリーンを選んでください - - + + Tip Info ヒント - - + + Clear schedule task? スケジュールのタスクをキャンセル? - - + + CleanTimingScreenTask スケジュールのタスクをキャンセル - + SetTimingScreenTask 画面タイミングスイッチタスクの設定 - - - - + + + + Success 成功 - - - - + + + + failed 失敗 - + GetTimingScreenTask 画面タイミングスイッチタスクの取得 @@ -1463,19 +1425,19 @@ - + Power Configuration スイッチパネル制御 - + Manual 手動 - + Schedule スケジュール @@ -2142,19 +2104,19 @@ - + Add 追加 - + Delete 削除 - + Clear クリア @@ -2170,19 +2132,19 @@ - + Import インポート - + Export 出力 - + Apply 適用 @@ -2242,68 +2204,68 @@ 土曜日 - + Default volume tip 注意:時間帯以外の時間表示はデフォルトの明るさです - + Default volume デフォルトの音量値 - - + + DeviceItem OnProHttpResponse 解析json文件错误! jsonファイルの解析エラー! - + 10 10 - - + + Volume Schedule (*.vols) - + Save File 保存 - - + + Tip 提示 - - + + NoSelectedController 先に大きいスクリーンを選んでください - + SetAutoVolumeTask 設定タイミング音量表 - - + + Success 成功 - - + + failed 失敗 - + GetAutoVolumeTask タイミング音量表の取得 @@ -2337,794 +2299,823 @@ 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 - + + Select File + ファイルを選択 + + + + Setting player background + + + + + + Set player background + + + + + Clearing player background + + + + + + + + + + + + Clear player background + + + + 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 エイリアスの設定 - Clear program successed! - プログラムクリア成功 - - - Clear program failed! - プログラムのクリアに失敗しました - - - Clear program timeout! - 番組クリアタイムアウト - - - + Uploadding アップロード - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tip 提示 - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + NoSelectedController 先に大きいスクリーンを選んでください - + InputWidthTip 正しい幅のピクセル値を入力してください - + InputHeightTip 正しい高さのピクセル値を入力してください - + Password is error パスワード - - - + + + DeviceItem OnProHttpResponse 解析json文件错误! jsonファイルの解析エラー! @@ -3431,7 +3422,7 @@ - + Success 成功 @@ -3692,14 +3683,6 @@ Status 状態 - - DHCP IP - DHCP IP - - - STATIC IP - 静的IP - Tip Info @@ -5627,6 +5610,19 @@ 閉じる + + PlayerBackSendThread + + + Open file failed + ファイルのオープンに失敗しました + + + + Read file failed + ファイルの読み込みに失敗しました + + PosDlg diff --git a/LedOK/translations/app_zh_CN.ts b/LedOK/translations/app_zh_CN.ts index 5f0c58f..4848840 100644 --- a/LedOK/translations/app_zh_CN.ts +++ b/LedOK/translations/app_zh_CN.ts @@ -217,86 +217,6 @@ 原始密码错误 - - ControlHdmiManual - - - Form - Form - - - - - HDMI IN - 同步 - - - - Program In controller - 异步 - - - - - - Readback - 回读 - - - - Async - 异步 - - - - Tip - 提示 - - - - NoSelectedController - 请先选择大屏幕 - - - - - SyncSwitch - 切换同步模式 - - - - - AnSyncSwitch - 切换异步步模式 - - - - IsSync - 回读同异步模式 - - - - - - - Success - 成功 - - - - - - - failed - 失败 - - - - - DeviceItem OnProHttpResponse 解析json文件错误! - - - ControlHdmiSchedule @@ -306,31 +226,31 @@ - + Add 添加 - + Delete 删除 - + Clear 清除 - + Import 导入 - + Export 导出 @@ -341,7 +261,7 @@ - + Apply 应用 @@ -401,63 +321,63 @@ 星期六 - - + + DeviceItem OnProHttpResponse 解析json文件错误! - - + + On - + SyncSchedule (*.syncs) - + Save File 保存文件 - + Sync Schedule (*.syncs) - - + + Tip 提示 - - + + NoSelectedController 请先选择大屏幕 - + SetTimingHdmiInTask 设置同步模式定时任务 - + GetTimingHdmiInTask 获取同步模式定时任务 - - + + Success 成功 - - + + failed 失败 @@ -471,22 +391,72 @@ - + HDMI Configuration 画面输入源配置 - + Manual 手动 - + Schedule 定时 + + + + Tip + 提示 + + + + + NoSelectedController + 请先选择大屏幕 + + + + + SyncSwitch + 切换同步模式 + + + + + AnSyncSwitch + 切换异步模式 + + + + + IsSync + 回读同异步模式 + + + + Error + 错误 + + + + HDMI IN + 同步 + + + + Async + 异步 + + + + Readback + 回读 + ControlNetConfigWidget @@ -1260,31 +1230,31 @@ - + Add 添加 - + Delete 删除 - + Clear 清除 - + Import 导入 - + Export 导出 @@ -1300,7 +1270,7 @@ - + Apply 应用 @@ -1365,83 +1335,83 @@ 星期六 - - + + DeviceItem OnProHttpResponse 解析json文件错误! - - + + On - - + + PowerSchedule (*.pjs) 开关屏定时(*.pjs) - + Save File 保存文件 - - - + + + Tip 提示 - - - + + + NoSelectedController 请先选择大屏幕 - - + + Tip Info 提示 - - + + Clear schedule task? 取消计划任务? - - + + CleanTimingScreenTask 取消计划任务 - + SetTimingScreenTask 设置屏幕定时开关任务 - - - - + + + + Success 成功 - - - - + + + + failed 失败 - + GetTimingScreenTask 获取屏幕定时开关任务 @@ -1455,19 +1425,19 @@ - + Power Configuration 开关屏控制 - + Manual 手动 - + Schedule 定时 @@ -2134,19 +2104,19 @@ - + Add 添加 - + Delete 删除 - + Clear 清除 @@ -2162,19 +2132,19 @@ - + Import 导入 - + Export 导出 - + Apply 应用 @@ -2234,68 +2204,68 @@ 星期六 - + Default volume tip 提醒:定时时间段以外的时间显示屏为默认亮度 - + Default volume 默认音量值 - - + + DeviceItem OnProHttpResponse 解析json文件错误! 解析json文件错误! - + 10 10 - - + + Volume Schedule (*.vols) - + Save File 保存文件 - - + + Tip 提示 - - + + NoSelectedController 请先选择大屏幕 - + SetAutoVolumeTask 配置定时音量表 - - + + Success 成功 - - + + failed 失败 - + GetAutoVolumeTask 获取定时音量表 @@ -2329,782 +2299,823 @@ 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 系统升级 - + + Select File + 选择文件 + + + + Setting player background + 正在设置播放器背景 + + + + + Set player background + 设置播放器背景 + + + + Clearing player background + 正在清除播放器背景 + + + + + + + + + + + Clear player background + 清除播放器背景 + + + 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文件错误! @@ -3411,7 +3422,7 @@ - + Success 成功 @@ -5600,6 +5611,19 @@ 关闭 + + PlayerBackSendThread + + + Open file failed + 文件读取失败 + + + + Read file failed + 文件读取失败 + + PosDlg diff --git a/LedOK/translations/app_zh_TW.ts b/LedOK/translations/app_zh_TW.ts index 80730a1..71b32fc 100644 --- a/LedOK/translations/app_zh_TW.ts +++ b/LedOK/translations/app_zh_TW.ts @@ -217,86 +217,6 @@ 原始密碼錯誤 - - ControlHdmiManual - - - Form - Form - - - - - HDMI IN - HDMI IN - - - - Program In controller - BOX - - - - - - Readback - 回讀 - - - - Async - BOX - - - - Tip - 提示 - - - - NoSelectedController - 請先選擇大螢幕 - - - - - SyncSwitch - 切換同步模式 - - - - - AnSyncSwitch - 切換异步步模式 - - - - IsSync - 回讀同非同步模式 - - - - - DeviceItem OnProHttpResponse 解析json文件错误! - DeviceItem OnProHttpResponse 解析json檔案錯誤! - - - - - - - Success - 成功 - - - - - - - failed - 失敗 - - ControlHdmiSchedule @@ -306,31 +226,31 @@ - + Add 添加 - + Delete 删除 - + Clear 清除 - + Import 導入 - + Export 匯出 @@ -341,14 +261,14 @@ - + Apply 應用 Readback - + 回讀 @@ -401,63 +321,63 @@ 星期六 - - + + On - + SyncSchedule (*.syncs) - + Save File 保存 - + Sync Schedule (*.syncs) - - + + Tip 提示 - - + + NoSelectedController 請先選擇大螢幕 - + SetTimingHdmiInTask 設定同步模式定時任務 - + GetTimingHdmiInTask 獲取同步模式定時任務 - - + + Success 成功 - - + + DeviceItem OnProHttpResponse 解析json文件错误! DeviceItem OnProHttpResponse 解析json檔案錯誤! - - + + failed 失败 @@ -471,22 +391,72 @@ - + HDMI Configuration 畫面輸入源配寘 - + Manual 手動 - + Schedule 定時 + + + + Tip + 提示 + + + + + NoSelectedController + 請先選擇大螢幕 + + + + + SyncSwitch + 切換同步模式 + + + + + AnSyncSwitch + 切換异步模式 + + + + + IsSync + 回讀同非同步模式 + + + + Error + 錯誤 + + + + HDMI IN + HDMI IN + + + + Async + BOX + + + + Readback + 回讀 + ControlNetConfigWidget @@ -1260,31 +1230,31 @@ - + Add 添加 - + Delete 删除 - + Clear 清除 - + Import 導入 - + Export 匯出 @@ -1300,7 +1270,7 @@ - + Apply 應用 @@ -1312,7 +1282,7 @@ Readback - 回读 + 回讀 @@ -1365,83 +1335,83 @@ 星期六 - - + + On - - + + PowerSchedule (*.pjs) 开关屏定时(*.pjs) - + Save File 保存 - - - + + + Tip 提示 - - - + + + NoSelectedController 請先選擇大螢幕 - - + + Tip Info 提示 - - + + Clear schedule task? 取消計畫任務? - - + + CleanTimingScreenTask 取消計畫任務 - + SetTimingScreenTask 设置屏幕定时开关任务 - - - - + + + + Success 成功 - - + + DeviceItem OnProHttpResponse 解析json文件错误! DeviceItem OnProHttpResponse 解析json檔案錯誤! - - - - + + + + failed 失败 - + GetTimingScreenTask 获取屏幕定时开关任务 @@ -1455,19 +1425,19 @@ - + Power Configuration 开关屏控制 - + Manual 手动 - + Schedule 定时 @@ -1966,7 +1936,7 @@ Readback - 回读 + 回讀 @@ -2087,7 +2057,7 @@ Readback - + 回讀 @@ -2134,19 +2104,19 @@ - + Add 添加 - + Delete 删除 - + Clear 清除 @@ -2162,19 +2132,19 @@ - + Import 導入 - + Export 匯出 - + Apply 應用 @@ -2239,68 +2209,68 @@ 星期六 - + Default volume tip 提醒:定時時間段以外的時間顯示幕為默認亮度 - + Default volume 默認音量值 - - + + DeviceItem OnProHttpResponse 解析json文件错误! DeviceItem OnProHttpResponse 解析json檔案錯誤! - + 10 10 - - + + Volume Schedule (*.vols) - + Save File 保存 - - + + Tip 提示 - - + + NoSelectedController 請先選擇大螢幕 - + SetAutoVolumeTask 配寘定時音量表 - - + + Success 成功 - - + + failed 失敗 - + GetAutoVolumeTask 獲取定時音量表 @@ -2334,782 +2304,823 @@ 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 系統升級 - + + Select File + 選擇檔案 + + + + Setting player background + 正在設定播放機背景 + + + + + Set player background + 設定播放機背景 + + + + Clearing player background + 正在清除播放機背景 + + + + + + + + + + + Clear player background + 清除播放機背景 + + + 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 密碼錯誤 @@ -3421,7 +3432,7 @@ - + Success 成功 @@ -5608,6 +5619,19 @@ 關閉 + + PlayerBackSendThread + + + Open file failed + 檔案打開失敗 + + + + Read file failed + 檔案讀取失敗 + + PosDlg diff --git a/LedOK/wDevicesManager/controlhdmimanual.cpp b/LedOK/wDevicesManager/controlhdmimanual.cpp deleted file mode 100644 index bb91e60..0000000 --- a/LedOK/wDevicesManager/controlhdmimanual.cpp +++ /dev/null @@ -1,212 +0,0 @@ -#include "controlhdmimanual.h" -#include "ui_controlhdmimanual.h" -#include "LoUIClass/x_uimsgboxok.h" -#include -#include -#include -#include -#include "tools.h" -extern QWidget *gMainWin; -ControlHdmiManual::ControlHdmiManual(QWidget *parent,QList *list) : - QWidget(parent), - ui(new Ui::ControlHdmiManual) -{ - ui->setupUi(this); - refreshLable(); -setStyleSheet(Tools::styleSheet()); - onSelectedDeviceList(list); - ui->pushButtonReadback->setProperty("ssType", "progManageTool"); - ui->widget->setSliderColor(QColor(0, 160, 230),QColor(0, 160, 230)); - ui->widget->setBgColor(QColor(200,200,200),QColor(200,200,200)); - connect(ui->widget, SIGNAL(checkedChanged(bool)), this, SLOT(onVideoSourceChecked(bool))); - connect(ui->pushButtonReadback,SIGNAL(clicked()),this,SLOT(OnReadback())); - MARCO_DEFINE_CONTROL_FUNC2(parent->parent()->parent(),parent->parent()) -} - -ControlHdmiManual::~ControlHdmiManual() -{ - delete ui; - if(pHpptClient != nullptr) - { - qDebug() <<"delete pHpptClient in ~NetComm"; - delete pHpptClient; - pHpptClient=nullptr; - } - if(pHpptClientAll != nullptr) - { - qDebug() <<"delete pHpptClientAll in ~NetComm"; - delete pHpptClientAll; - pHpptClientAll=nullptr; - } -} -void ControlHdmiManual::refreshLable() -{ - ui->labelHdmiIn->setText(tr("HDMI IN")); - ui->labelAsync->setText(tr("Async")); - ui->pushButtonReadback->setText(tr("Readback")); - -} - -void ControlHdmiManual::onVideoSourceChecked(bool b) -{ - if(m_pLedlist==nullptr) - return; - if(m_pLedlist->count()<=1) - { - if(m_pLedCard==nullptr||m_pLedlist->count()==0) - { - X_UIMsgBoxOk *pDlg=new X_UIMsgBoxOk(tr("Tip"),tr("NoSelectedController"),this,1); - pDlg->exec(); - return; - } - } - - QJsonObject json; - json.insert("_id", getRandomString(10)); - json.insert("_type", "SyncSwitch"); - json.insert("switchOn", b); - if(m_pLedlist->count()==1) - { - HttpPostByTypeJsonObject(pHpptClient,m_strUrl,json); - if(m_PostingDlg==nullptr) - { - m_PostingDlg = new LoEmptyDialog(this); - connect(m_PostingDlg,SIGNAL(sigClose()),this,SLOT(DeletePostingDlg())); - connect(m_pGetAskTimer,SIGNAL(timeout()),m_PostingDlg,SLOT(TimerOutUnlock())); - if(b) - m_PostingDlg->lock(tr("SyncSwitch"),tr("Success"),tr("SyncSwitch")+tr("failed")); - else - m_PostingDlg->lock(tr("AnSyncSwitch"),tr("Success"),tr("AnSyncSwitch")+tr("failed")); - m_pGetAskTimer->start(3000); - m_PostingDlg->exec(); - - } - } - else { - if(b) - emit sigSend(json,tr("SyncSwitch")); - else - emit sigSend(json,tr("AnSyncSwitch")); - } -} -void ControlHdmiManual::OnReadback() -{ - CHECK_CARD_SELECTED - - QJsonObject json; - json.insert("_id", getRandomString(10)); - json.insert("_type", "IsSync"); - MACRO_DEFINE_TIPDLG_FUCN(tr("IsSync"),tr("Success"),tr("failed")) - -} -void ControlHdmiManual::onSelectedDeviceList(QList *list) -{ - m_pLedlist=list; - if(m_pLedlist==nullptr) - return; - MACRO_DEFINE_CONTROL_FUNC3 - -} -//获取到httpPost的应答,如果参数变化需要出发修改控件item的内容 -void ControlHdmiManual::OnProHttpResponse(QString url, QString postMD5, QByteArray data) -{ - Q_UNUSED(postMD5) - //qDebug()<< url + "\r\n"+m_strUrl; - if(url == m_strUrl) - { - QJsonParseError parseJsonErr; - QJsonDocument document = QJsonDocument::fromJson(data,&parseJsonErr); - if(!(parseJsonErr.error == QJsonParseError::NoError)) - { - if(data.size()==0) - qDebug()<<"json is empty"; - else - qDebug()<m_strCardId +"---------"+ strType; - if(strType == "SyncSwitch") - { - //emit sigOutputInfo(m_pLedCard->m_strCardId+":"+tr("receive")+"<-"+tr("SetBrightness")+":"+tr("success")); - } - else if(strType == "IsSync"){ - - ui->widget->setCheckedStatus(jsonObject["switchOn"].toBool()); - - } - MACRO_ASKTIME_STOP - MACRO_POSTING_DLG_UNLOCK - } - } -} -//获取到httpPost的应答,如果参数变化需要出发修改控件item的内容 -void ControlHdmiManual::OnProHttpResponseAll(QString url, QString postMD5, QByteArray data) -{ - Q_UNUSED(postMD5) - //qDebug()<< url + "\r\n"+m_strUrl; - if(url == m_strUrl) - { - QJsonParseError parseJsonErr; - QJsonDocument document = QJsonDocument::fromJson(data,&parseJsonErr); - if(!(parseJsonErr.error == QJsonParseError::NoError)) - { - if(data.size()==0) - qDebug()<<"json is empty"; - else - qDebug()<m_strCardId +"---------"+ strType; - if(strType == "IsSync"){ - - ui->widget->setCheckedStatus(jsonObject["switchOn"].toBool()); - - } - - MACRO_ASKTIME_STOP - MACRO_POSTING_DLG_UNLOCK - - } - } -} -void ControlHdmiManual::OnControlTypeSwitchIndexChanged(int index) -{ - if(index==Setting_HDMI) - { - m_bSelected=true; - if(m_pLedCard!=nullptr) - onReadbackAllThisPage(); - } - else { - m_bSelected=false; - } -} -void ControlHdmiManual::onReadbackAllThisPage() -{ - if(m_pLedlist==nullptr) - return; - if(m_pLedlist->count()!=1) - return; - QJsonObject json; - json.insert("_id", getRandomString(10)); - json.insert("_type", "IsSync"); - HttpPostByTypeJsonObject(pHpptClientAll,m_strUrl,json); - MACRO_DEFINE_TIPDLG_ALL_FUCN(tr("Readback"),tr("Success"),tr("failed")) - -} -void ControlHdmiManual::DeletePostingDlg() -{ - if(m_PostingDlg!=nullptr) - { - delete m_PostingDlg; - m_PostingDlg=nullptr; - } -} diff --git a/LedOK/wDevicesManager/controlhdmimanual.h b/LedOK/wDevicesManager/controlhdmimanual.h deleted file mode 100644 index c420680..0000000 --- a/LedOK/wDevicesManager/controlhdmimanual.h +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef CONTROLHDMIMANUAL_H -#define CONTROLHDMIMANUAL_H - -#include -#include -#include -#include -namespace Ui { -class ControlHdmiManual; -} - -class ControlHdmiManual : public QWidget -{ - Q_OBJECT - -public: - explicit ControlHdmiManual(QWidget *parent = nullptr,QList *m_pLedlist=nullptr); - ~ControlHdmiManual(); -protected slots: - void onVideoSourceChecked(bool); - void OnReadback(); - void refreshLable(); -private: - Ui::ControlHdmiManual *ui; - //类似的控制操作信号和槽函数和变量定义 - signals: - void sigSend(QJsonObject &,QString); - protected slots: - void DeletePostingDlg(); - void OnProHttpResponse(QString url, QString postMD5, QByteArray data); - void OnProHttpResponseAll(QString url, QString postMD5, QByteArray data); - void onSelectedDeviceList(QList *); - void onReadbackAllThisPage(); - void OnControlTypeSwitchIndexChanged(int index); - private: - QList *m_pLedlist=nullptr; - LedCard *m_pLedCard = nullptr; - LedCard *m_oldLedlist = nullptr; - HpptClient *pHpptClient = nullptr; - HpptClient *pHpptClientAll = nullptr; - QString m_strUrl=""; - LoEmptyDialog * m_PostingDlg=nullptr; - QTimer *m_pGetAskTimer=nullptr; - bool m_bSelected=false; -}; - -#endif // CONTROLHDMIMANUAL_H diff --git a/LedOK/wDevicesManager/controlhdmimanual.ui b/LedOK/wDevicesManager/controlhdmimanual.ui deleted file mode 100644 index df632f2..0000000 --- a/LedOK/wDevicesManager/controlhdmimanual.ui +++ /dev/null @@ -1,143 +0,0 @@ - - - ControlHdmiManual - - - - 0 - 0 - 582 - 414 - - - - Form - - - - - - Qt::Vertical - - - QSizePolicy::Minimum - - - - 20 - 40 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - - - Program In controller - - - - - - - - 0 - 0 - - - - - 66 - 33 - - - - - - - - HDMI IN - - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 60 - 30 - - - - Readback - - - - - - - - SwitchControl - QWidget -
LoUIClass/switchcontrol.h
- 1 -
-
- - -
diff --git a/LedOK/wDevicesManager/controlhdmischedule.cpp b/LedOK/wDevicesManager/controlhdmischedule.cpp index c9c4212..ddb530b 100644 --- a/LedOK/wDevicesManager/controlhdmischedule.cpp +++ b/LedOK/wDevicesManager/controlhdmischedule.cpp @@ -73,7 +73,6 @@ setStyleSheet(Tools::styleSheet()); ui->tableView->setFocusPolicy(Qt::NoFocus); - // connect(parent->parent()->parent(),SIGNAL(sigSelectedDeviceList(QList *)),this,SLOT(onSelectedDeviceList(QList *))); MARCO_DEFINE_CONTROL_FUNC2(parent->parent()->parent(),parent->parent()) connect(ui->pushButtonAdd,SIGNAL(clicked()),this,SLOT(OnClickAdd())); diff --git a/LedOK/wDevicesManager/controlhdmiwidget.cpp b/LedOK/wDevicesManager/controlhdmiwidget.cpp index 359ed19..48b2f8c 100644 --- a/LedOK/wDevicesManager/controlhdmiwidget.cpp +++ b/LedOK/wDevicesManager/controlhdmiwidget.cpp @@ -1,48 +1,170 @@ #include "controlhdmiwidget.h" -#include "ui_controlhdmiwidget.h" +#include "gqt.h" #include "tools.h" +#include "base/waitingdlg.h" +#include + +ControlHdmiWidget::ControlHdmiWidget(QWidget *parent,QList *list) : QWidget(parent) { + auto vBox = new QVBoxLayout(this); + labelHdmiConfiguration = new QLabel; + labelHdmiConfiguration->setAlignment(Qt::AlignCenter); + vBox->addWidget(labelHdmiConfiguration); + + auto line = new QFrame; + line->setFrameShape(QFrame::HLine); + line->setFrameShadow(QFrame::Sunken); + vBox->addWidget(line); + + auto hBox = new QHBoxLayout(); + hBox->addStretch(); + + radioButtonManual = new QRadioButton; + hBox->addWidget(radioButtonManual); + hBox->addStretch(); + + radioButtonSchedule = new QRadioButton; + hBox->addWidget(radioButtonSchedule); + hBox->addStretch(); + + vBox->addLayout(hBox); -ControlHdmiWidget::ControlHdmiWidget(QWidget *parent,QList *list) : - QWidget(parent), - ui(new Ui::ControlHdmiWidget) -{ - m_pLedlist=list; - ui->setupUi(this); - refreshLable(); - setStyleSheet(Tools::styleSheet()); m_pStackedW = new QStackedWidget; - m_pManual = new ControlHdmiManual(this,m_pLedlist); - m_pSchedule = new ControlHdmiSchedule(this,m_pLedlist); + m_pManual = new QWidget; + { + auto vBox = new VBox(m_pManual); + auto hBox = new HBox(vBox); + hBox->addStretch(); + + lbAsync = new QLabel; + hBox->addWidget(lbAsync); + + swich = new SwitchControl; + swich->setMinimumSize(QSize(66, 33)); + swich->setBgColor(QColor(200,200,200), QColor(200,200,200)); + swich->setSliderColor(QColor(0, 160, 230), QColor(0, 160, 230)); + connect(swich, &SwitchControl::checkedChanged, this, [this](bool checked) { + if(gSelCards->isEmpty()) { + QMessageBox::information(gMainWin, tr("Tip"), tr("NoSelectedController")); + return; + } + QJsonObject json; + json.insert("_id", "SyncSwitch"); + json.insert("_type", "SyncSwitch"); + json.insert("switchOn", checked); + if(gSelCards->count() == 1) { + auto waitingDlg = new WaitingDlg(this, checked ? tr("SyncSwitch") : tr("AnSyncSwitch")); + Def_CtrlReqPre + connect(reply, &QNetworkReply::finished, this, [reply, waitingDlg] { + Def_CtrlSetReqAfter + }); + } else { + foreach(auto card, *gSelCards) { + if(checked){ + Def_CtrlSetMulti(tr("SyncSwitch")) + } else { + Def_CtrlSetMulti(tr("AnSyncSwitch")) + } + } + } + }); + hBox->addWidget(swich); + + lbSync = new QLabel; + hBox->addWidget(lbSync); + hBox->addStretch(); + + vBox->addSpacing(20); + + hBox = new HBox(vBox); + hBox->addStretch(); + btnGetSync = new QPushButton; + btnGetSync->setMinimumSize(60, 30); + btnGetSync->setProperty("ssType", "progManageTool"); + connect(btnGetSync, &QPushButton::clicked, this, [this] { + if(gSelCards->isEmpty()) { + QMessageBox::information(gMainWin, tr("Tip"), tr("NoSelectedController")); + return; + } + QJsonObject json; + json.insert("_id", "IsSync"); + json.insert("_type", "IsSync"); + if(gSelCards->count() == 1) { + auto waitingDlg = new WaitingDlg(this, tr("IsSync")); + Def_CtrlReqPre + connect(reply, &QNetworkReply::finished, this, [this, reply, waitingDlg] { + Def_CtrlSingleGetReply + waitingDlg->success(); + qDebug()<<"IsSync res"<setCheckedStatus(json["result"].toBool()); + }); + } 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["result"].toBool() ? "true" : "false"; + gFdResInfo->append(card->m_strCardId+" "+tr("IsSync")+" "+err); + }); + } + } + }); + hBox->addWidget(btnGetSync); + hBox->addStretch(); + + vBox->addStretch(); + } + m_pSchedule = new ControlHdmiSchedule(this, list); m_pStackedW->addWidget(m_pManual); m_pStackedW->addWidget(m_pSchedule); - ui->horizontalLayout_2->addWidget(m_pStackedW); - init(); - connect(parent->parent()->parent(),SIGNAL(sigSelectedDeviceList(QList *)),this,SLOT(onSelectedDeviceList(QList *))); -} + vBox->addWidget(m_pStackedW); -ControlHdmiWidget::~ControlHdmiWidget() -{ - m_pStackedW->deleteLater() ; - m_pManual->deleteLater() ; - m_pSchedule->deleteLater() ; - delete ui; -} -void ControlHdmiWidget::refreshLable() -{ - ui->labelHdmiConfiguration->setText(tr("HDMI Configuration")); - ui->radioButtonManual->setText(tr("Manual")); - ui->radioButtonSchedule->setText(tr("Schedule")); -} - -void ControlHdmiWidget::init() -{ - m_buttonGroup = new QButtonGroup; - //第二个参数id可以自行定义 - m_buttonGroup->addButton(ui->radioButtonManual,0); - m_buttonGroup->addButton(ui->radioButtonSchedule,1); + auto m_buttonGroup = new QButtonGroup; + m_buttonGroup->addButton(radioButtonManual, 0); + m_buttonGroup->addButton(radioButtonSchedule, 1); connect(m_buttonGroup,SIGNAL(buttonClicked(int)),m_pStackedW,SLOT(setCurrentIndex(int))); - ui->radioButtonManual->setChecked(true); + radioButtonManual->setChecked(true); m_pStackedW->setCurrentIndex(0); + connect(gDevicePanel, &DevicePanel::sigSelectedDeviceList, this, [this] { + if(isVisible()) init(); + }); + transUi(); } +void ControlHdmiWidget::showEvent(QShowEvent *event) { + QWidget::showEvent(event); + init(); +} + +void ControlHdmiWidget::init() { + bool isSingle = gSelCards->count()==1; + if(! isSingle) return; + QJsonObject json; + json.insert("_id", "IsSync"); + json.insert("_type", "IsSync"); + 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; + } + swich->setCheckedStatus(json["result"].toBool()); + }); +} +void ControlHdmiWidget::changeEvent(QEvent *event) { + QWidget::changeEvent(event); + if(event->type() == QEvent::LanguageChange) transUi(); +} +void ControlHdmiWidget::transUi() { + labelHdmiConfiguration->setText(tr("HDMI Configuration")); + radioButtonManual->setText(tr("Manual")); + radioButtonSchedule->setText(tr("Schedule")); + + lbSync->setText(tr("HDMI IN")); + lbAsync->setText(tr("Async")); + btnGetSync->setText(tr("Readback")); +} diff --git a/LedOK/wDevicesManager/controlhdmiwidget.h b/LedOK/wDevicesManager/controlhdmiwidget.h index 4c95b84..ed40795 100644 --- a/LedOK/wDevicesManager/controlhdmiwidget.h +++ b/LedOK/wDevicesManager/controlhdmiwidget.h @@ -1,35 +1,43 @@ #ifndef CONTROLHDMIWIDGET_H #define CONTROLHDMIWIDGET_H -#include -#include +#include "LoUIClass/switchcontrol.h" #include -#include "QStackedWidget" -#include -namespace Ui { -class ControlHdmiWidget; -} +#include +#include -class ControlHdmiWidget : public QWidget -{ +class ControlHdmiWidget : public QWidget { Q_OBJECT - public: explicit ControlHdmiWidget(QWidget *parent = nullptr,QList *m_pLedlist=nullptr); - ~ControlHdmiWidget(); -private: +protected: + void showEvent(QShowEvent *event) override; void init(); -protected slots: - void refreshLable(); + void changeEvent(QEvent *) override; + void transUi(); private: - Ui::ControlHdmiWidget *ui; - ControlHdmiManual *m_pManual=nullptr; + QLabel *labelHdmiConfiguration; + QRadioButton *radioButtonManual; + QRadioButton *radioButtonSchedule; + + QWidget *m_pManual=nullptr; ControlHdmiSchedule *m_pSchedule=nullptr; QStackedWidget *m_pStackedW; - QButtonGroup *m_buttonGroup; - QList *m_pLedlist=nullptr; + QLabel *lbAsync; + SwitchControl *swich; + QLabel *lbSync; + QPushButton *btnGetSync; + + LedCard *m_pLedCard = nullptr; + LedCard *m_oldLedlist = nullptr; + HpptClient *pHpptClient = nullptr; + HpptClient *pHpptClientAll = nullptr; + QString m_strUrl=""; + LoEmptyDialog * m_PostingDlg=nullptr; + QTimer *m_pGetAskTimer=nullptr; + bool m_bSelected=false; }; #endif // CONTROLHDMIWIDGET_H diff --git a/LedOK/wDevicesManager/controlpowerschedule.cpp b/LedOK/wDevicesManager/controlpowerschedule.cpp index 2a03157..71588ce 100644 --- a/LedOK/wDevicesManager/controlpowerschedule.cpp +++ b/LedOK/wDevicesManager/controlpowerschedule.cpp @@ -73,7 +73,6 @@ setStyleSheet(Tools::styleSheet()); ui->tableView->setFocusPolicy(Qt::NoFocus); - // connect(parent->parent()->parent(),SIGNAL(sigSelectedDeviceList(QList *)),this,SLOT(onSelectedDeviceList(QList *))); MARCO_DEFINE_CONTROL_FUNC2(parent->parent()->parent(),parent->parent()) connect(ui->pushButtonAdd,SIGNAL(clicked()),this,SLOT(OnClickAdd())); diff --git a/LedOK/wDevicesManager/controlpowerwidget.cpp b/LedOK/wDevicesManager/controlpowerwidget.cpp index 5f900bb..cb0a2dc 100644 --- a/LedOK/wDevicesManager/controlpowerwidget.cpp +++ b/LedOK/wDevicesManager/controlpowerwidget.cpp @@ -16,7 +16,6 @@ setStyleSheet(Tools::styleSheet()); m_pStackedW->addWidget(m_pSchedule); ui->horizontalLayout_2->addWidget(m_pStackedW); init(); -// connect(parent->parent(),SIGNAL(sigSelectedDeviceList(QList *)),this,SLOT(onSelectedDeviceList(QList *))); connect(m_pSchedule,SIGNAL(sigHaveSchedule(bool)),this,SLOT(OnGetPowerModeType(bool))); } diff --git a/LedOK/wDevicesManager/controlvolumeschedule.cpp b/LedOK/wDevicesManager/controlvolumeschedule.cpp index 058f19b..8fe46fd 100644 --- a/LedOK/wDevicesManager/controlvolumeschedule.cpp +++ b/LedOK/wDevicesManager/controlvolumeschedule.cpp @@ -69,7 +69,6 @@ setStyleSheet(Tools::styleSheet()); ui->tableView->setFocusPolicy(Qt::NoFocus); - // connect(parent->parent()->parent(),SIGNAL(sigSelectedDeviceList(QList *)),this,SLOT(onSelectedDeviceList(QList *))); MARCO_DEFINE_CONTROL_FUNC2(parent->parent()->parent(),parent->parent()) connect(ui->pushButtonAdd,SIGNAL(clicked()),this,SLOT(OnClickAdd())); diff --git a/LedOK/wDevicesManager/controlvolumewidget.cpp b/LedOK/wDevicesManager/controlvolumewidget.cpp index adf07f1..736fa7e 100644 --- a/LedOK/wDevicesManager/controlvolumewidget.cpp +++ b/LedOK/wDevicesManager/controlvolumewidget.cpp @@ -17,7 +17,7 @@ setStyleSheet(Tools::styleSheet()); m_pStackedW->addWidget(m_pSchedule); ui->horizontalLayout_2->addWidget(m_pStackedW); init(); - connect(parent->parent()->parent(),SIGNAL(sigSelectedDeviceList(QList *)),this,SLOT(onSelectedDeviceList(QList *))); + connect(parent->parent(),SIGNAL(sigSelectedDeviceList(QList *)),this,SLOT(onSelectedDeviceList(QList *))); connect(m_pSchedule,SIGNAL(sigHaveSchedule(bool)),this,SLOT(OnGetVolumeModeType(bool))); } diff --git a/LedOK/wDevicesManager/ctrladvancedpanel.cpp b/LedOK/wDevicesManager/ctrladvancedpanel.cpp index dbfad29..4002057 100644 --- a/LedOK/wDevicesManager/ctrladvancedpanel.cpp +++ b/LedOK/wDevicesManager/ctrladvancedpanel.cpp @@ -1967,7 +1967,7 @@ void PlayerBackSendThread::run() { } auto file = new QFile(info.filePath()); if(! file->open(QFile::ReadOnly)) { - emit emErr(tr("open file failed")+" "+file->errorString()); + emit emErr(tr("Open file failed")+" "+file->errorString()); tcp.close(); return; } diff --git a/LedOK/wDevicesManager/ctrlbrightpanel.cpp b/LedOK/wDevicesManager/ctrlbrightpanel.cpp index 506d6de..017dad6 100644 --- a/LedOK/wDevicesManager/ctrlbrightpanel.cpp +++ b/LedOK/wDevicesManager/ctrlbrightpanel.cpp @@ -5,6 +5,7 @@ #include "tools.h" #include "LoUIClass/x_timeeditdelegate.h" #include "xlsxdocument.h" +#include "xlsxworkbook.h" #include #include #include @@ -234,11 +235,11 @@ CtrlBrightPanel::CtrlBrightPanel(QWidget *parent) : QWidget(parent) { hBox = new QHBoxLayout; hBox->addStretch(); - radioButton_2 = new QRadioButton("R68/RL3"); - hBox->addWidget(radioButton_2); + fdR68 = new QRadioButton("R68/RL3"); + hBox->addWidget(fdR68); - radioButton = new QRadioButton("RL2"); - hBox->addWidget(radioButton); + fdRL2 = new QRadioButton("RL2"); + hBox->addWidget(fdRL2); hBox->addSpacing(20); @@ -250,19 +251,48 @@ CtrlBrightPanel::CtrlBrightPanel(QWidget *parent) : QWidget(parent) { QMessageBox::information(gMainWin, tr("Tip"), tr("NoSelectedController")); return; } - QString strSensorType; - if(radioButton->isChecked()) strSensorType = radioButton->text(); - else if(radioButton_2->isChecked()) strSensorType = radioButton_2->text(); + QString sensorName; + if(fdRL2->isChecked()) sensorName = fdRL2->text(); + else if(fdR68->isChecked()) sensorName = fdR68->text(); else { QMessageBox::information(gMainWin, tr("Tip"), tr("NeedSelectSensorTypeTip")); return; } - QString xlsxFile = QFileDialog::getOpenFileName(this, "open file dialog", "/", "brightness files(*.xlsx)"); + QString xlsxFile = QFileDialog::getOpenFileName(this, tr("Open file dialog"), "/", "brightness files(*.xlsx)"); if(xlsxFile.isEmpty() || ! QFileInfo::exists(xlsxFile)) return; QXlsx::Document xlsx(xlsxFile); - xlsx.selectSheet(strSensorType); + auto workbook = xlsx.workbook(); + QXlsx::Worksheet *sheet = 0; + if(workbook->sheetCount() < 2) { + sheet = xlsx.currentWorksheet(); + if(sheet==0) { + QMessageBox::information(gMainWin, tr("Tip"), tr("Not found current worksheet")); + return; + } + } else { + auto names = sensorName.split("/"); + foreach(auto name, names) { + auto idx = xlsx.sheetNames().indexOf(name); + if(idx > -1) { + workbook->setActiveSheet(idx); + sheet = dynamic_cast(workbook->sheet(idx)); + break; + } + } + if(sheet==0) { + QMessageBox::information(gMainWin, tr("Tip"), "Not found sheet "+sensorName); + return; + } + } QJsonArray values; - for(int j=0; j<255; j++) values.append(xlsx.read(3,j+3).toString()); + for(int j=0; j<255; j++) { + auto val = sheet->read(3, j+3).toString(); + if(val.isEmpty()) { + QMessageBox::information(gMainWin, tr("Tip"), "Cell is empty at 3, "+QString::number(j+3)); + return; + } + values.append(val); + } QJsonObject json; json.insert("_id", "SensorBrightnessTable"); json.insert("_type", "SensorBrightnessTable"); @@ -290,8 +320,8 @@ CtrlBrightPanel::CtrlBrightPanel(QWidget *parent) : QWidget(parent) { return; } QString strSensorType; - if(radioButton->isChecked()) strSensorType = radioButton->text(); - else if(radioButton_2->isChecked()) strSensorType = radioButton_2->text(); + if(fdRL2->isChecked()) strSensorType = fdRL2->text(); + else if(fdR68->isChecked()) strSensorType = fdR68->text(); else { QMessageBox::information(gMainWin, tr("Tip"), tr("NeedSelectSensorTypeTip")); return; @@ -310,16 +340,16 @@ CtrlBrightPanel::CtrlBrightPanel(QWidget *parent) : QWidget(parent) { QMessageBox::information(gMainWin, tr("Tip"), tr("no sensorBrightnessTable")); return; } - QString btbFile = QCoreApplication::applicationDirPath()+"/Btb"; - QFile btbQFile(btbFile); - if(! btbQFile.exists()) { - QMessageBox::information(gMainWin, tr("Tip"), btbFile+" is not exist"); + QString tempFile = QCoreApplication::applicationDirPath()+"/bright-template.xlsx"; + QFile tempQFile(tempFile); + if(! tempQFile.exists()) { + QMessageBox::information(gMainWin, tr("Tip"), tempFile+" is not exist"); return; } QString selectFilter = "*.xlsx"; QString savingFile = QFileDialog::getSaveFileName(this, tr("Save file"), card->m_strCardId + "BrightnessTable.xlsx", "brightness(*.xlsx );", &selectFilter, QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks); if(savingFile.isEmpty()) return; - btbQFile.copy(savingFile); + tempQFile.copy(savingFile); QXlsx::Document xlsx(savingFile); xlsx.selectSheet(strSensorType); for(int m=0; msuccess(); - if(json["is485"].toBool()) radioButton_2->setChecked(true); - else radioButton->setChecked(true); + if(json["is485"].toBool()) fdR68->setChecked(true); + else fdRL2->setChecked(true); fdCurBright->setText(QString::number(qRound(json["value"].toInt() * 100.0 / card->BrightnessLevel))+"%"); }); } else { diff --git a/LedOK/wDevicesManager/ctrlbrightpanel.h b/LedOK/wDevicesManager/ctrlbrightpanel.h index 091f5ea..86f70ed 100644 --- a/LedOK/wDevicesManager/ctrlbrightpanel.h +++ b/LedOK/wDevicesManager/ctrlbrightpanel.h @@ -39,8 +39,8 @@ private: QPushButton *btnSensiGet; QPushButton *btnMinBrightSet; QPushButton *btnMinBrightGet; - QRadioButton *radioButton_2; - QRadioButton *radioButton; + QRadioButton *fdR68; + QRadioButton *fdRL2; QPushButton *btnUpload; QPushButton *btnTableGet; QLabel *fdSensiTypeTip; diff --git a/LedOK/wProgramManager/evideo.cpp b/LedOK/wProgramManager/evideo.cpp index d5ab63f..5597946 100644 --- a/LedOK/wProgramManager/evideo.cpp +++ b/LedOK/wProgramManager/evideo.cpp @@ -297,7 +297,7 @@ QString EVideo::transcoding(QString rawFile, QString rawName, QString dir, int w } else err.append(txt); } }); - process.start("ffmpeg", {"-y", "-i", rawFile, "-vcodec", "h264", "-s", QString::number(w)+"x"+QString::number(h), outFile}); + process.start("ffmpeg", {"-y", "-i", rawFile, "-vcodec", "h264", "-s", QString::number(w)+"x"+QString::number(h), "-profile:v", "main", "-b:v", QString::number(w*h/150)+"k", outFile}); msgBox.exec(); if(err.right(32).contains("Conversion failed!")) { QMessageBox::critical(gMainWin, tr("Error"), err); diff --git a/LedOK/wProgramManager/sendprogramdialog.cpp b/LedOK/wProgramManager/sendprogramdialog.cpp index 07cc56b..43d7b7d 100644 --- a/LedOK/wProgramManager/sendprogramdialog.cpp +++ b/LedOK/wProgramManager/sendprogramdialog.cpp @@ -133,7 +133,7 @@ SendProgramDialog::SendProgramDialog(QWidget *parent, QString strProgramName, QS connect(timer, &QTimer::timeout, this, &SendProgramDialog::onRefresh); timer->start(60000); } -void SendProgramDialog::closeEvent(QCloseEvent *event) { +void SendProgramDialog::closeEvent(QCloseEvent *) { emit stopAllThd(); } void SendProgramDialog::sendNext() { diff --git a/ledset/ledset.pro b/ledset/ledset.pro index d53bff6..28ed3b3 100644 --- a/ledset/ledset.pro +++ b/ledset/ledset.pro @@ -21,7 +21,7 @@ win* { LIBS += -lDbghelp } win32 { -QMAKE_LFLAGS += /LARGEADDRESSAWARE + QMAKE_LFLAGS += /LARGEADDRESSAWARE } SOURCES += \