From f4cc005daab0a269956bd94ccab13b07ad1edc93 Mon Sep 17 00:00:00 2001 From: Gangphon Date: Thu, 6 Jun 2024 21:55:36 +0800 Subject: [PATCH] ledok --- LedOK/LedOK Express.pro | 18 ++- LedOK/device/ctrladvancedpanel.cpp | 201 ++++++++++++++++++++-------- LedOK/mainwindow.cpp | 143 +++++++++++++------- LedOK/mainwindow.h | 4 +- LedOK/progpanel.cpp | 12 ++ LedOK/program/evideo.cpp | 2 - LedOK/program/sendprogramdialog.cpp | 2 +- LedOK/program/sendprogthread.cpp | 117 +++++++--------- LedOK/program/sendprogthread.h | 9 +- LedOK/res.qrc | 3 +- LedOK/res/Logo-citta.ico | Bin 0 -> 67646 bytes LedOK/res/Logo-citta.png | Bin 0 -> 26129 bytes LedOK/res/Logo-leyide.ico | Bin 0 -> 67646 bytes LedOK/res/Logo-leyide.png | Bin 0 -> 21424 bytes 14 files changed, 324 insertions(+), 187 deletions(-) create mode 100644 LedOK/res/Logo-citta.ico create mode 100644 LedOK/res/Logo-citta.png create mode 100644 LedOK/res/Logo-leyide.ico create mode 100644 LedOK/res/Logo-leyide.png diff --git a/LedOK/LedOK Express.pro b/LedOK/LedOK Express.pro index 26e1903..75f2e01 100644 --- a/LedOK/LedOK Express.pro +++ b/LedOK/LedOK Express.pro @@ -18,14 +18,16 @@ greaterThan(QT_MAJOR_VERSION, 5) { CONFIG += lrelease CONFIG += embed_translations +#DEFINES += leyide +#DEFINES += citta + # CONFIG += console -DEFINES += leyide # You can also make your code fail to compile if you use deprecated APIs. # In order to do so, uncomment the following line. # You can also select to disable deprecated APIs only up to a certain version of Qt. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 -VERSION = 1.5.1 +VERSION = 1.5.2 DEFINES += APP_VERSION=\\\"$$VERSION\\\" msvc { contains(QT_ARCH, i386) { @@ -39,7 +41,17 @@ win32 { LIBS += -lwinmm LIBS += -lDbghelp - RC_ICONS = res/Logo.ico + contains(DEFINES, leyide) { + message(leyide) + RC_ICONS = res/Logo-leyide.ico + } else { + contains(DEFINES, citta) { + message(citta) + RC_ICONS = res/Logo-citta.ico + } else { + RC_ICONS = res/Logo.ico + } + } } osx { QMAKE_MACOSX_DEPLOYMENT_TARGET = 11.0 diff --git a/LedOK/device/ctrladvancedpanel.cpp b/LedOK/device/ctrladvancedpanel.cpp index 2d99caf..fb84709 100644 --- a/LedOK/device/ctrladvancedpanel.cpp +++ b/LedOK/device/ctrladvancedpanel.cpp @@ -27,6 +27,8 @@ #include #include "devicepanel.h" #include +#include +#include CtrlAdvancedPanel::CtrlAdvancedPanel() { setFocusPolicy(Qt::StrongFocus); @@ -89,8 +91,18 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { Def_CtrlSetReqAfter }); } else { - foreach(auto card, gSelCards) { - Def_CtrlSetMulti(tr("SetScreenSize")) + for(auto &card : gSelCards) { + auto reply = NetReq("http://"+card.ip+":2016/settings").timeout(120000).post(json); + connect(reply, &QNetworkReply::finished, gFdResInfo, [=] { + auto err = checkReplyForJson(reply); + gFdResInfo->append(card.id+" "+tr("SetScreenSize")+" "+(err.isEmpty() ? QCoreApplication::translate("Def","Success") : err)); + // if(! err.isEmpty()) return; + // auto item = findItem(card.id); + // if(item) { + // item->mCard.ScreenResolution = aaa; + // item->setText("ScreenResolution", aaa); + // } + }); } } }); @@ -129,10 +141,10 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { } }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { auto reply = NetReq("http://"+card.ip+":2016/settings").timeout(120000).post(json); connect(reply, &QNetworkReply::finished, gFdResInfo, [=] { - QString err = checkReplyForJson(reply); + auto err = checkReplyForJson(reply); gFdResInfo->append(card.id+" "+tr("SetCardAlias")+" "+(err.isEmpty() ? QCoreApplication::translate("Def","Success") : err)); if(! err.isEmpty()) return; auto item = findItem(card.id); @@ -194,7 +206,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { Def_CtrlSetReqAfter }); } else { - foreach(auto card, gSelCards) { + for(auto &card :gSelCards) { Def_CtrlSetMulti(tr("SetOnlineAddr")) } } @@ -230,7 +242,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { Def_CtrlSetReqAfter }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { Def_CtrlSetMulti(tr("SetRealtimeServer")) } } @@ -256,7 +268,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { Def_CtrlSetReqAfter }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { Def_CtrlSetMulti(tr("ClearRealtimeServer")) } } @@ -361,7 +373,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { Def_CtrlSetReqAfter }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { Def_CtrlSetMulti(tr("UninstallSoftware")) } } @@ -393,7 +405,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { QMessageBox::information(this, tr("Tip"), json["running"].toBool() ? tr("running") : tr("no running")); }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { auto reply = NetReq("http://"+card.ip+":2016/settings").timeout(120000).post(json); auto cardId = card.id; connect(reply, &QNetworkReply::finished, this, [reply, cardId] { @@ -426,7 +438,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { Def_CtrlSetReqAfter }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { Def_CtrlSetMulti(tr("RestartAndroid")) } } @@ -555,7 +567,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { tcp->connectToHost(card.ip, 3333); tcp->startTimer(10000); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { auto tcp = new TcpSocket; auto cardId = card.id; connect(tcp, &QTcpSocket::connected, tcp, [=] { @@ -669,10 +681,10 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { tcp.close(); continue; } - fd->append(tcp.readAll()); + fd->insertPlainText(tcp.readAll()); while(tcp.waitForReadyRead(1000)) { if(lll.cnt==0) return; - fd->append(tcp.readAll()); + fd->insertPlainText(tcp.readAll()); } if(lll.cnt==0) return; if(tcp.error()!=QAbstractSocket::SocketTimeoutError) fd->append(QString(socketErrKey(tcp.error()))+" ("+QString::number(tcp.error())+") "+tcp.errorString()+" at WaitRead2\n"); @@ -724,10 +736,10 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { tcp.close(); continue; } - fd->append(tcp.readAll()); + fd->insertPlainText(tcp.readAll()); while(tcp.waitForReadyRead(1000)) { if(lll.cnt==0) return; - fd->append(tcp.readAll()); + fd->insertPlainText(tcp.readAll()); } if(lll.cnt==0) return; if(tcp.error()!=QAbstractSocket::SocketTimeoutError) fd->append(QString(socketErrKey(tcp.error()))+" ("+QString::number(tcp.error())+") "+tcp.errorString()+" at WaitRead2\n"); @@ -779,10 +791,10 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { tcp.close(); continue; } - fd->append(tcp.readAll()); + fd->insertPlainText(tcp.readAll()); while(tcp.waitForReadyRead(1000)) { if(lll.cnt==0) return; - fd->append(tcp.readAll()); + fd->insertPlainText(tcp.readAll()); } if(lll.cnt==0) return; if(tcp.error()!=QAbstractSocket::SocketTimeoutError) fd->append(QString(socketErrKey(tcp.error()))+" ("+QString::number(tcp.error())+") "+tcp.errorString()+" at WaitRead2\n"); @@ -834,10 +846,10 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { tcp.close(); continue; } - fd->append(tcp.readAll()); + fd->insertPlainText(tcp.readAll()); while(tcp.waitForReadyRead(1000)) { if(lll.cnt==0) return; - fd->append(tcp.readAll()); + fd->insertPlainText(tcp.readAll()); } if(lll.cnt==0) return; if(tcp.error()!=QAbstractSocket::SocketTimeoutError) fd->append(QString(socketErrKey(tcp.error()))+" ("+QString::number(tcp.error())+") "+tcp.errorString()+" at WaitRead2\n"); @@ -847,6 +859,87 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { }); hBox->addWidget(GetBuf); + auto btnDownFile = new QPushButton("Down File"); + btnDownFile->setProperty("ssType", "progManageTool"); + connect(btnDownFile, &QPushButton::clicked, this, [this] { + if(gSelCards.isEmpty()) { + QMessageBox::information(this, tr("Tip"), tr("NoSelectedController")); + return; + } + QInputDialog dlg(this); + dlg.setWindowTitle("Input File Name"); + dlg.setLabelText("File Name"); + if(dlg.exec() != QDialog::Accepted) return; + auto name = dlg.textValue(); + if(name.isEmpty()) return; + auto tar = QFileDialog::getSaveFileName(this, "Save File", QStandardPaths::writableLocation(QStandardPaths::DownloadLocation)+"/"+name); + if(tar.isEmpty()) return; + JObj json{{"_type", "GetFile"}, {"name", name}}; + QProgressBar fdProgress; + fdProgress.show(); + for(auto &card : gSelCards) { + fdProgress.setWindowTitle("Progress "+card.id); + fdProgress.setValue(0); + TcpSocket tcp; + tcp.connectToHost(card.ip, 3333); + if(! tcp.waitForConnected()) { + if(! fdProgress.isVisible()) return; + QMessageBox::information(this, tr("Error"), QString(socketErrKey(tcp.error()))+" ("+QString::number(tcp.error())+") "+tcp.errorString()+" at WaitConnected"); + tcp.close(); + continue; + } + QFile file(tar+" "+card.id); + if(! file.open(QFile::WriteOnly)) continue; + auto resNum = tcp.write(JToBytes(json)); + tcp.flush(); + if(resNum == -1 || ! tcp.waitForBytesWritten()) { + if(! fdProgress.isVisible()) return; + QMessageBox::information(this, tr("Error"), QString(socketErrKey(tcp.error()))+" ("+QString::number(tcp.error())+") "+tcp.errorString()+" at write"); + tcp.close(); + continue; + } + resNum = 0; + qint64 tarSize = 0; + while(tcp.waitForReadyRead(10000)) { + if(! fdProgress.isVisible()) return; + if(tarSize==0) { + QString err; + auto json = JFrom(&tcp, &err); + if(! err.isEmpty()) { + QMessageBox::information(this, tr("Error"), err); + goto end; + } + auto msg = json["msg"].toStr(); + if(! msg.isEmpty()) { + QMessageBox::information(this, tr("Error"), msg); + goto end; + } + tarSize = json["len"].toLong(); + if(tarSize==0) { + QMessageBox::information(this, tr("Error"), "tarSize==0"); + goto end; + } + fdProgress.setMaximum(tarSize); + } + auto res = tcp.readAll(); + if(res.size()==0) continue; + if(file.write(res) != res.size()) { + QMessageBox::information(this, tr("Error"), "write error"); + goto end; + } + resNum += res.size(); + fdProgress.setValue(resNum); + if(resNum>=tarSize) goto end; + } + QMessageBox::information(this, tr("Error"), QString(socketErrKey(tcp.error()))+" ("+QString::number(tcp.error())+") "+tcp.errorString()+" at WaitRead2\n"); + end: + tcp.close(); + } + fdProgress.close(); + QMessageBox::information(this, tr("Error"), "OK"); + }); + hBox->addWidget(btnDownFile); + hBox->addStretch(); hBox = new HBox(vBox); hBox->addWidget(lbTimingReboot = new QLabel); @@ -873,7 +966,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { Def_CtrlSetReqAfter }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { Def_CtrlSetMulti(tr("Set Timing Reboot")) } } @@ -899,7 +992,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { fdRebootTime->setText(json["time"].toString()); }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { auto reply = NetReq("http://"+card.ip+":2016/settings").timeout(120000).post(json); auto cardId = card.id; connect(reply, &QNetworkReply::finished, this, [reply, cardId] { @@ -965,7 +1058,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { waitingDlg->success(); }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { NetReq req("http://"+card.ip+":2016/upload?type=update_display"); auto reply = req.timeout(120000).type("multipart/form-data; boundary="+Boundary).post(data); connect(reply, &QNetworkReply::finished, this, [=] { @@ -1010,7 +1103,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { Def_CtrlSetReqAfter }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { Def_CtrlSetMulti(tr("Set Display Mode")) } } @@ -1036,7 +1129,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { SetCurData(fdDisMode, json["result"].toInt()); }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { auto reply = NetReq("http://"+card.ip+":2016/settings").timeout(120000).post(json); auto cardId = card.id; connect(reply, &QNetworkReply::finished, this, [=] { @@ -1089,7 +1182,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { Def_CtrlSetReqAfter }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { Def_CtrlSetMulti(tr("Set Screen Offset")) } } @@ -1116,7 +1209,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { fdScreenOff->setValue(json["offsetValue"].toInt()); }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { auto reply = NetReq("http://"+card.ip+":2016/settings").timeout(120000).post(json); auto cardId = card.id; connect(reply, &QNetworkReply::finished, this, [=] { @@ -1166,7 +1259,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { QMessageBox::information(this, btnReceCardsGet->text(), QString::number(json["receCardNum"].toInt())); }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { auto reply = NetReq("http://"+card.ip+":2016/settings").timeout(120000).post(json); auto cardId = card.id; connect(reply, &QNetworkReply::finished, this, [=] { @@ -1269,7 +1362,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { waitingDlg->success(); }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { auto reply = NetReq("http://"+card.ip+":3000").timeout(120000).post(json); auto cardId = card.id; connect(reply, &QNetworkReply::finished, this, [reply, cardId] { @@ -1327,7 +1420,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { Def_CtrlSetReqAfter }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { Def_CtrlSetMulti(tr("SetHighForBusy")) } } @@ -1354,7 +1447,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { else fdHighForBusy->setChecked(true); }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { auto reply = NetReq("http://"+card.ip+":2016/settings").timeout(120000).post(json); auto cardId = card.id; connect(reply, &QNetworkReply::finished, this, [reply, cardId] { @@ -1403,7 +1496,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { Def_CtrlSetReqAfter }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { Def_CtrlSetMulti(tr("SetMinBrightness")) } } @@ -1432,7 +1525,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { fdMinBright->setText(QString::number(value)); }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { auto reply = NetReq("http://"+card.ip+":2016/settings").timeout(120000).post(json); auto cardId = card.id; auto brightLevel = card.BrightnessLevel; @@ -1480,7 +1573,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { Def_CtrlSetReqAfter }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { Def_CtrlSetMulti(tr("SetMaxBrightness")) } } @@ -1509,7 +1602,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { fdMaxBright->setText(QString::number(value)); }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { auto reply = NetReq("http://"+card.ip+":2016/settings").timeout(120000).post(json); auto cardId = card.id; auto brightLevel = card.BrightnessLevel; @@ -1565,7 +1658,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { Def_CtrlSetReqAfter }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { Def_CtrlSetMulti(tr("Set Wallpaper")) } } @@ -1589,7 +1682,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { Def_CtrlSetReqAfter }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { Def_CtrlSetMulti(tr("System Update")) } } @@ -1678,7 +1771,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { QMessageBox::information(this, tr("Tip"), tr("MCU Version")+": "+json["mcuVersion"].toString()); }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { auto reply = NetReq("http://"+card.ip+":2016/settings").timeout(120000).post(json); auto cardId = card.id; connect(reply, &QNetworkReply::finished, this, [reply, cardId] { @@ -1719,7 +1812,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { }); thread->start(); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { auto thread = new PlayerBackSendThread(file, card.ip); auto cardId = card.id; connect(thread, &PlayerBackSendThread::emErr, this, [cardId](QString err) { @@ -1786,7 +1879,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { tcp->connectToHost(card.ip, 3333); timer->start(10000); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { auto tcp = new QTcpSocket(); auto timer = new QTimer(tcp); timer->setSingleShot(true); @@ -1872,7 +1965,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { Def_CtrlSetReqAfter }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { Def_CtrlSetMulti(tr("SetSpecialResolution")) } } @@ -1898,7 +1991,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { fdM80Resolu->setCurrentText(json["displayResolution"].toString()); }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { auto reply = NetReq("http://"+card.ip+":2016/settings").timeout(120000).post(json); auto cardId = card.id; connect(reply, &QNetworkReply::finished, this, [reply, cardId] { @@ -1929,7 +2022,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { Def_CtrlSetReqAfter }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { Def_CtrlSetMulti(tr("CleanDisplayScreenSize")) } } @@ -1979,7 +2072,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { Def_CtrlSetReqAfter }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { Def_CtrlSetMulti(tr("SetScreenRotation")) } } @@ -2006,7 +2099,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { if(btn) btn->setChecked(true); }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { auto reply = NetReq("http://"+card.ip+":2016/settings").timeout(120000).post(json); connect(reply, &QNetworkReply::finished, this, [=] { QJsonDocument json; @@ -2053,7 +2146,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { Def_CtrlSetReqAfter }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { Def_CtrlSetMulti(tr("Set")+" "+tr("Charging Station")+" ID") } } @@ -2149,7 +2242,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { Def_CtrlSetReqAfter }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { Def_CtrlSetMulti(tr("Set Baud Rate")) } } @@ -2176,7 +2269,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { fdBaud->setText(QString::number(json["baud"].toInt())); }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { auto reply = NetReq("http://"+card.ip+":2016/settings").timeout(120000).post(json); auto cardId = card.id; connect(reply, &QNetworkReply::finished, this, [reply, cardId] { @@ -2209,7 +2302,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { Def_CtrlSetReqAfter }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { Def_CtrlSetMulti(tr("OpenAdb")) } } @@ -2252,7 +2345,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { Def_CtrlSetReqAfter }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { Def_CtrlSetMulti(tr("AliIotSetting")) } } @@ -2291,7 +2384,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { else QMessageBox::information(this, tr("Info"), reply->readAll()); }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { auto reply = NetReq("http://"+card.ip+":2016/settings").timeout(120000).post(json); connect(reply, &QNetworkReply::finished, gFdResInfo, [=] { auto err = errStrWithData(reply); @@ -2340,7 +2433,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { Def_CtrlSetReqAfter }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { Def_CtrlSetMulti(tr("Set protocol")) } } @@ -2366,7 +2459,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { SetCurData(fdTraficProtocol, json["protocolType"].toInt()); }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { auto reply = NetReq("http://"+card.ip+":2016/settings").timeout(120000).post(json); auto cardId = card.id; connect(reply, &QNetworkReply::finished, this, [reply, cardId, fdTraficProtocol] { @@ -2427,7 +2520,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { Def_CtrlSetReqAfter }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { Def_CtrlSetMulti(tr("Set card work mode")) } } @@ -2454,7 +2547,7 @@ CtrlAdvancedPanel::CtrlAdvancedPanel() { fdPort->setValue(json["port"].toInt()); }); } else { - foreach(auto card, gSelCards) { + for(auto &card : gSelCards) { auto reply = NetReq("http://"+card.ip+":2016/settings").timeout(120000).post(json); auto cardId = card.id; connect(reply, &QNetworkReply::finished, this, [=] { diff --git a/LedOK/mainwindow.cpp b/LedOK/mainwindow.cpp index 6e595d2..2f49406 100644 --- a/LedOK/mainwindow.cpp +++ b/LedOK/mainwindow.cpp @@ -59,39 +59,7 @@ MainWindow::MainWindow(QWidget *parent) : BaseWin(parent) { setFont(ft); auto menuLang = new QMenu; - - auto actCN = new QAction("中文"); - actCN->setCheckable(true); - actCN->setObjectName("zh_CN"); - menuLang->addAction(actCN); - - auto actTW = new QAction("中文繁体"); - actTW->setCheckable(true); - actTW->setObjectName("zh_TW"); - menuLang->addAction(actTW); - - auto actEn = new QAction("English"); - actEn->setCheckable(true); - actEn->setObjectName("en"); - menuLang->addAction(actEn); - - auto actJa = new QAction("日本語"); - actJa->setCheckable(true); - actJa->setObjectName("ja"); - menuLang->addAction(actJa); - - auto actPt = new QAction("Português"); - actPt->setCheckable(true); - actPt->setObjectName("pt"); - menuLang->addAction(actPt); - langGrp = new QActionGroup(menuLang); - langGrp->addAction(actCN); - langGrp->addAction(actTW); - langGrp->addAction(actEn); - langGrp->addAction(actJa); - langGrp->addAction(actPt); - connect(menuLang, &QMenu::triggered, this, [this](QAction* action) { auto lanName = action->objectName(); qInfo() << "load translators" << lanName << translator.load("app_"+lanName, ":/i18n"); @@ -110,6 +78,85 @@ MainWindow::MainWindow(QWidget *parent) : BaseWin(parent) { } QString langName = settings.value("Language").toString(); QAction *actLan = 0; +#ifdef leyide + auto actTW = new QAction("中文繁体"); + actTW->setCheckable(true); + actTW->setObjectName("zh_TW"); + menuLang->addAction(actTW); + langGrp->addAction(actTW); + + auto actEn = new QAction("English"); + actEn->setCheckable(true); + actEn->setObjectName("en"); + menuLang->addAction(actEn); + langGrp->addAction(actEn); + + if(! langName.isEmpty()) { + if(langName.endsWith("TW")) actLan = actTW; + else if(langName.startsWith("en")) actLan = actEn; + } + if(actLan==0) { + langName = QLocale().name(); + if(langName.startsWith("en")) actLan = actEn; + else actLan = actTW; + } + auto LogoPath = ":/res/Logo-leyide.png"; + iconPos = QRectF(38, 20, 64, 64); +#elif defined(citta) + auto actPt = new QAction("Português"); + actPt->setCheckable(true); + actPt->setObjectName("pt"); + menuLang->addAction(actPt); + langGrp->addAction(actPt); + + auto actEn = new QAction("English"); + actEn->setCheckable(true); + actEn->setObjectName("en"); + menuLang->addAction(actEn); + langGrp->addAction(actEn); + + if(! langName.isEmpty()) { + if(langName.endsWith("pt")) actLan = actPt; + else if(langName.startsWith("en")) actLan = actEn; + } + if(actLan==0) { + langName = QLocale().name(); + if(langName.startsWith("en")) actLan = actEn; + else actLan = actPt; + } + auto LogoPath = ":/res/Logo-citta.png"; + iconPos = QRectF(14, 20, 132, 64); +#else + auto actCN = new QAction("中文"); + actCN->setCheckable(true); + actCN->setObjectName("zh_CN"); + menuLang->addAction(actCN); + langGrp->addAction(actCN); + + auto actTW = new QAction("中文繁体"); + actTW->setCheckable(true); + actTW->setObjectName("zh_TW"); + menuLang->addAction(actTW); + langGrp->addAction(actTW); + + auto actEn = new QAction("English"); + actEn->setCheckable(true); + actEn->setObjectName("en"); + menuLang->addAction(actEn); + langGrp->addAction(actEn); + + auto actJa = new QAction("日本語"); + actJa->setCheckable(true); + actJa->setObjectName("ja"); + menuLang->addAction(actJa); + langGrp->addAction(actJa); + + auto actPt = new QAction("Português"); + actPt->setCheckable(true); + actPt->setObjectName("pt"); + menuLang->addAction(actPt); + langGrp->addAction(actPt); + if(! langName.isEmpty()) { if(langName.endsWith("CN")) actLan = actCN; else if(langName.endsWith("TW")) actLan = actTW; @@ -125,7 +172,10 @@ MainWindow::MainWindow(QWidget *parent) : BaseWin(parent) { else if(langName.startsWith("pt")) actLan = actPt; else actLan = actCN; } - + auto LogoPath = ":/res/Logo.png"; + setWindowTitle("LedOK Express"); + iconPos = QRectF(38, 20, 64, 64); +#endif actLan->setChecked(true); emit menuLang->triggered(actLan); QCoreApplication::installTranslator(&translator); @@ -137,10 +187,8 @@ MainWindow::MainWindow(QWidget *parent) : BaseWin(parent) { gPlayPos = settings.value("PlayPos").toPoint(); - setWindowTitle("LedOK Express"); - icon.load(":/res/Logo.png"); + icon.load(LogoPath); titlePos = QPointF(26, 80); - iconPos = QRectF(38, 20, 64, 64); auto plt = palette(); plt.setBrush(QPalette::Window, QColor(0xdddddd)); setPalette(plt); @@ -270,8 +318,9 @@ MainWindow::MainWindow(QWidget *parent) : BaseWin(parent) { }); menu_setting->addAction(actPreferences); - act_update = new QAction(tr("Check for updates")); - connect(act_update, &QAction::triggered, this, [this] { +#if !defined leyide && !defined citta + act_upd = new QAction(tr("Check for updates")); + connect(act_upd, &QAction::triggered, this, [this] { { QDialog dlg(this); #ifdef Q_OS_WIN @@ -355,7 +404,7 @@ MainWindow::MainWindow(QWidget *parent) : BaseWin(parent) { QCoreApplication::quit(); QDesktopServices::openUrl(QUrl::fromLocalFile(filePath)); }); - menu_setting->addAction(act_update); + menu_setting->addAction(act_upd); auto reply = NetReq(UpdVerUrl).timeout(60000).get(); ConnReply(reply, this) [=] { @@ -384,9 +433,10 @@ MainWindow::MainWindow(QWidget *parent) : BaseWin(parent) { if(verCompare(updates["ver"].toString(), APP_VERSION) > 0) { hasNewVer = true; bn_Setting->setIcon(QIcon(":/res/AppSettingTip.png")); - act_update->setIcon(QIcon(":/res/reddot.png")); + act_upd->setIcon(QIcon(":/res/reddot.png")); } }); +#endif act_help = new QAction(); connect(act_help, &QAction::triggered, this, [this] { @@ -405,8 +455,9 @@ MainWindow::MainWindow(QWidget *parent) : BaseWin(parent) { }); menu_setting->addAction(actInfo); +#if !defined leyide && !defined citta act_about = new QAction(tr("About")); - connect(act_about, &QAction::triggered, this, [this] { + connect(act_about, &QAction::triggered, this, [=] { QDialog dlg(this); dlg.setWindowFlag(Qt::WindowContextHelpButtonHint, false); dlg.setWindowTitle(tr("About")); @@ -416,7 +467,7 @@ MainWindow::MainWindow(QWidget *parent) : BaseWin(parent) { hBox->setSpacing(24); auto label = new QLabel; - label->setPixmap(QPixmap(":/res/Logo.png")); + label->setPixmap(QPixmap(LogoPath)); hBox->addWidget(label); auto vBox = new VBox(hBox); @@ -442,10 +493,10 @@ MainWindow::MainWindow(QWidget *parent) : BaseWin(parent) { label->setAlignment(Qt::AlignCenter); label->setOpenExternalLinks(true); vBox->addWidget(label); - dlg.exec(); }); menu_setting->addAction(act_about); +#endif bn_Setting->setMenu(menu_setting);//按钮上添加下拉菜单 vBox->addWidget(m_wTitle); @@ -455,7 +506,7 @@ MainWindow::MainWindow(QWidget *parent) : BaseWin(parent) { auto hBox = new HBox(vBox); hBox->setSpacing(2); - hBox->addSpacing(144); + hBox->addSpacing(150); mBtnGrp = new QButtonGroup(this); for(int i=0; isetText(tr("Language")); act_help->setText(tr("Help")); actInfo->setText(tr("Info")); - act_about->setText(tr("About")); - act_update->setText(tr("Check for updates")); + if(act_about) act_about->setText(tr("About")); + if(act_upd) act_upd->setText(tr("Check for updates")); actFirmware->setText(tr("firmware manager")); actPreferences->setText(tr("Preferences")); bn_Setting->setToolTip(tr("Setting")); diff --git a/LedOK/mainwindow.h b/LedOK/mainwindow.h index fde3efc..05368d4 100644 --- a/LedOK/mainwindow.h +++ b/LedOK/mainwindow.h @@ -26,10 +26,10 @@ private: QActionGroup *langGrp; QAction *act_lang; QAction *act_help, *actInfo; - QAction *act_update; + QAction *act_upd = 0; QAction *actFirmware; QAction *actPreferences; - QAction *act_about; + QAction *act_about = 0; QPushButton *bn_Setting; QButtonGroup *mBtnGrp; diff --git a/LedOK/progpanel.cpp b/LedOK/progpanel.cpp index 31f96dd..5d3bc38 100644 --- a/LedOK/progpanel.cpp +++ b/LedOK/progpanel.cpp @@ -12,6 +12,7 @@ #include #include #include +#include ProgPanel::ProgPanel(QWidget *parent) : QWidget(parent) { setAttribute(Qt::WA_DeleteOnClose); @@ -240,6 +241,17 @@ ProgPanel::ProgPanel(QWidget *parent) : QWidget(parent) { bnExport->setEnabled(en); bnSend->setEnabled(en); }); + connect(table, &LoQTreeWidget::itemPressed, this, [=](QTreeWidgetItem *item, int) { + if(((QApplication*)QApplication::instance())->mouseButtons()==Qt::RightButton) { + auto menu = new QMenu(table); + auto act = new QAction("Open folder"); + menu->addAction(act); + connect(act, &QAction::triggered, this, [=] { + QProcess::execute("explorer", {((ProgItem*)item)->mProgDir.replace('/', '\\')}); + }); + menu->exec(QCursor::pos()+QPoint{2,2}); + } + }); vBox->addWidget(mProgTree = table); auto dataDir = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation); diff --git a/LedOK/program/evideo.cpp b/LedOK/program/evideo.cpp index 7b7e9bf..26482fc 100644 --- a/LedOK/program/evideo.cpp +++ b/LedOK/program/evideo.cpp @@ -143,8 +143,6 @@ QWidget* EVideo::attrWgt() { fdDuration->setValue(mDuration); auto outFile = transcoding(wgtAttr, 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(); diff --git a/LedOK/program/sendprogramdialog.cpp b/LedOK/program/sendprogramdialog.cpp index bed5079..f9c4602 100644 --- a/LedOK/program/sendprogramdialog.cpp +++ b/LedOK/program/sendprogramdialog.cpp @@ -125,7 +125,7 @@ SendProgramDialog::SendProgramDialog(QString progName, QWidget *parent) : QDialo bool ok; auto pwd = QInputDialog::getText(this, tr("Input password"), tr("Input password"), QLineEdit::Password, QString(), &ok); if(! ok) return; - QJsonObject json; + JObj json; json.insert("_id", "VerifyPassword"); json.insert("_type", "VerifyPassword"); json.insert("pwd", pwd); diff --git a/LedOK/program/sendprogthread.cpp b/LedOK/program/sendprogthread.cpp index 5e17eeb..57d1b91 100644 --- a/LedOK/program/sendprogthread.cpp +++ b/LedOK/program/sendprogthread.cpp @@ -2,7 +2,6 @@ #include "gutil/qnetwork.h" #include #include -#include #include #include #include @@ -13,8 +12,8 @@ SendProgThread::SendProgThread(const QString &progDir, const QString &ip, int po void SendProgThread::run() { emit emProgress(0); // 进度条归零 - auto fileInfos = QDir(prog_dir).entryInfoList(QDir::Files); - if(fileInfos.isEmpty()) { + auto fileNames = QDir(prog_dir).entryList(QDir::Files); + if(fileNames.isEmpty()) { emit emErr(tr("Program is empty")); return; } @@ -22,7 +21,7 @@ void SendProgThread::run() { TcpSocket tcp; tcp.connectToHost(ip, port); if(! tcp.waitForConnected()) { - emit emErr(QString(socketErrKey(tcp.error()))+" ("+QString::number(tcp.error())+") "+tcp.errorString()+" when waitForConnected"); + emit emErr(QString(socketErrKey(tcp.error()))+" ("+QString::number(tcp.error())+") "+tcp.errorString()+" at waitForConnected"); tcp.close(); return; } @@ -31,88 +30,64 @@ void SendProgThread::run() { return; }; //发送节目列表协商 - QJsonArray ids; - foreach(auto fileInfo, fileInfos) { - auto baseName = fileInfo.baseName(); - if(baseName!="program") ids.append(baseName); + JArray files; + for(auto &name : fileNames) if(name!="program") { + QFileInfo info(prog_dir+"/"+name); + files.append(JObj{{"name", info.baseName()}, {"size", info.size()}}); } - if(! ids.isEmpty()) { - QJsonObject req; + if(! files.empty()) { + JObj req; req.insert("_type", "consult"); - req.insert("proName", "program"); - req.insert("idList", ids); + req.insert("files", files); + req.insert("idList", JArray{"aaa"}); req.insert("zVer", "xixun1"); - auto requ = QJsonDocument(req).toJson(QJsonDocument::Compact); - auto resNum = tcp.write(requ); + auto resNum = tcp.write(JToBytes(req)); tcp.flush(); - if(resNum == -1 || ! tcp.waitForBytesWritten()) { - emit emErr(QString(socketErrKey(tcp.error()))+" ("+QString::number(tcp.error())+") "+tcp.errorString()+" when write 'consult'. size"+QString::number(requ.size())); - tcp.close(); - return; - } - if(! tcp.waitForReadyRead()) { - emit emErr(QString(socketErrKey(tcp.error()))+" ("+QString::number(tcp.error())+") "+tcp.errorString()+" when waitForRead 'consult'. size"+QString::number(requ.size())); + if(resNum == -1 || ! tcp.waitForBytesWritten() || ! tcp.waitForReadyRead()) { + emit emErr(QString(socketErrKey(tcp.error()))+" ("+QString::number(tcp.error())+") "+tcp.errorString()+" at waitForRead 'checkExist'"); tcp.close(); return; } auto resp = tcp.readAll(); - if(resp.isEmpty()) { - emit emErr(QString(socketErrKey(tcp.error()))+" ("+QString::number(tcp.error())+") "+tcp.errorString()+" when read 'consult'. size"+QString::number(requ.size())); - tcp.close(); - return; - } - if(stoped) { - tcp.close(); - return; - }; - QJsonParseError parseErr; - QJsonDocument res = QJsonDocument::fromJson(resp, &parseErr); - for(int i=2; parseErr.error == QJsonParseError::UnterminatedString && i < 10; i++) { + QString error; + auto res = JFrom(resp, &error); + while(error.endsWith("end-of-input")) { if(! tcp.waitForReadyRead()) { - emit emErr(QString(socketErrKey(tcp.error()))+" ("+QString::number(tcp.error())+") "+tcp.errorString()+" when waitForRead 'consult' "+QString::number(i)); + emit emErr(QString(socketErrKey(tcp.error()))+" ("+QString::number(tcp.error())+") "+tcp.errorString()+" at waitForRead2 'checkExist'"); tcp.close(); return; } - auto resp2 = tcp.readAll(); - if(resp2.isEmpty()) { - emit emErr(QString(socketErrKey(tcp.error()))+" ("+QString::number(tcp.error())+") "+tcp.errorString()+" when read 'consult' "+QString::number(i)); - tcp.close(); - return; - } - resp += resp2; - res = QJsonDocument::fromJson(resp, &parseErr); + resp += tcp.readAll(); + res = JFrom(resp, &error); } - if(parseErr.error != QJsonParseError::NoError) { - emit emErr(parseErr.errorString()+" when parse consult. size:"+QString::number(resp.size())); + if(! error.isEmpty()) { + emit emErr(error+" at parse 'checkExist'"); tcp.close(); return; } - if(res["_type"].toString()=="consult") { - fileInfos.clear(); - fileInfos.append(QFileInfo(prog_dir+"/program")); - auto ids = res["idList"].toArray(); - for(auto id : ids) fileInfos.append(QFileInfo(prog_dir+"/"+id.toString())); - } + auto existeds = res["existed"].toArray(); + for(auto &existed : existeds) fileNames.removeAll(existed.toString()); } if(stoped) { tcp.close(); return; } qint64 progSize = 0; - foreach(auto fileInfo, fileInfos) progSize += fileInfo.size(); + for(auto &name : fileNames) progSize += QFileInfo(prog_dir+"/"+name).size(); if(progSize == 0) { emit emErr(tr("Program is empty")); tcp.close(); return; } - auto req = QJsonObject(); + auto req = JObj(); req.insert("_type", "proStart"); req.insert("proName", "program"); req.insert("proSize", progSize); req.insert("zVer","xixun1"); - auto resNum = tcp.write(QJsonDocument(req).toJson(QJsonDocument::Compact)); + auto resNum = tcp.write(JToBytes(req)); + tcp.flush(); if(resNum == -1 || ! tcp.waitForBytesWritten()) { - emit emErr(QString(socketErrKey(tcp.error()))+" ("+QString::number(tcp.error())+") "+tcp.errorString()+" when write 'proStart'"); + emit emErr(QString(socketErrKey(tcp.error()))+" ("+QString::number(tcp.error())+") "+tcp.errorString()+" at write 'proStart'"); tcp.close(); return; } @@ -123,18 +98,18 @@ void SendProgThread::run() { //4.发送协商列表应答里的文件 int64_t sentBytes = 0; char buf[8192]; - for(auto &info : fileInfos) if(info.isFile()) { + for(auto &name : fileNames) { + QFileInfo info(prog_dir+"/"+name); auto baseName = info.baseName(); auto remain = info.size(); - req = QJsonObject(); + req = JObj(); req.insert("_type", "fileStart"); req.insert("id", baseName); req.insert("size", remain); - req.insert("relative_path", ""); req.insert("zVer","xixun1"); - auto resNum = tcp.write(QJsonDocument(req).toJson(QJsonDocument::Compact)); - if(resNum == -1 || ! tcp.waitForBytesWritten()) { - emit emErr(QString(socketErrKey(tcp.error()))+" ("+QString::number(tcp.error())+") "+tcp.errorString()+" when write 'fileStart'"); + auto resNum = tcp.write(JToBytes(req)); + if(resNum == -1) { + emit emErr(QString(socketErrKey(tcp.error()))+" ("+QString::number(tcp.error())+") "+tcp.errorString()+" at write 'fileStart'"); tcp.close(); return; } @@ -158,14 +133,14 @@ void SendProgThread::run() { return; }; if(! tcp.waitForBytesWritten(60000)) { - emit emErr(QString(socketErrKey(tcp.error()))+" ("+QString::number(tcp.error())+") "+tcp.errorString()+" when waitForWritten file: "+file->fileName()); + emit emErr(QString(socketErrKey(tcp.error()))+" ("+QString::number(tcp.error())+") "+tcp.errorString()+" at waitForWritten file: "+file->fileName()); tcp.close(); file->close(); return; } resNum = tcp.write(buf, resNum); if(resNum <= 0) { - emit emErr(QString(socketErrKey(tcp.error()))+" ("+QString::number(tcp.error())+") "+tcp.errorString()+" when write file: "+file->fileName()); + emit emErr(QString(socketErrKey(tcp.error()))+" ("+QString::number(tcp.error())+") "+tcp.errorString()+" at write file: "+file->fileName()); tcp.close(); file->close(); return; @@ -184,13 +159,14 @@ void SendProgThread::run() { tcp.close(); return; }; - req = QJsonObject(); + req = JObj(); req.insert("_type", "fileEnd"); req.insert("id", baseName); req.insert("zVer", "xixun1"); - resNum = tcp.write(QJsonDocument(req).toJson(QJsonDocument::Compact)); + resNum = tcp.write(JToBytes(req)); + tcp.flush(); if(resNum == -1 || ! tcp.waitForBytesWritten()) { - emit emErr(QString(socketErrKey(tcp.error()))+" ("+QString::number(tcp.error())+") "+tcp.errorString()+" when write 'fileEnd'"); + emit emErr(QString(socketErrKey(tcp.error()))+" ("+QString::number(tcp.error())+") "+tcp.errorString()+" at write 'fileEnd'"); tcp.close(); return; } @@ -200,24 +176,25 @@ void SendProgThread::run() { return; }; //5.发送结束 - req = QJsonObject(); + req = JObj(); req.insert("_type", "proEnd"); req.insert("proName", "program"); req.insert("zVer","xixun1"); - resNum = tcp.write(QJsonDocument(req).toJson(QJsonDocument::Compact)); + resNum = tcp.write(JToBytes(req)); + tcp.flush(); if(resNum == -1 || ! tcp.waitForBytesWritten()) { - emit emErr(QString(socketErrKey(tcp.error()))+" ("+QString::number(tcp.error())+") "+tcp.errorString()+" when write 'proEnd'"); + emit emErr(QString(socketErrKey(tcp.error()))+" ("+QString::number(tcp.error())+") "+tcp.errorString()+" at write 'proEnd'"); tcp.close(); return; }; if(! tcp.waitForReadyRead()) { - emit emErr(QString(socketErrKey(tcp.error()))+" ("+QString::number(tcp.error())+") "+tcp.errorString()+" when waitForRead 'proEnd'"); + emit emErr(QString(socketErrKey(tcp.error()))+" ("+QString::number(tcp.error())+") "+tcp.errorString()+" at waitForRead 'proEnd'"); tcp.close(); return; } auto resp = tcp.readAll(); if(resp.isEmpty()) { - emit emErr(QString(socketErrKey(tcp.error()))+" ("+QString::number(tcp.error())+") "+tcp.errorString()+" when read 'proEnd'"); + emit emErr(QString(socketErrKey(tcp.error()))+" ("+QString::number(tcp.error())+") "+tcp.errorString()+" at read 'proEnd'"); tcp.close(); return; } diff --git a/LedOK/program/sendprogthread.h b/LedOK/program/sendprogthread.h index 787fbea..32b1793 100644 --- a/LedOK/program/sendprogthread.h +++ b/LedOK/program/sendprogthread.h @@ -1,13 +1,6 @@ #ifndef SENDPROGTHREAD_H #define SENDPROGTHREAD_H #include -#include -#include -#include -#include -#include -#include -#include class SendProgThread : public QThread { Q_OBJECT @@ -28,7 +21,7 @@ private: QString prog_dir; QString ip; int port = 3333; - std::atomic_bool stoped{false}; + std::atomic_bool stoped = false; }; #endif // SENDPROGTHREAD_H diff --git a/LedOK/res.qrc b/LedOK/res.qrc index f8f6f9f..1592669 100644 --- a/LedOK/res.qrc +++ b/LedOK/res.qrc @@ -29,8 +29,9 @@ res/GuangYingPin_s.png res/GuangYingPin_u.png res/Hdmi.png - res/Logo.ico res/Logo.png + res/Logo-leyide.png + res/Logo-citta.png res/program/AClock.png res/program/Add.png res/program/AddPlan.png diff --git a/LedOK/res/Logo-citta.ico b/LedOK/res/Logo-citta.ico new file mode 100644 index 0000000000000000000000000000000000000000..216dfd5f4a3e524749f24a329c8f6365134fcbe6 GIT binary patch literal 67646 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 z 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 literal 0 HcmV?d00001 diff --git a/LedOK/res/Logo-leyide.ico b/LedOK/res/Logo-leyide.ico new file mode 100644 index 0000000000000000000000000000000000000000..336586cea63c02ccb5b4ea905b05835ce157af23 GIT binary patch literal 67646 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