From 7626902534e58cc78f39b0392bebf957e036bc93 Mon Sep 17 00:00:00 2001 From: gangphon Date: Fri, 30 Sep 2022 18:08:39 +0800 Subject: [PATCH] =?UTF-8?q?ledok=E5=A2=9E=E5=8A=A0=E8=B6=85=E5=AE=BD?= =?UTF-8?q?=E8=8A=82=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LedOK/LedOK.pro | 9 +- LedOK/devicepanel.cpp | 107 +-- LedOK/devicepanel.h | 3 +- LedOK/mainwindow.cpp | 7 +- LedOK/progpanel.cpp | 188 ++--- LedOK/progpanel.h | 20 +- LedOK/translations/app_en.ts | 726 +++++++++--------- LedOK/translations/app_ja.ts | 726 +++++++++--------- LedOK/translations/app_zh_CN.ts | 726 +++++++++--------- LedOK/translations/app_zh_TW.ts | 726 +++++++++--------- LedOK/wProgramManager/progcreatedlg.cpp | 116 +++ LedOK/wProgramManager/progcreatedlg.h | 20 + LedOK/wProgramManager/progeditorwin.cpp | 42 +- .../{wprogramitem.cpp => progitem.cpp} | 44 +- LedOK/wProgramManager/progitem.h | 62 ++ LedOK/wProgramManager/wnewprogram.cpp | 42 - LedOK/wProgramManager/wnewprogram.h | 30 - LedOK/wProgramManager/wnewprogram.ui | 415 ---------- LedOK/wProgramManager/wprogramitem.h | 90 --- 19 files changed, 1875 insertions(+), 2224 deletions(-) create mode 100644 LedOK/wProgramManager/progcreatedlg.cpp create mode 100644 LedOK/wProgramManager/progcreatedlg.h rename LedOK/wProgramManager/{wprogramitem.cpp => progitem.cpp} (87%) create mode 100644 LedOK/wProgramManager/progitem.h delete mode 100644 LedOK/wProgramManager/wnewprogram.cpp delete mode 100644 LedOK/wProgramManager/wnewprogram.h delete mode 100644 LedOK/wProgramManager/wnewprogram.ui delete mode 100644 LedOK/wProgramManager/wprogramitem.h diff --git a/LedOK/LedOK.pro b/LedOK/LedOK.pro index 9e543a0..3f82b0d 100644 --- a/LedOK/LedOK.pro +++ b/LedOK/LedOK.pro @@ -123,16 +123,16 @@ SOURCES += \ wProgramManager/mconverter.cpp \ wProgramManager/pageeditor.cpp \ wProgramManager/pagelistitem.cpp \ + wProgramManager/progcreatedlg.cpp \ wProgramManager/progeditorwin.cpp \ + wProgramManager/progitem.cpp \ wProgramManager/sendprogramdialog.cpp \ wProgramManager/sendprogthread.cpp \ wProgramManager/threadexportprogrampro.cpp \ wProgramManager/usbdetectdialog.cpp \ wProgramManager/wexportprogramitem.cpp \ - wProgramManager/wnewprogram.cpp \ wProgramManager/wplanitem.cpp \ wProgramManager/wplanlist.cpp \ - wProgramManager/wprogramitem.cpp \ wProgramManager/wprogrampublishitem.cpp \ HEADERS += \ @@ -222,16 +222,16 @@ HEADERS += \ wProgramManager/mconverter.h \ wProgramManager/pageeditor.h \ wProgramManager/pagelistitem.h \ + wProgramManager/progcreatedlg.h \ wProgramManager/progeditorwin.h \ + wProgramManager/progitem.h \ wProgramManager/sendprogramdialog.h \ wProgramManager/sendprogthread.h \ wProgramManager/threadexportprogrampro.h \ wProgramManager/usbdetectdialog.h \ wProgramManager/wexportprogramitem.h \ - wProgramManager/wnewprogram.h \ wProgramManager/wplanitem.h \ wProgramManager/wplanlist.h \ - wProgramManager/wprogramitem.h \ wProgramManager/wprogrampublishitem.h \ FORMS += \ @@ -252,7 +252,6 @@ FORMS += \ wDevicesManager/controlvolumeschedule.ui \ wDevicesManager/controlvolumewidget.ui \ wDevicesManager/upgradeapkdialog.ui \ - wProgramManager/wnewprogram.ui \ wProgramManager/wplanitem.ui \ TRANSLATIONS += \ diff --git a/LedOK/devicepanel.cpp b/LedOK/devicepanel.cpp index 3df7f42..311211c 100644 --- a/LedOK/devicepanel.cpp +++ b/LedOK/devicepanel.cpp @@ -10,12 +10,11 @@ #include #include #include -#include DevicePanel *gDevicePanel; QList *gSelCards; //设备管理响应页面 -DevicePanel::DevicePanel(QWidget *parent) : QWidget(parent) { +DevicePanel::DevicePanel(QSettings &settings, QWidget *parent) : QWidget(parent) { gDevicePanel = this; gSelCards = &mSelCards; setAutoFillBackground(true); @@ -70,49 +69,7 @@ DevicePanel::DevicePanel(QWidget *parent) : QWidget(parent) { bnSpecifyIP->setItemDelegate(new QStyledItemDelegate); connect(bnSpecifyIP, &QComboBox::textActivated, this, [this] { if(specifyIPDlg==0) { - specifyIPDlg = new QDialog(this); - specifyIPDlg->setWindowTitle(tr("Specify IP")); - auto vBox = new VBox(specifyIPDlg); - vBox->addStretch(); - - auto label = new QLabel(tr("Specify IP list")); - label->setAlignment(Qt::AlignCenter); - vBox->addWidget(label); - - fdIP = new QTextEdit(QSettings().value("SpecifyIP").toString()); - fdIP->setPlaceholderText("192.168.1.1\n192.168.1.2\n ..."); - fdIP->setMinimumWidth(160); - vBox->addWidget(fdIP); - - auto hBox = new HBox(vBox); - hBox->addStretch(); - - auto bnSearch = new QPushButton(tr("Search")); - connect(bnSearch, &QPushButton::clicked, this, [this] { - QString ipsStr = fdIP->toPlainText(); - if(ipsStr.isEmpty()) { - QMessageBox::warning(gMainWin, tr("Attention"), tr("Please input IP address!")); - return; - } - auto ips = ipsStr.split("\n", Qt::SkipEmptyParts); - if(ips.isEmpty()) { - QMessageBox::warning(gMainWin, tr("Attention"), tr("Please input IP address!")); - return; - } - QByteArray data = QJsonDocument({{"action", "getInfo"}}).toJson(QJsonDocument::Compact); - foreach(auto ip, ips) { - if(gDevicePanel->mUdpSocket.writeDatagram(data, QHostAddress(ip), 22222) != data.length()) qDebug() << "Specify IP write Failed." << ip; - } - specifyIPDlg->accept(); - }); - hBox->addWidget(bnSearch); - - auto btnCancel = new QPushButton(tr("Cancel")); - connect(btnCancel, &QPushButton::clicked, specifyIPDlg, &QDialog::reject); - hBox->addWidget(btnCancel); - - hBox->addStretch(); } mUdpTimer.stop(); specifyIPDlg->exec(); @@ -184,7 +141,8 @@ QPushButton:hover {background-color: #08b;} } parseInfo(document.object(), addr); } else { - STREAM_PACKET *pStreamPacket = (STREAM_PACKET *)gram.data().data(); + auto bytes = gram.data(); + STREAM_PACKET *pStreamPacket = (STREAM_PACKET *)bytes.data(); LedCard *pLedCard = new LedCard(this);//alahover 没有释放 pLedCard->m_strCardId = pStreamPacket->ucSerialCode; pLedCard->m_strCardIp = addr; @@ -193,16 +151,16 @@ QPushButton:hover {background-color: #08b;} pOldLedCard->m_bOnLine = true; if(pOldLedCard->CompareHTTPGetParam(pLedCard)==false) {//如果ip地址变化了 pOldLedCard->copyLedCardHTTPGetParam(pLedCard); - emit addLedCard(pOldLedCard);//发送信号到界面 + addLedCard(pOldLedCard);//发送信号到界面 } else { //post失败的概率比较小,所以这里是否需要平凡的更新,不需要刻意屏蔽该操作改为在其他点击操作中进行 - emit clearUdpHeartbeat(pOldLedCard); + clearUdpHeartbeat(pOldLedCard); } delete pLedCard; return; } LedCardList.append(pLedCard); - emit addLedCard(pLedCard);//发送信号到界面 + addLedCard(pLedCard);//发送信号到界面 } } }); @@ -236,6 +194,59 @@ QPushButton:hover {background-color: #08b;} //开始轮训查找局域网内的控制卡 sendGetInfo(); mUdpTimer.start(30000); + { + specifyIPDlg = new QDialog(this); + specifyIPDlg->setWindowTitle(tr("Specify IP")); + + auto vBox = new VBox(specifyIPDlg); + vBox->addStretch(); + + auto label = new QLabel(tr("Specify IP list")); + label->setAlignment(Qt::AlignCenter); + vBox->addWidget(label); + + auto ipstr = settings.value("SpecifyIP").toString(); + fdIP = new QTextEdit(ipstr); + fdIP->setPlaceholderText("192.168.1.1\n192.168.1.2\n ..."); + fdIP->setMinimumWidth(160); + vBox->addWidget(fdIP); + + auto hBox = new HBox(vBox); + hBox->addStretch(); + + auto bnSearch = new QPushButton(tr("Search")); + connect(bnSearch, &QPushButton::clicked, this, [this] { + QString ipsStr = fdIP->toPlainText(); + if(ipsStr.isEmpty()) { + QMessageBox::warning(gMainWin, tr("Attention"), tr("Please input IP address!")); + return; + } + auto ips = ipsStr.split("\n", Qt::SkipEmptyParts); + if(ips.isEmpty()) { + QMessageBox::warning(gMainWin, tr("Attention"), tr("Please input IP address!")); + return; + } + QByteArray data = QJsonDocument({{"action", "getInfo"}}).toJson(QJsonDocument::Compact); + foreach(auto ip, ips) { + if(gDevicePanel->mUdpSocket.writeDatagram(data, QHostAddress(ip), 22222) != data.length()) qDebug() << "Specify IP write Failed." << ip; + } + specifyIPDlg->accept(); + }); + hBox->addWidget(bnSearch); + + auto btnCancel = new QPushButton(tr("Cancel")); + connect(btnCancel, &QPushButton::clicked, specifyIPDlg, &QDialog::reject); + hBox->addWidget(btnCancel); + hBox->addStretch(); + + if(! ipstr.isEmpty()) { + auto ips = ipstr.split("\n", Qt::SkipEmptyParts); + QByteArray data = QJsonDocument({{"action", "getInfo"}}).toJson(QJsonDocument::Compact); + foreach(auto ip, ips) { + if(gDevicePanel->mUdpSocket.writeDatagram(data, QHostAddress(ip), 22222) != data.length()) qDebug() << "Specify IP write Failed." << ip; + } + } + } mDeviceTable->hideColumn(0); mDeviceTable->fdIsSelAll->hide(); transUi(); diff --git a/LedOK/devicepanel.h b/LedOK/devicepanel.h index 2dd5d45..85417ec 100644 --- a/LedOK/devicepanel.h +++ b/LedOK/devicepanel.h @@ -11,12 +11,13 @@ #include #include #include +#include class DeviceCtrlPanel; class DevicePanel : public QWidget { Q_OBJECT public: - explicit DevicePanel(QWidget *parent = nullptr); + explicit DevicePanel(QSettings &, QWidget *parent = nullptr); ~DevicePanel(); void sendGetInfo(); diff --git a/LedOK/mainwindow.cpp b/LedOK/mainwindow.cpp index da2d02a..822b6f9 100644 --- a/LedOK/mainwindow.cpp +++ b/LedOK/mainwindow.cpp @@ -13,6 +13,7 @@ #include #include #include +#include QWidget *gMainWin; extern QPoint gPlayPos; @@ -227,8 +228,8 @@ MainWindow::MainWindow(QWidget *parent) : BaseWin(parent) { vBox->addWidget(m_wTitle); //设备管理,节目管理,高级节目管理页创建 - mDevicePanel = new DevicePanel(); - mProgPanel = new ProgPanel(); + mDevicePanel = new DevicePanel(settings); + mProgPanel = new ProgPanel(settings); m_wGuangYingPinWidget = new mGuangYingPinWidget(); auto hBox = new QHBoxLayout(); @@ -405,6 +406,8 @@ MainWindow::~MainWindow() { if(m_pTimerSendResoreIpOneKey->isActive()) m_pTimerSendResoreIpOneKey->stop(); delete m_pTimerSendResoreIpOneKey; } + settings.setValue("ProgramListSortColumn", mProgPanel->mProgTree->sortColumn()); + settings.setValue("ProgramListSortOrder", mProgPanel->mProgTree->header()->sortIndicatorOrder()); } void MainWindow::changeEvent(QEvent *event) { BaseWin::changeEvent(event); diff --git a/LedOK/progpanel.cpp b/LedOK/progpanel.cpp index 57286bc..79d1c05 100644 --- a/LedOK/progpanel.cpp +++ b/LedOK/progpanel.cpp @@ -7,7 +7,7 @@ #include #include -ProgPanel::ProgPanel(QWidget *parent) : QWidget(parent) { +ProgPanel::ProgPanel(QSettings &settings, QWidget *parent) : QWidget(parent) { setAttribute(Qt::WA_DeleteOnClose); setAutoFillBackground(true); QPalette pal; @@ -26,7 +26,15 @@ ProgPanel::ProgPanel(QWidget *parent) : QWidget(parent) { bnNew->setFixedSize(88, 38); bnNew->setProperty("ssType", "progManageTool"); hBox->addWidget(bnNew); - connect(bnNew, SIGNAL(clicked(bool)), this, SLOT(onNewClicked(bool))); + connect(bnNew, &QPushButton::clicked, this, [this] { + ProgCreateDlg dlg(QDateTime::currentDateTime().toString("yyyyMMddhhmmsszzz"), 512, 512, "", this); + if(dlg.exec() != QDialog::Accepted) return; + if(checkIfNameRepeated(dlg.fdName->text())) return; + auto item = new ProgItem(progDir, dlg.fdName->text(), dlg.fdWidth->value(), dlg.fdHeight->value(), dlg.fdRemark->toPlainText(), mProgTree, this); + item->save();//保存pro.json + mProgTree->adjustCheckState(); + item->onEditProgram(); + }); bnEdit = new QPushButton(tr("Edit")); bnEdit->setFixedSize(QSize(88, 38)); @@ -46,7 +54,11 @@ ProgPanel::ProgPanel(QWidget *parent) : QWidget(parent) { bnImport->setFixedSize(QSize(88, 38)); bnImport->setProperty("ssType", "progManageTool"); hBox->addWidget(bnImport); - connect(bnImport, SIGNAL(clicked(bool)), this, SLOT(onImportClicked(bool))); + connect(bnImport, &QPushButton::clicked, this, [this] { + auto dlg = new TipDialog(this, ENUM_IMPORT_DLG); + connect(dlg, SIGNAL(sigAcceptData(QString,QString)), this, SLOT(onImportProgram(QString,QString))); + dlg->exec(); + }); bnExport = new QPushButton(tr("Export")); bnExport->setFixedSize(QSize(88, 38)); @@ -69,10 +81,10 @@ ProgPanel::ProgPanel(QWidget *parent) : QWidget(parent) { connect(btnPlay, &QPushButton::clicked, this, [this](){ if(PlayWin::self!=nullptr) PlayWin::self->close(); else { - int cnt = wProgramList->topLevelItemCount(); - for(int i=0; itopLevelItem(i)->checkState(0) == Qt::Checked) { - wProgramItem *item = static_cast(wProgramList->topLevelItem(i)); - QString dir = progDir+"/"+item->name()+"_tmp"; + int cnt = mProgTree->topLevelItemCount(); + for(int i=0; itopLevelItem(i)->checkState(0) == Qt::Checked) { + auto item = static_cast(mProgTree->topLevelItem(i)); + QString dir = progDir+"/"+item->m_name+"_tmp"; QFile file(dir+"/program"); if(! file.open(QIODevice::ReadOnly | QIODevice::Text)) return; QString value = file.readAll(); @@ -81,7 +93,7 @@ ProgPanel::ProgPanel(QWidget *parent) : QWidget(parent) { QJsonObject prog = QJsonDocument::fromJson(value.toUtf8(), &jsErr).object(); if(jsErr.error) return; if(PlayWin::self!=nullptr) PlayWin::self->close(); - PlayWin::self = PlayWin::newIns(item->width(), item->height(), dir, prog); + PlayWin::self = PlayWin::newIns(item->m_width, item->m_height, dir, prog); break; } } @@ -100,9 +112,9 @@ ProgPanel::ProgPanel(QWidget *parent) : QWidget(parent) { hBox->addWidget(txtSearch); connect(txtSearch,SIGNAL(textChanged(const QString &)),this,SLOT(FilterProgram(const QString &))); - wProgramList = new LoQTreeWidget(); - wProgramList->setIndentation(10); - wProgramList->setSortingEnabled(true); + mProgTree = new LoQTreeWidget(); + mProgTree->setIndentation(10); + mProgTree->setSortingEnabled(true); m_headerItem = new QTreeWidgetItem(); for(int i=1; isetTextAlignment(i, Qt::AlignCenter); m_headerItem->setData(ENUM_PROGRAMLISTHEADERITEM_CHECK, Qt::DisplayRole, ""); @@ -112,20 +124,20 @@ ProgPanel::ProgPanel(QWidget *parent) : QWidget(parent) { m_headerItem->setData(ENUM_PROGRAMLISTHEADERITEM_LASTTIME, Qt::DisplayRole, tr("Last Modify")); m_headerItem->setData(ENUM_PROGRAMLISTHEADERITEM_USB_EXPORT, Qt::DisplayRole, tr("Usb playback")); m_headerItem->setData(ENUM_PROGRAMLISTHEADERITEM_SEND, Qt::DisplayRole, tr("Publish")); - wProgramList->setHeaderItem(m_headerItem); - wProgramList->header()->setSectionResizeMode(ENUM_PROGRAMLISTHEADERITEM_CHECK, QHeaderView::Fixed); - wProgramList->header()->setSectionResizeMode(ENUM_PROGRAMLISTHEADERITEM_NAME, QHeaderView::Stretch); - wProgramList->header()->setSectionResizeMode(ENUM_PROGRAMLISTHEADERITEM_RESOLUTION, QHeaderView::Stretch); - wProgramList->header()->setSectionResizeMode(ENUM_PROGRAMLISTHEADERITEM_SIZE, QHeaderView::Stretch); - wProgramList->header()->setSectionResizeMode(ENUM_PROGRAMLISTHEADERITEM_LASTTIME, QHeaderView::Stretch); - wProgramList->header()->setSectionResizeMode(ENUM_PROGRAMLISTHEADERITEM_USB_EXPORT, QHeaderView::Fixed); - wProgramList->header()->setSectionResizeMode(ENUM_PROGRAMLISTHEADERITEM_SEND, QHeaderView::Fixed); - wProgramList->header()->setStretchLastSection(false); - wProgramList->setColumnWidth(ENUM_PROGRAMLISTHEADERITEM_CHECK, 66); - wProgramList->setColumnWidth(ENUM_PROGRAMLISTHEADERITEM_USB_EXPORT, 100); - wProgramList->setColumnWidth(ENUM_PROGRAMLISTHEADERITEM_SEND, 72); - vBox->addWidget(wProgramList); - connect(wProgramList, &LoQTreeWidget::sigCheckStateChanged, this, [this](int f){ + mProgTree->setHeaderItem(m_headerItem); + mProgTree->header()->setSectionResizeMode(ENUM_PROGRAMLISTHEADERITEM_CHECK, QHeaderView::Fixed); + mProgTree->header()->setSectionResizeMode(ENUM_PROGRAMLISTHEADERITEM_NAME, QHeaderView::Stretch); + mProgTree->header()->setSectionResizeMode(ENUM_PROGRAMLISTHEADERITEM_RESOLUTION, QHeaderView::Stretch); + mProgTree->header()->setSectionResizeMode(ENUM_PROGRAMLISTHEADERITEM_SIZE, QHeaderView::Stretch); + mProgTree->header()->setSectionResizeMode(ENUM_PROGRAMLISTHEADERITEM_LASTTIME, QHeaderView::Stretch); + mProgTree->header()->setSectionResizeMode(ENUM_PROGRAMLISTHEADERITEM_USB_EXPORT, QHeaderView::Fixed); + mProgTree->header()->setSectionResizeMode(ENUM_PROGRAMLISTHEADERITEM_SEND, QHeaderView::Fixed); + mProgTree->header()->setStretchLastSection(false); + mProgTree->setColumnWidth(ENUM_PROGRAMLISTHEADERITEM_CHECK, 66); + mProgTree->setColumnWidth(ENUM_PROGRAMLISTHEADERITEM_USB_EXPORT, 100); + mProgTree->setColumnWidth(ENUM_PROGRAMLISTHEADERITEM_SEND, 72); + vBox->addWidget(mProgTree); + connect(mProgTree, &LoQTreeWidget::sigCheckStateChanged, this, [this](int f){ switch(f) { case LoQTreeWidget::CheckNone: bnEdit->setEnabled(false); @@ -172,33 +184,21 @@ ProgPanel::ProgPanel(QWidget *parent) : QWidget(parent) { fPro.open(QIODevice::ReadOnly); QJsonDocument pro = QJsonDocument::fromJson(fPro.readAll()); fPro.close(); - onRestoreProgram(pro); + m_pwPorgramItemList.append(new ProgItem(progDir, pro.object(), mProgTree,this)); } } } - readSettings(); + if(settings.value("ProgramListSortOrder").toInt()==0) mProgTree->sortByColumn(settings.value("ProgramListSortColumn").toInt(),Qt::SortOrder::AscendingOrder); + else mProgTree->sortByColumn(settings.value("ProgramListSortColumn").toInt(),Qt::SortOrder::DescendingOrder); // ui->wProgramList->setSortingEnabled( false ); //不使能QT的自动排序 // ui->wProgramList->header()->setSortIndicatorShown( true ); // 设置三角标识符可见 // ui->wProgramList->header()->setSectionsClickable( true ); // 设置标题栏单击响应使能 // connect( ui->wProgramList->header(), SIGNAL( sectionClicked(int) ), this, SLOT( OnClickColumn(int) ) ); } -ProgPanel::~ProgPanel() { - writeSettings(); -} void ProgPanel::OnClickColumn(int iColumn) { - if(iColumn!=ENUM_PROGRAMLISTHEADERITEM_CHECK && iColumn!=ENUM_PROGRAMLISTHEADERITEM_SEND) wProgramList->sortByColumn(iColumn, wProgramList->header()->sortIndicatorOrder()); -} -void ProgPanel::writeSettings() { - QSettings settings; - settings.setValue("ProgramListSortColumn", wProgramList->sortColumn()); - settings.setValue("ProgramListSortOrder", wProgramList->header()->sortIndicatorOrder()); -} -void ProgPanel::readSettings() { - QSettings settings; - if(settings.value("ProgramListSortOrder").toInt()==0) wProgramList->sortByColumn(settings.value("ProgramListSortColumn").toInt(),Qt::SortOrder::AscendingOrder); - else wProgramList->sortByColumn(settings.value("ProgramListSortColumn").toInt(),Qt::SortOrder::DescendingOrder); + if(iColumn!=ENUM_PROGRAMLISTHEADERITEM_CHECK && iColumn!=ENUM_PROGRAMLISTHEADERITEM_SEND) mProgTree->sortByColumn(iColumn, mProgTree->header()->sortIndicatorOrder()); } void ProgPanel::changeEvent(QEvent *event) { QWidget::changeEvent(event); @@ -222,86 +222,60 @@ void ProgPanel::transUi() { for(int i=0;irefreshLable(); } -void ProgPanel::onNewClicked(bool f){ - Q_UNUSED(f); - wNewProgram *dlg = new wNewProgram(this); - connect(dlg, SIGNAL(sigAcceptData(QString,QSize,QString)), this, SLOT(onCreateNewProgram(QString,QSize,QString))); - dlg->exec(); -} - void ProgPanel::onEditClicked(bool){ - int cnt = wProgramList->topLevelItemCount(); + int cnt = mProgTree->topLevelItemCount(); for(int i=0; itopLevelItem(i)->checkState(0) == Qt::Checked) { - wProgramItem *item = static_cast(wProgramList->topLevelItem(i)); - emit item->sigEditProgram(); + if(mProgTree->topLevelItem(i)->checkState(0) == Qt::Checked) { + auto item = static_cast(mProgTree->topLevelItem(i)); + item->onEditProgram(); break; } } } bool ProgPanel::checkIfNameRepeated(const QString &name, QTreeWidgetItem *skip){ - int cnt = wProgramList->topLevelItemCount(); + int cnt = mProgTree->topLevelItemCount(); for(int i=0; i(wProgramList->topLevelItem(i)); + auto item = static_cast(mProgTree->topLevelItem(i)); if(item == skip) continue; - if(name == item->name()) { + if(name == item->m_name) { QMessageBox::warning(this, tr("Warning"), tr("Program name conflicted")); return true; } } return false; } - -void ProgPanel::onRestoreProgram(const QJsonDocument &pro) -{ - m_pwPorgramItemList.append(new wProgramItem(progDir, pro.object(), wProgramList,this)); -} - -void ProgPanel::onCreateNewProgram(QString name, QSize res, QString remarks) -{ - if(checkIfNameRepeated(name)) { - return; - } - auto item = new wProgramItem(progDir, name, res.width(), res.height(), remarks, wProgramList,this); - item->save();//保存pro.json - wProgramList->adjustCheckState(); -} void ProgPanel::onCreateNewProgramOnOpenEditProgramWidget(QString name, QSize res, QString remarks) { if(checkIfNameRepeated(name)) return; - auto item = new wProgramItem(progDir, name, res.width(), res.height(), remarks, wProgramList,this); + auto item = new ProgItem(progDir, name, res.width(), res.height(), remarks, mProgTree,this); item->save();//保存pro.json - wProgramList->adjustCheckState(); + mProgTree->adjustCheckState(); + item->onEditProgram(); } void ProgPanel::onDeleteClicked(bool){ auto res = QMessageBox::information(this, tr("Tip Info"), tr("You will delete the selected solution(s),are you sure?"), QMessageBox::Ok, QMessageBox::Cancel); if(res == QMessageBox::Ok) { - int cnt = wProgramList->topLevelItemCount(); - QList list; + int cnt = mProgTree->topLevelItemCount(); + QList list; for(int i=0; itopLevelItem(i)->checkState(0) == Qt::Checked) { - wProgramItem *item = static_cast(wProgramList->topLevelItem(i)); + if(mProgTree->topLevelItem(i)->checkState(0) == Qt::Checked) { + auto item = static_cast(mProgTree->topLevelItem(i)); list.push_back(item); } } while(!list.isEmpty()) { - wProgramItem *item = list.takeFirst(); + auto item = list.takeFirst(); item->del(); delete item; } - wProgramList->adjustCheckState(); + mProgTree->adjustCheckState(); } } -void ProgPanel::onImportClicked(bool){ - TipDialog *dlg = new TipDialog(this,ENUM_IMPORT_DLG); - connect(dlg, SIGNAL(sigAcceptData(QString,QString)), this, SLOT(onImportProgram(QString,QString))); - dlg->exec(); -} void ProgPanel::onImportProgram(QString strImportDir, QString){ if(!strImportDir.isEmpty()){ - wProgramList->clear(); + mProgTree->clear(); //查找根路径下的项目文件夹,查找文件夹下的节目pro.json信息,包括节目名称,大小,像素,备注等信息 if(!progDir.isEmpty()) { QDir root_dir(progDir); @@ -313,7 +287,7 @@ void ProgPanel::onImportProgram(QString strImportDir, QString){ fPro.open(QIODevice::ReadOnly); QJsonDocument pro = QJsonDocument::fromJson(fPro.readAll()); fPro.close(); - onRestoreProgram(pro); + m_pwPorgramItemList.append(new ProgItem(progDir, pro.object(), mProgTree,this)); } } } @@ -321,60 +295,54 @@ void ProgPanel::onImportProgram(QString strImportDir, QString){ } void ProgPanel::onExportClicked(bool){ - int cnt = wProgramList->topLevelItemCount(); + int cnt = mProgTree->topLevelItemCount(); QStringList selectProgramlist; for(int i=0; itopLevelItem(i)->checkState(0) == Qt::Checked) { - QString string =static_cast(wProgramList->topLevelItem(i))->GetBnName(); + if(mProgTree->topLevelItem(i)->checkState(0) == Qt::Checked) { + QString string =static_cast(mProgTree->topLevelItem(i))->m_bnName->text(); selectProgramlist.append(string); } } TipDialog *dlg = new TipDialog(this,ENUM_EXPORT_DLG,&selectProgramlist,0); - connect(dlg, SIGNAL(sigAcceptData(QString,QString)), this, SLOT(onExportProgram(QString,QString))); dlg->exec(); } - -void ProgPanel::onExportProgram(QString strImportDir,QString strTip1){ - Q_UNUSED(strImportDir); - Q_UNUSED(strTip1); -} void ProgPanel::FilterProgram(const QString &strtemp){ if (strtemp.isEmpty()) //显示全部 { - for (int i = 0; i< wProgramList->topLevelItemCount(); ++i) + for (int i = 0; i< mProgTree->topLevelItemCount(); ++i) { - QTreeWidgetItem* topItem = wProgramList->topLevelItem(i); - wProgramList->setRowHidden(i,wProgramList->indexFromItem(topItem->parent()),false); + QTreeWidgetItem* topItem = mProgTree->topLevelItem(i); + mProgTree->setRowHidden(i,mProgTree->indexFromItem(topItem->parent()),false); } } else { - QList resultList = wProgramList->findItems(strtemp, Qt::MatchContains,ENUM_PROGRAMLISTHEADERITEM_NAME); //搜索结果 + QList resultList = mProgTree->findItems(strtemp, Qt::MatchContains,ENUM_PROGRAMLISTHEADERITEM_NAME); //搜索结果 if (resultList.size() > 0) { - for (int i = 0; i< wProgramList->topLevelItemCount(); ++i) + for (int i = 0; i< mProgTree->topLevelItemCount(); ++i) { - QTreeWidgetItem* topItem = wProgramList->topLevelItem(i); + QTreeWidgetItem* topItem = mProgTree->topLevelItem(i); if (resultList.contains(topItem)) - wProgramList->setRowHidden(i,wProgramList->indexFromItem(topItem->parent()),false); //显示匹配的结果 + mProgTree->setRowHidden(i,mProgTree->indexFromItem(topItem->parent()),false); //显示匹配的结果 else - wProgramList->setRowHidden(i,wProgramList->indexFromItem(topItem->parent()),true); //隐藏不匹配的结果 + mProgTree->setRowHidden(i,mProgTree->indexFromItem(topItem->parent()),true); //隐藏不匹配的结果 } } else { - QList resultList1 = wProgramList->findItems(strtemp, Qt::MatchContains,ENUM_PROGRAMLISTHEADERITEM_RESOLUTION); //搜索结果 + QList resultList1 = mProgTree->findItems(strtemp, Qt::MatchContains,ENUM_PROGRAMLISTHEADERITEM_RESOLUTION); //搜索结果 if (resultList1.size() > 0){ - for (int i = 0; i< wProgramList->topLevelItemCount(); ++i){ - QTreeWidgetItem* topItem = wProgramList->topLevelItem(i); - if (resultList1.contains(topItem)) wProgramList->setRowHidden(i,wProgramList->indexFromItem(topItem->parent()),false); //显示匹配的结果 - else wProgramList->setRowHidden(i,wProgramList->indexFromItem(topItem->parent()),true); //隐藏不匹配的结果 + for (int i = 0; i< mProgTree->topLevelItemCount(); ++i){ + QTreeWidgetItem* topItem = mProgTree->topLevelItem(i); + if (resultList1.contains(topItem)) mProgTree->setRowHidden(i,mProgTree->indexFromItem(topItem->parent()),false); //显示匹配的结果 + else mProgTree->setRowHidden(i,mProgTree->indexFromItem(topItem->parent()),true); //隐藏不匹配的结果 } } else { - for (int i = 0; i< wProgramList->topLevelItemCount(); ++i){ - QTreeWidgetItem* topItem = wProgramList->topLevelItem(i); - wProgramList->setRowHidden(i,wProgramList->indexFromItem(topItem->parent()),true); //隐藏不匹配的结果 + for (int i = 0; i< mProgTree->topLevelItemCount(); ++i){ + QTreeWidgetItem* topItem = mProgTree->topLevelItem(i); + mProgTree->setRowHidden(i,mProgTree->indexFromItem(topItem->parent()),true); //隐藏不匹配的结果 } } } diff --git a/LedOK/progpanel.h b/LedOK/progpanel.h index f996069..e7f37cd 100644 --- a/LedOK/progpanel.h +++ b/LedOK/progpanel.h @@ -17,39 +17,34 @@ #include #include #include -#include #include #include +#include #include "cfg.h" #include -#include +#include #include -#include "wProgramManager/wprogramitem.h" +#include "wProgramManager/progitem.h" class ProgPanel : public QWidget { Q_OBJECT public: - explicit ProgPanel(QWidget *parent = nullptr); - ~ProgPanel(); + explicit ProgPanel(QSettings &settings, QWidget *parent = nullptr); QTreeWidgetItem *m_headerItem = nullptr; + LoQTreeWidget *mProgTree = nullptr; protected: void changeEvent(QEvent *) override; void transUi(); bool checkIfNameRepeated(const QString &name, QTreeWidgetItem *skip = nullptr); public slots: - void onNewClicked(bool f); void onEditClicked(bool f); void onDeleteClicked(bool f); - void onImportClicked(bool f); void onExportClicked(bool f); - void onRestoreProgram(const QJsonDocument &pro); - void onCreateNewProgram(QString name, QSize res, QString remarks); void onCreateNewProgramOnOpenEditProgramWidget(QString name, QSize res, QString remarks); void onImportProgram(QString strImportDir,QString strTip1); - void onExportProgram(QString strImportDir,QString strTip1); void FilterProgram(const QString &strtemp); private slots: @@ -57,10 +52,7 @@ private slots: private: QString progDir; - QList m_pwPorgramItemList; - void readSettings(); - void writeSettings(); - LoQTreeWidget *wProgramList = nullptr; + QList m_pwPorgramItemList; QPushButton *bnNew = nullptr; QPushButton *bnEdit = nullptr; QPushButton *bnDelete = nullptr; diff --git a/LedOK/translations/app_en.ts b/LedOK/translations/app_en.ts index 4fe5e46..ef7c5c9 100644 --- a/LedOK/translations/app_en.ts +++ b/LedOK/translations/app_en.ts @@ -385,75 +385,67 @@ ControlHdmiWidget - - Form - Form - - - - + 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 @@ -3123,279 +3115,292 @@ CtrlBrightPanel - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Tip Tip - - - - - - - - - - - + + + + + + + + + + + NoSelectedController Please select screen first - - + + SetBrightnessSensitivity Set brightness sensitivity - - + + GetBrightnessSensitivity Get brightness sensitivity - - + + SetMinBrightness Set min brightness value - - + + GetMinBrightness Get min brightness - - + + NeedSelectSensorTypeTip Please select sensor type first - - + + Open file dialog + + + + + Not found current worksheet + + + + + SensorBrightnessTable Set sensor brightness table - + GetSensorBrightnessTable Get sensor bright table - + no sensorBrightnessTable no sensor brightnessTable in controller - + Save file Save file - - + + GetCurrentSensorBrightness Get Current Brightness - - + + SetBrightness Set brightness - + GetBrightness Get brightness - + Brightness Screen Brightness - - + + BrightnessSchedule (*.bjs) - + Import File - + Save File Save file - + BrightnessValue Brightness Value - + Start Time Start Time - + End Time End Time - - + + SetAutoBrightnessTask Send brightness schedule table - + GetAutoBrightnessTask Get brightness schedule - - - - + + + + Error Error - + Brightness Configuration Brightness configuration - + Auto Auto - + Manual Manual - + Schedule Schedule - + BrightTip1 If the maximum brightness is 64, the minimum brightness can be configured as 1% or appropriate value; if the maximum brightness is 255, the minimum brightness must be configured as 36% or above, otherwise the brightness will be low. - + BrightTip2 When uploading the file, please confirm to select the correct sensor type, otherwise it will be invalid! - + Sensitivity Sensitivity - + Minbrightness Minimum Brightness - - - + + + Set Set - + Upload Upload file - - - - + + + + Readback Readback - + ReadbackTable Readback - + Refresh Refresh - + Cur Brigntness Cur Brigntness - + Brightness value Brightness value - + Default brightness Default brightness - + Add Add - + Clear Clear - + Delete Delete - + Import Import - + Export Export - + Apply Apply - + Default brightness tip Tip: within the setting time is the setting brightness, and outside the setting time is the default brightness. For example, set the default brightness to 80, set the brightness to 180, and the time range to 8:00-17:00, then the brightness in the time range is 180, and the default brightness in other times is 80! @@ -4116,27 +4121,28 @@ DevicePanel - + All ALL ALL - + Online Online Online - - + + Refresh Refresh Refresh - + + Specify IP Specify IP Specify IP @@ -4152,52 +4158,79 @@ none - + + Specify IP list + + + + + Search + Search + + + + + Attention + Attention + + + + + Please input IP address! + Please input IP address! + + + + Cancel + Cancel + + + Screen ID Screen ID - + Screen IP Screen IP - + Screen Size Screen Size - + Remark Name Alias - + readback pic Screenshot - + send send - + More Info More Info - + Cur Brightness Screen Current Brightness - + Power Status Power Status - + Security encryption @@ -5308,83 +5341,83 @@ MainWindow - + Language Language - + Help Help - - + + Check for updates Check for updates - - + + firmware manager Firmware management - - + + Software Configuration Software Configuration - + Info - - + + About About - - + + Setting Setting - + Device Termianls - + Program Solutions - + Control Terminal Control - + GuangYinPin Lora screen - + Check card Detect - + Tip Info Tip Info - + RestoreLedCardIpByUdpTip This operation will fix all the control cards in the LAN that are not in the same network segment as the computer IP. Please be careful! @@ -5637,6 +5670,54 @@ Ok + + ProgCreateDlg + + + Resolution + Resolution + + + + Solution Information + Solution Information + + + + Solution Name + Solution Name + + + + Width + Width + + + + Height + Height + + + + Remarks + Remarks + + + + 节目超宽需要打折, 请输入打折宽度 + + + + + OK + Ok + + + + Cancel + Cancel + + ProgEditorWin @@ -5656,209 +5737,250 @@ Setting - + Text Text - + Photo Photo - + Video Video - + Gif Gif - + Clock Clock - + Analog Clock Analog Clock - + Environment Environmental Monitoring - + Web Web page - + MuliContentWindow Multi material window - + In this window, a plurality of different program materials can be added and played according to the order of joining the list; In this window, a plurality of different program materials can be added and played according to the order of joining the list - + Timer Timer - + Play - + Stop Stop - + Publish Publish - - - - + + + + Select File Select File - + program Program - + Add page Add page - + Copy page Copy page - + Delete page Delete page - - + + Tip Info Tip Info - + Are you sure you want to delete this program page? Are you sure you want to delete this program page? - + Move up Move up - + Move down Move down - + widget properties Widget properties - + Page properties Program properties - + Do you want to save the modifications? Do you want to save the modifications? - + Saving... Saving... - + Success Success - + Save failed Save failed - + Convertering Convertering - + Converter Successed Converter Successed - + Converter TimeOut Converter TimeOut - + Generate preview data Generate preview data - + Ready Ready - + Generate TimeOut Generate TimeOut - - + + Error Error - + Rename fail when saving - + Remove Recursively fail when saving - + Warning Warning + + ProgItem + + + + ExportButtonTip + USB playback + + + + + SendButtonTip + Publish + + + + + Convertering + Convertering + + + + USB Export Successed + USB disk exported successfully + + + + USB Export TimeOut + USB disk export failed + + + + Converter Successed + Converter Successed + + + + Converter TimeOut + Converter TimeOut + + ProgPanel @@ -5868,100 +5990,100 @@ New - + Edit Edit - + Delete Delete - + Import Import - + Export Export - + Send Send - + Publish Publish - + Name Name - + Play - + Stop Stop - + Resolution Resolution - + File Size File Size - + Last Modify Last Modified - + Usb playback USB playback - + Program name conflicted Program name conflicted - + Warning Warning - + You will delete the selected solution(s),are you sure? You will delete the selected solution(s),are you sure? - + Tip Info Tip Info @@ -6062,7 +6184,7 @@ This screen is encrypted - + All ALL @@ -6108,42 +6230,32 @@ SpecialDlg - - Specify IP - Specify IP + Specify IP - - Search - Search + Search - Cancel - Cancel + Cancel - - Attention - Attention + Attention - Please input IP address! - Please input IP address! + Please input IP address! - Your IP Address is Invalid! - IP Address is invalid! + IP Address is invalid! - Error - Error + Error @@ -6409,7 +6521,7 @@ UpgradeApkDialog - + Upgrade apk Upgrade apk @@ -6425,154 +6537,154 @@ - + Select apk Select apk - - + + Upgrade Upgrade - + APK: - + Uninstall Uninstall - + check running state check running state - + Select Fpga Select Fpga - + success info - + Refresh Refresh - + Cancel Cancel - + Screen ID Screen ID - + Remark Name Alias - + Online Online - + Screen IP Screen IP - + Security encryption - + Progress Progress - + xixunplayer - + cardsystem - + taxiapp - + starter - + connection - + displayer - + FPGA FPGA - + update - + State State - - - + + + All ALL - + The encrypted control card can be upgraded directly The encrypted control card can be upgraded directly - + apk package (*.rpd) - + apk package (*.apk *.zip) @@ -7395,59 +7507,6 @@ :solution(s) already exist.are you sure you want to overwrite the existing solution(s)? - - wNewProgram - - - Dialog - Dialog - - - - Resolution - Resolution - - - - Solution Information - Solution Information - - - - X - X - - - - Solution Name - Solution Name - - - - Width - Width - - - - Height - Height - - - - Remarks - Remarks - - - - OK - Ok - - - - Cancel - Cancel - - wPlanItem @@ -7501,47 +7560,6 @@ Su - - wProgramItem - - - - ExportButtonTip - USB playback - - - - - SendButtonTip - Publish - - - - - Convertering - Convertering - - - - USB Export Successed - USB disk exported successfully - - - - USB Export TimeOut - USB disk export failed - - - - Converter Successed - Converter Successed - - - - Converter TimeOut - Converter TimeOut - - wProgramPublishItem diff --git a/LedOK/translations/app_ja.ts b/LedOK/translations/app_ja.ts index 7486964..8393ee8 100644 --- a/LedOK/translations/app_ja.ts +++ b/LedOK/translations/app_ja.ts @@ -385,75 +385,67 @@ ControlHdmiWidget - - Form - リフレッシュ - - - - + HDMI Configuration ビデオソースの設定 - - + Manual 手動 - - + Schedule スケジュール - - + + Tip 提示 - - + + NoSelectedController 先に大きいスクリーンを選んでください - - + + SyncSwitch スイッチのビデオソースをHDMI-IN - - + + AnSyncSwitch 異ステップモードを切り替え - - + + IsSync 同じ非同期モードを読み返す - + Error エラー - + HDMI IN HDMI IN - + Async アシュリン - + Readback 読み戻し @@ -3123,279 +3115,292 @@ CtrlBrightPanel - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Tip 提示 - - - - - - - - - - - + + + + + + + + + + + NoSelectedController 先に大きいスクリーンを選んでください - - + + SetBrightnessSensitivity 輝度センサ感度を設定する - - + + GetBrightnessSensitivity 明るさ感を得る - - + + SetMinBrightness 最小輝度値を設定します - - + + GetMinBrightness 輝度最小値を取得 - - + + NeedSelectSensorTypeTip センサータイプを選択してください - - + + Open file dialog + + + + + Not found current worksheet + + + + + SensorBrightnessTable 輝度センサ設定テーブルの設定 - + GetSensorBrightnessTable センサーブライトテーブル - + no sensorBrightnessTable コントロールカードに輝度設定表が見つかりませんでした - + Save file 保存 - - + + GetCurrentSensorBrightness 現在の明るさを取得する - - + + SetBrightness 輝度を設定する - + GetBrightness 輝度値を取得 - + Brightness スクリーン輝度 - + Import File インポートファイル - - + + BrightnessSchedule (*.bjs) - + Save File 保存 - + BrightnessValue 輝度値 - + Start Time 開始時間 - + End Time 終了時間 - - + + SetAutoBrightnessTask 送信タイミング輝度表 - + GetAutoBrightnessTask 取得タイミング輝度表 - - - - + + + + Error エラー - + Brightness Configuration 輝度の設定 - + Auto 自動 - + Manual 手動 - + Schedule スケジュール - + BrightTip1 最大輝度が64であるならば、最小の明るさは1%または適切な値として構成されることができます;最大の明るさが255であるならば、最小の明るさは36%かそれ以上として構成されなければなりません、さもなければ、明るさは低くなります。 - + BrightTip2 ファイルをアップロードする時、正しいセンサータイプを選択してください。でないと、無効です。 - + Sensitivity 感度 - + Minbrightness 最小輝度 - - - + + + Set セット - + Upload ファイルのアップロード - - - - + + + + Readback 読み戻し - + ReadbackTable 読み戻し - + Refresh 更新 - + Cur Brigntness カールの明るさ - + Brightness value 輝度値 - + Default brightness 標準の明るさ - + Add 追加 - + Clear クリア - + Delete 削除 - + Import インポート - + Export 出力 - + Apply 適用 - + Default brightness tip ヒント:この設定時間内は明るさを設定し、設定時間外はデフォルトの明るさとなります。例えば、デフォルトの輝度を80とし、設定輝度は180とし、時間範囲は8:00〜17:00とすると、時間範囲は180となり、他の時間はデフォルトの輝度80となる。 @@ -4116,26 +4121,27 @@ DevicePanel - + All トータル トータル - + Online オンライン中 - - + + Refresh 更新 更新 - + + Specify IP 指定IP 指定IP @@ -4151,52 +4157,79 @@ なし - + + Specify IP list + + + + + Search + 検索 + + + + + Attention + 注意 + + + + + Please input IP address! + IPアドレスを入力してください! + + + + Cancel + キャンセル + + + Screen ID ターミナルID - + Screen IP ターミナルIP - + Screen Size スクリーンサイズ - + Remark Name 別名 - + readback pic 読み戻し - + send 送信 - + More Info 詳細 - + Cur Brightness 現在の画面の明るさ - + Power Status 画面切り替えステータス - + Security 暗号化 @@ -5307,83 +5340,83 @@ MainWindow - + Language 言語 - + Help ヘルプ - - + + Check for updates アップデートをチェック - - + + firmware manager ファームウェア管理 - - + + Software Configuration ソフトウェアの設定 - + Info 情報 - - + + About 当ソフトウェアについて - - + + Setting 設置 - + Device 端末管理 - + Program コンテンツ管理 - + Control ターミナルコントロール - + GuangYinPin スクリーン - + Check card ワンタッチ修復 - + Tip Info ヒント - + RestoreLedCardIpByUdpTip この操作はLAN内のすべてのコンピュータIPと同じセグメントにないコントロールカードを固定IPに修正します。慎重に操作してください。 @@ -5636,6 +5669,54 @@ 確定 + + ProgCreateDlg + + + Resolution + 解像度 + + + + Solution Information + スケジュール情報 + + + + Solution Name + リスト名 + + + + Width + + + + + Height + 高さ + + + + Remarks + 備考 + + + + 节目超宽需要打折, 请输入打折宽度 + + + + + OK + 確定 + + + + Cancel + キャンセル + + ProgEditorWin @@ -5655,209 +5736,250 @@ 設置 - + Text テキスト - + Photo 写真 - + Video ビデオ - + Gif アニメーション - + Clock デジタル時計 - + Analog Clock アナログ時計 - + Environment 環境モニタリング - + Web ウェブページ - + MuliContentWindow マルチ素材ウィンドウ - + In this window, a plurality of different program materials can be added and played according to the order of joining the list; このウィンドウには、複数の異なる番組素材を追加して、リストに追加した順に再生することができます - + Timer タイマー - + Play 再生 - + Stop 停止 - + Publish 転送 - - - - + + + + Select File ファイルを選択 - + program 番組リスト - + Add page ページを追加 - + Copy page コピーページ - + Delete page ページを削除 - - + + Tip Info ヒント - + Are you sure you want to delete this program page? 本当にこの番組ページを削除しますか? - + Move up 前へ - + Move down 次頁 - + widget properties パッケージプロパティ - + Page properties プログラムのプロパティ - + Do you want to save the modifications? 変更された内容を保存してもよろしいですか? - + Saving... 保存中、少々お待ちください... - + Success 成功 - + Save failed 保存に失敗 - + Convertering データを整理する - + Converter Successed 整理に成功しました - + Converter TimeOut 整理タイムアウト - + Generate preview data プレビューデータの生成 - + Ready 準備が完了しました - + Generate TimeOut タイムアウトを生成 - - + + Error エラー - + Rename fail when saving - + Remove Recursively fail when saving - + Warning 警告 + + ProgItem + + + + ExportButtonTip + USBメモリで再生する + + + + + SendButtonTip + 転送 + + + + + Convertering + データを整理する + + + + USB Export Successed + USBメモリのエクスポートに成功しました + + + + USB Export TimeOut + USBメモリのエクスポートに失敗しました + + + + Converter Successed + 整理に成功しました + + + + Converter TimeOut + 整理タイムアウト + + ProgPanel @@ -5867,100 +5989,100 @@ 新規 - + Edit 編集 - + Delete 削除 - + Import インポート - + Export 出力 - + Send 送信 - + Publish 転送 - + Name 名前 - + Play 再生 - + Stop 停止 - + Resolution 解像度 - + File Size サイズ - + Last Modify 最終更新日 - + Usb playback USBメモリで再生する - + Program name conflicted 番組名が重なる - + Warning 警告 - + You will delete the selected solution(s),are you sure? 是否确认删除选中的节目? - + Tip Info ヒント @@ -6061,7 +6183,7 @@ スクリーンは暗号化されています - + All トータル @@ -6107,42 +6229,32 @@ SpecialDlg - - Specify IP - 指定IP + 指定IP - - Search - 検索 + 検索 - Cancel - キャンセル + キャンセル - - Attention - 注意 + 注意 - Please input IP address! - IPアドレスを入力してください! + IPアドレスを入力してください! - Your IP Address is Invalid! - IPアドレスが無効です! + IPアドレスが無効です! - Error - エラー + エラー @@ -6408,7 +6520,7 @@ UpgradeApkDialog - + Upgrade apk アップグレード @@ -6424,154 +6536,154 @@ - + Select apk Appパッケージを選択 - - + + Upgrade アップグレード - + APK: - + Uninstall アンマウント - + check running state 運転状態を検出 - + Select Fpga FPGAファイルを選択 - + success info - + Refresh 更新 - + Cancel キャンセル - + Screen ID ターミナルID - + Remark Name 別名 - + Online オンライン中 - + Screen IP ターミナルIP - + Security 暗号化 - + Progress 程度 - + xixunplayer - + cardsystem - + taxiapp - + starter - + connection - + displayer - + FPGA FPGA - + update - + State 状態 - - - + + + All トータル - + The encrypted control card can be upgraded directly 暗号化されたコントロールカードを直接アップグレードすることができます - + apk package (*.rpd) - + apk package (*.apk *.zip) @@ -7394,59 +7506,6 @@ 解決策は既に存在します。既存の解決策を上書きしたいと思いますか? - - wNewProgram - - - Dialog - ダイアログ - - - - Resolution - 解像度 - - - - Solution Information - スケジュール情報 - - - - X - X - - - - Solution Name - リスト名 - - - - Width - - - - - Height - 高さ - - - - Remarks - 備考 - - - - OK - 確定 - - - - Cancel - キャンセル - - wPlanItem @@ -7500,47 +7559,6 @@ - - wProgramItem - - - - ExportButtonTip - USBメモリで再生する - - - - - SendButtonTip - 転送 - - - - - Convertering - データを整理する - - - - USB Export Successed - USBメモリのエクスポートに成功しました - - - - USB Export TimeOut - USBメモリのエクスポートに失敗しました - - - - Converter Successed - 整理に成功しました - - - - Converter TimeOut - 整理タイムアウト - - wProgramPublishItem diff --git a/LedOK/translations/app_zh_CN.ts b/LedOK/translations/app_zh_CN.ts index 4848840..3e3f0bf 100644 --- a/LedOK/translations/app_zh_CN.ts +++ b/LedOK/translations/app_zh_CN.ts @@ -385,75 +385,67 @@ ControlHdmiWidget - - Form - Form - - - - + HDMI Configuration 画面输入源配置 - - + Manual 手动 - - + Schedule 定时 - - + + Tip 提示 - - + + NoSelectedController 请先选择大屏幕 - - + + SyncSwitch 切换同步模式 - - + + AnSyncSwitch 切换异步模式 - - + + IsSync 回读同异步模式 - + Error 错误 - + HDMI IN 同步 - + Async 异步 - + Readback 回读 @@ -3123,279 +3115,292 @@ CtrlBrightPanel - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Tip 提示 - - - - - - - - - - - + + + + + + + + + + + NoSelectedController 请先选择大屏幕 - - + + SetBrightnessSensitivity 设置亮度传感器灵敏度 - - + + GetBrightnessSensitivity 获取亮度传感器灵敏度 - - + + SetMinBrightness 设置最小的亮度值 - - + + GetMinBrightness 获取亮度最小值 - - + + NeedSelectSensorTypeTip 请先选择传感器类型 - - + + Open file dialog + 打开文件 + + + + Not found current worksheet + 没找到当前工作表 + + + + SensorBrightnessTable 设置亮度传感器配置表 - + GetSensorBrightnessTable 获取传感器亮度配置表 - + no sensorBrightnessTable 控制卡没有发现亮度配置表 - + Save file 保存 - - + + GetCurrentSensorBrightness 获取当前亮度 - - + + SetBrightness 设置亮度 - + GetBrightness 获取亮度值 - + Brightness 屏体亮度 - + Import File 导入文件 - - + + BrightnessSchedule (*.bjs) - + Save File 保存文件 - + BrightnessValue 亮度值 - + Start Time 开始时间 - + End Time 结束时间 - - + + SetAutoBrightnessTask 发送定时亮度表 - + GetAutoBrightnessTask 获取定时亮度表 - - - - + + + + Error 错误 - + Brightness Configuration 亮度配置 - + Auto 自动 - + Manual 手动 - + Schedule 定时 - + BrightTip1 如果最大亮度为64,则最小亮度可以配置为1%或适当的值;如果最大亮度为255,则最小亮度必须配置为36%或更高,否则亮度将很低。 - + BrightTip2 上传文件时,请确认选择正确的传感器类型,否则无效! - + Sensitivity 灵敏度 - + Minbrightness 最小亮度值 - - - + + + Set 设置 - + Upload 上传配置文件 - - - - + + + + Readback 回读 - + ReadbackTable 回读 - + Refresh 刷新 - + Cur Brigntness 当前亮度 - + Brightness value 亮度值 - + Default brightness 默认亮度 - + Add 添加 - + Clear 清空 - + Delete 删除 - + Import 导入 - + Export 导出 - + Apply 应用 - + Default brightness tip 提示:该设定时间内为设定亮度,设定时间外为默认亮度。例如设定默认亮度为80,设定亮度为180,时间范围是8:00-17:00,则时间范围内亮度为180,其他时间内为默认亮度80! @@ -4116,20 +4121,20 @@ DevicePanel - + All 总数 总数 - + Online 在线 在线 - - + + Refresh 刷新 刷新 @@ -4146,58 +4151,86 @@ - + + Specify IP 指定IP 指定IP - + + Specify IP list + 指定IP列表 + + + + Search + 搜索 + + + + + Attention + 注意 + + + + + Please input IP address! + 请输入IP地址! + + + + Cancel + 取消 + + + Screen ID 屏幕ID - + Screen IP 屏幕IP - + Screen Size 屏幕像素 - + Remark Name 別名 - + readback pic 回读画面 - + send 发送 - + More Info 详细信息 - + Cur Brightness 屏幕当前亮度 - + Power Status 屏幕开关状态 - + Security 加密 @@ -5308,83 +5341,83 @@ MainWindow - + Language 语言 - + Help 帮助 - - + + Check for updates 检查更新 - - + + firmware manager 固件管理 - - + + Software Configuration 软件配置 - + Info 信息 - - + + About 关于 - - + + Setting 设置 - + Device 设备管理 - + Program 节目管理 - + Control 终端控制 - + GuangYinPin 光影屏 - + Check card 一键找卡 - + Tip Info 提示 - + RestoreLedCardIpByUdpTip 该操作会把局域网内的所有与计算机IP不在同一网段的控制卡修复成固定IP,请谨慎操作! @@ -5637,6 +5670,54 @@ 确认 + + ProgCreateDlg + + + Resolution + 分辨率 + + + + Solution Information + 节目信息 + + + + Solution Name + 节目名称 + + + + Width + + + + + Height + + + + + Remarks + 备注 + + + + 节目超宽需要打折, 请输入打折宽度 + + + + + OK + 确认 + + + + Cancel + 取消 + + ProgEditorWin @@ -5656,209 +5737,250 @@ 设置 - + Text 文本 - + Photo 图片 - + Video 视频 - + Gif 动画 - + Clock 数字时钟 - + Analog Clock 模拟时钟 - + Environment 环境监测 - + Web 网页 - + MuliContentWindow 多素材窗口 - + In this window, a plurality of different program materials can be added and played according to the order of joining the list; 该窗口中可以加入多个不同是节目素材,并按照加入列表的先后顺序播放 - + Timer 计时器 - + Play 播放 - + Stop 停止 - + Publish 发布 - - - - + + + + Select File 选择文件 - + program 节目列表 - + Add page 添加页面 - + Copy page 复制页面 - + Delete page 删除页面 - - + + Tip Info 提示 - + Are you sure you want to delete this program page? 确定要删除该节目页吗? - + Move up 向上移动一个页面 - + Move down 向下移动一个页面 - + widget properties 组件属性 - + Page properties 节目属性 - + Do you want to save the modifications? 是否保存修改? - + Saving... 正在保存... - + Success 成功 - + Save failed 保存失败 - + Convertering 整理数据中 - + Converter Successed 整理成功 - + Converter TimeOut 整理超时 - + Generate preview data 生成预览数据 - + Ready 准备完毕 - + Generate TimeOut 超时 - - + + Error 错误 - + Rename fail when saving 重命名文件夹失败 - + Remove Recursively fail when saving - + Warning 警告 + + ProgItem + + + + ExportButtonTip + U盘播放 + + + + + SendButtonTip + 发布 + + + + + Convertering + 整理数据中 + + + + USB Export Successed + U盘导出成功 + + + + USB Export TimeOut + U盘导出失败 + + + + Converter Successed + 整理成功 + + + + Converter TimeOut + 整理超时 + + ProgPanel @@ -5868,100 +5990,100 @@ 新建 - + Edit 编辑 - + Delete 删除 - + Import 导入 - + Export 导出 - + Send 发送 - + Publish 发布 - + Name 名称 - + Play 播放 - + Stop 停止 - + Resolution 分辨率 - + File Size 文件大小 - + Last Modify 最后修改时间 - + Usb playback U盘更新 - + Program name conflicted 节目名称重复 - + Warning 警告 - + You will delete the selected solution(s),are you sure? 是否确认删除选中的节目? - + Tip Info 提示 @@ -6062,7 +6184,7 @@ 屏幕已加密 - + All 总数 @@ -6108,42 +6230,32 @@ SpecialDlg - - Specify IP - 指定IP + 指定IP - - Search - 搜索 + 搜索 - Cancel - 取消 + 取消 - - Attention - 注意 + 注意 - Please input IP address! - 请输入IP地址! + 请输入IP地址! - Your IP Address is Invalid! - IP地址无效! + IP地址无效! - Error - 错误 + 错误 @@ -6409,7 +6521,7 @@ UpgradeApkDialog - + Upgrade apk 升级apk @@ -6425,154 +6537,154 @@ - + Select apk 选择Apk包 - - + + Upgrade 升级 - + APK: - + Uninstall 卸载 - + check running state 检测运行状态 - + Select Fpga 选择FPGA文件 - + success info - + Refresh 刷新 - + Cancel 取消 - + Screen ID 屏幕ID - + Remark Name 別名 - + Online 在线 - + Screen IP 屏幕IP - + Security 加密 - + Progress 进度 - + xixunplayer - + cardsystem - + taxiapp - + starter - + connection - + displayer - + FPGA FPGA - + update - + State 状态 - - - + + + All 总数 - + The encrypted control card can be upgraded directly 加密控制卡可以直接升级 - + apk package (*.rpd) - + apk package (*.apk *.zip) @@ -7395,59 +7507,6 @@ :节目已存在。是否确实要覆盖现有节目? - - wNewProgram - - - Dialog - 对话框 - - - - Resolution - 分辨率 - - - - Solution Information - 节目信息 - - - - X - X - - - - Solution Name - 节目名称 - - - - Width - - - - - Height - - - - - Remarks - 备注 - - - - OK - 确认 - - - - Cancel - 取消 - - wPlanItem @@ -7501,47 +7560,6 @@ - - wProgramItem - - - - ExportButtonTip - U盘播放 - - - - - SendButtonTip - 发布 - - - - - Convertering - 整理数据中 - - - - USB Export Successed - U盘导出成功 - - - - USB Export TimeOut - U盘导出失败 - - - - Converter Successed - 整理成功 - - - - Converter TimeOut - 整理超时 - - wProgramPublishItem diff --git a/LedOK/translations/app_zh_TW.ts b/LedOK/translations/app_zh_TW.ts index 71b32fc..441f723 100644 --- a/LedOK/translations/app_zh_TW.ts +++ b/LedOK/translations/app_zh_TW.ts @@ -385,75 +385,67 @@ ControlHdmiWidget - - Form - Form - - - - + HDMI Configuration 畫面輸入源配寘 - - + Manual 手動 - - + Schedule 定時 - - + + Tip 提示 - - + + NoSelectedController 請先選擇大螢幕 - - + + SyncSwitch 切換同步模式 - - + + AnSyncSwitch 切換异步模式 - - + + IsSync 回讀同非同步模式 - + Error 錯誤 - + HDMI IN HDMI IN - + Async BOX - + Readback 回讀 @@ -3128,130 +3120,143 @@ CtrlBrightPanel - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Tip 提示 - - - - - - - - - - - + + + + + + + + + + + NoSelectedController 請先選擇大螢幕 - - + + SetBrightnessSensitivity 設定亮度感測器靈敏度 - - + + GetBrightnessSensitivity 獲取亮度感測器靈敏度 - - + + SetMinBrightness 設定最小的亮度值 - - + + GetMinBrightness 獲取亮度最小值 - - + + NeedSelectSensorTypeTip 請先選擇感測器類型 - - + + Open file dialog + 打開文件 + + + + Not found current worksheet + 沒找到當前工作表 + + + + SensorBrightnessTable 設定亮度感測器配寘錶 - + GetSensorBrightnessTable 獲取感測器亮度配寘錶 - + no sensorBrightnessTable 控制卡沒有發現亮度配寘錶 - + Save file 保存 - - + + GetCurrentSensorBrightness 獲取當前亮度 - - + + SetBrightness 設定亮度 - + GetBrightness 獲取亮度值 - + Brightness 屏体亮度 - + Import File 導入檔案 - - + + BrightnessSchedule (*.bjs) - + Save File 保存 - + BrightnessValue 亮度值 @@ -3261,151 +3266,151 @@ 開始時間 - + Start Time 開始時間 - + End Time 結束時間 - - + + SetAutoBrightnessTask 發送定時亮度錶 - + GetAutoBrightnessTask 獲取定時亮度錶 - - - - + + + + Error 錯誤 - + Brightness Configuration 亮度配寘 - + Auto 自動 - + Manual 手動 - + Schedule 定時 - + BrightTip1 如果最大亮度為64,則最小亮度可以配寘為1%或適當的值;如果最大亮度為255,則最小亮度必須配寘為36%或更高,否則亮度將很低。 - + BrightTip2 上傳文件時,請確認選擇正確的感測器類型,否則無效! - + Sensitivity 靈敏度 - + Minbrightness 最小亮度值 - - - + + + Set 設定 - + Upload 上傳設定檔 - - - - + + + + Readback 回讀 - + ReadbackTable 回讀 - + Refresh 檢測 - + Cur Brigntness 當前亮度 - + Brightness value 亮度值 - + Default brightness 默認亮度 - + Add 添加 - + Clear 清空 - + Delete 删除 - + Import 導入 - + Export 匯出 - + Apply 應用 - + Default brightness tip 提示:該設定時間內為設定亮度,設定時間外為默認亮度。例如設定默認亮度為80,設定亮度為180,時間範圍是8:00-17:00,則時間範圍內亮度為180,其他時間內為默認亮度80! @@ -4126,25 +4131,26 @@ DevicePanel - + All 總數 - + Online 在线 線上 - - + + Refresh 檢測 - + + Specify IP 指定IP 指定IP @@ -4160,52 +4166,79 @@ - + + Specify IP list + 指定IP清單 + + + + Search + 蒐索 + + + + + Attention + 注意 + + + + + Please input IP address! + 請輸入IP地址! + + + + Cancel + 取消 + + + Screen ID 荧幕ID - + Screen IP 荧幕IP - + Screen Size 荧幕點數 - + Remark Name 別名 - + readback pic 回讀畫面 - + send 發送 - + More Info 詳細資訊 - + Cur Brightness 荧幕當前亮度 - + Power Status 荧幕開關狀態 - + Security 加密 @@ -5316,83 +5349,83 @@ MainWindow - + Language 語言 - + Help 幫助 - - + + Check for updates 檢查更新 - - + + firmware manager 固件管理 - - + + Software Configuration 軟件配寘 - + Info 資訊 - - + + About 關於 - - + + Setting 設定 - + Device 設備管理 - + Program 節目管理 - + Control 終端控制 - + GuangYinPin 光影屏 - + Check card 一键找卡 - + Tip Info 提示 - + RestoreLedCardIpByUdpTip 該操作會把局域網內的所有與電腦IP不在同一網段的控制卡修復成固定IP,請謹慎操作! @@ -5645,6 +5678,54 @@ 確認 + + ProgCreateDlg + + + Resolution + 分辯率 + + + + Solution Information + 節目資訊 + + + + Solution Name + 節目名稱 + + + + Width + + + + + Height + + + + + Remarks + 備註 + + + + 节目超宽需要打折, 请输入打折宽度 + + + + + OK + 確認 + + + + Cancel + 取消 + + ProgEditorWin @@ -5664,209 +5745,250 @@ 設定 - + Text 文字 - + Photo 圖片 - + Video 視頻 - + Gif 動畫 - + Clock 數位時鐘 - + Analog Clock 圓形時鐘 - + Environment 環境監測 - + Web 網頁 - + MuliContentWindow 多素材視窗 - + In this window, a plurality of different program materials can be added and played according to the order of joining the list; 該視窗中可以加入多個不同是節目素材,並按照加入列表的先後順序播放 - + Timer 計時器 - + Play 播放 - + Stop 停止 - + Publish 發佈 - - - - + + + + Select File 選擇檔案 - + program 節目清單 - + Add page 添加頁面 - + Copy page 複製頁面 - + Delete page 删除頁面 - - + + Tip Info 提示 - + Are you sure you want to delete this program page? 確定要删除該節目頁嗎? - + Move up 向上移動一個頁面 - + Move down 向下移動一個頁面 - + widget properties 組件内容 - + Page properties 節目内容 - + Do you want to save the modifications? 是否保存修改? - + Saving... 正在保存… - + Success 成功 - + Save failed 保存失敗 - + Convertering 整理數據中 - + Converter Successed 整理成功 - + Converter TimeOut 整理超時 - + Generate preview data 生成預覽數據 - + Ready 準備完畢 - + Generate TimeOut 超時 - - + + Error 錯誤 - + Rename fail when saving - + Remove Recursively fail when saving - + Warning 警告 + + ProgItem + + + + ExportButtonTip + U盤播放 + + + + + SendButtonTip + 發佈 + + + + + Convertering + 整理數據中 + + + + USB Export Successed + U盤匯出成功 + + + + USB Export TimeOut + U盤匯出失敗 + + + + Converter Successed + 整理成功 + + + + Converter TimeOut + 整理超時 + + ProgPanel @@ -5876,100 +5998,100 @@ 新建 - + Edit 編輯 - + Delete 删除 - + Import 導入 - + Export 匯出 - + Send 發送 - + Publish 發佈 - + Name 名稱 - + Play 播放 - + Stop 停止 - + Resolution 分辯率 - + File Size 文件大小 - + Last Modify 最後修改時間 - + Usb playback U盤更新 - + Program name conflicted 節目名稱重複 - + Warning 警告 - + You will delete the selected solution(s),are you sure? 是否確認删除選中的節目? - + Tip Info 提示 @@ -6070,7 +6192,7 @@ 荧幕已加密 - + All 總數 @@ -6116,42 +6238,32 @@ SpecialDlg - - Specify IP - 指定IP + 指定IP - - Search - 蒐索 + 蒐索 - Cancel - 取消 + 取消 - - Attention - 注意 + 注意 - Please input IP address! - 請輸入IP地址! + 請輸入IP地址! - Your IP Address is Invalid! - IP地址無效! + IP地址無效! - Error - 錯誤 + 錯誤 @@ -6417,7 +6529,7 @@ UpgradeApkDialog - + Upgrade apk 陞級apk @@ -6433,154 +6545,154 @@ - + Select apk 選擇Apk包 - - + + Upgrade 陞級 - + APK: - + Uninstall 卸載 - + check running state 檢測運行狀態 - + Select Fpga 選擇FPGA檔案 - + success info - + Refresh 檢測 - + Cancel 取消 - + Screen ID 荧幕ID - + Remark Name 別名 - + Online 線上 - + Screen IP 荧幕IP - + Security 加密 - + Progress 進度 - + xixunplayer - + cardsystem - + taxiapp - + starter - + connection - + displayer - + FPGA FPGA - + update - + State 陳述 - - - + + + All 總數 - + The encrypted control card can be upgraded directly 加密控制卡可以直接陞級 - + apk package (*.rpd) - + apk package (*.apk *.zip) @@ -7403,59 +7515,6 @@ :節目已存在。是否確實要覆蓋現有節目? - - wNewProgram - - - Dialog - 對話方塊 - - - - Resolution - 分辯率 - - - - Solution Information - 節目資訊 - - - - X - X - - - - Solution Name - 節目名稱 - - - - Width - - - - - Height - - - - - Remarks - 備註 - - - - OK - 確認 - - - - Cancel - 取消 - - wPlanItem @@ -7509,47 +7568,6 @@ - - wProgramItem - - - - ExportButtonTip - U盤播放 - - - - - SendButtonTip - 發佈 - - - - - Convertering - 整理數據中 - - - - USB Export Successed - U盤匯出成功 - - - - USB Export TimeOut - U盤匯出失敗 - - - - Converter Successed - 整理成功 - - - - Converter TimeOut - 整理超時 - - wProgramPublishItem diff --git a/LedOK/wProgramManager/progcreatedlg.cpp b/LedOK/wProgramManager/progcreatedlg.cpp new file mode 100644 index 0000000..d078e44 --- /dev/null +++ b/LedOK/wProgramManager/progcreatedlg.cpp @@ -0,0 +1,116 @@ +#include "progcreatedlg.h" +#include "gqt.h" +#include "ui_wnewprogram.h" + +ProgCreateDlg::ProgCreateDlg(QString name, int width, int height, QString remarks, QWidget *parent, bool lockName) : BaseDlg(parent) { + auto vBox = new VBox(this); + + auto hBox = new HBox(vBox); + hBox->setContentsMargins(0, 0, 0, 0); + hBox->addStretch(); + + auto label = new QLabel(tr("Solution Information")); + hBox->addWidget(label); + hBox->addStretch(); + + auto btnClose = new QPushButton("X"); + btnClose->setProperty("ssType", "progManageTool"); + connect(btnClose, &QPushButton::clicked, this, &QDialog::close); + hBox->addWidget(btnClose); + + auto line = new QFrame; + line->setFrameShape(QFrame::HLine); + line->setFrameShadow(QFrame::Sunken); + vBox->addWidget(line); + + hBox = new HBox(vBox); + + label = new QLabel(tr("Solution Name")); + label->setMinimumWidth(90); + label->setAlignment(Qt::AlignRight | Qt::AlignVCenter); + hBox->addWidget(label); + hBox->addSpacing(6); + + fdName = new QLineEdit(name); + if(lockName) fdName->setDisabled(true); + hBox->addWidget(fdName); + + hBox = new HBox(vBox); + hBox->setSpacing(12); + + label = new QLabel(tr("Resolution")); + label->setMinimumWidth(90); + label->setAlignment(Qt::AlignRight | Qt::AlignVCenter); + hBox->addWidget(label); + hBox->addSpacing(6); + + auto label_4 = new QLabel(tr("Width")); + hBox->addWidget(label_4); + + fdWidth = new QSpinBox; + fdWidth->setMaximum(99999); + fdWidth->setValue(width); + hBox->addWidget(fdWidth); + + auto label_5 = new QLabel(tr("Height")); + hBox->addWidget(label_5); + + fdHeight = new QSpinBox; + fdHeight->setMaximum(99999); + fdHeight->setValue(height); + hBox->addWidget(fdHeight); + hBox->addStretch(); + + hBox = new HBox(vBox); + + label = new QLabel(tr("Remarks")); + label->setMinimumWidth(90); + label->setAlignment(Qt::AlignRight | Qt::AlignVCenter); + hBox->addWidget(label); + hBox->addSpacing(6); + + fdRemark = new QTextEdit(remarks); + fdRemark->setFixedSize(300, 80); + hBox->addWidget(fdRemark); + + line = new QFrame; + line->setFrameShape(QFrame::HLine); + line->setFrameShadow(QFrame::Sunken); + vBox->addWidget(line); + + hBox = new HBox(vBox); + + auto lbSplitWidth = new QLabel(tr("节目超宽需要打折, 请输入打折宽度")); + lbSplitWidth->setVisible(false); + hBox->addWidget(lbSplitWidth); + + fdSplitWidth = new QSpinBox; + fdSplitWidth->setVisible(false); + fdSplitWidth->setMaximum(1920); + hBox->addWidget(fdSplitWidth); + hBox->addStretch(); + + connect(fdWidth, (void(QSpinBox::*)(int))&QSpinBox::valueChanged, this, [this, lbSplitWidth](int value) { + if(value > 1920) { + fdSplitWidth->show(); + lbSplitWidth->show(); + int den = (value+1919) / 1920; + fdSplitWidth->setValue((value+den-1) / den); + } else { + fdSplitWidth->hide(); + lbSplitWidth->hide(); + fdSplitWidth->setValue(0); + } + }); + + hBox = new HBox(vBox); + hBox->addStretch(); + + auto bnOK = new QPushButton(tr("OK")); + connect(bnOK, &QPushButton::clicked, this, &QDialog::accept); + hBox->addWidget(bnOK); + + auto bnCancel = new QPushButton(tr("Cancel")); + connect(bnCancel, &QPushButton::clicked, this, &QDialog::reject); + hBox->addWidget(bnCancel); +} diff --git a/LedOK/wProgramManager/progcreatedlg.h b/LedOK/wProgramManager/progcreatedlg.h new file mode 100644 index 0000000..5db0575 --- /dev/null +++ b/LedOK/wProgramManager/progcreatedlg.h @@ -0,0 +1,20 @@ +#ifndef PROGCREATEDLG_H +#define PROGCREATEDLG_H + +#include "basedlg.h" +#include +#include +#include + +class ProgCreateDlg : public BaseDlg { + Q_OBJECT +public: + ProgCreateDlg(QString name, int width, int height, QString remarks, QWidget *parent = nullptr, bool lockName = false); + QLineEdit *fdName; + QSpinBox *fdWidth; + QSpinBox *fdHeight; + QTextEdit *fdRemark; + QSpinBox *fdSplitWidth; +}; + +#endif // PROGCREATEDLG_H diff --git a/LedOK/wProgramManager/progeditorwin.cpp b/LedOK/wProgramManager/progeditorwin.cpp index bc7c26a..473c46a 100644 --- a/LedOK/wProgramManager/progeditorwin.cpp +++ b/LedOK/wProgramManager/progeditorwin.cpp @@ -21,7 +21,7 @@ #include "wProgramManager/emultiwin.h" #include "wProgramManager/mconverter.h" #include "wProgramManager/sendprogramdialog.h" -#include "wnewprogram.h" +#include "progcreatedlg.h" #include #include #include @@ -108,29 +108,27 @@ ProgEditorWin::ProgEditorWin(QString &name, int &w, int &h, QString &remarks, co toolBar->addAction(action); action = new QAction(QIcon(":/res/ProgramManager/EditProgram/Setting.png"), tr("Setting")); connect(action, &QAction::triggered, this, [this](){ - wNewProgram *dlg = new wNewProgram(m_name, QSize(gProgWidth, gProgHeight), m_remarks, this, true); - connect(dlg, &wNewProgram::sigAcceptData, this, [this](QString , QSize size, QString remarks){ - gProgWidth = size.width(); - gProgHeight = size.height(); - m_remarks = remarks; - emit sProgramChanged(); - int n = listPage->count(); - for(int i=0; i(listPage->item(i)); - page->mScene->setSceneRect(0, 0, gProgWidth, gProgHeight); - page->mGraView->resetTransform(); - qreal scale = qMin(page->mGraView->width() / page->mScene->width(), page->mGraView->height() / page->mScene->height()); - page->mGraView->scale(scale, scale); + ProgCreateDlg dlg(m_name, gProgWidth, gProgHeight, m_remarks, this, true); + if(dlg.exec() != QDialog::Accepted) return; + gProgWidth = dlg.fdWidth->value(); + gProgHeight = dlg.fdHeight->value(); + m_remarks = dlg.fdRemark->toPlainText(); + emit sProgramChanged(); + int n = listPage->count(); + for(int i=0; i(listPage->item(i)); + page->mScene->setSceneRect(0, 0, gProgWidth, gProgHeight); + page->mGraView->resetTransform(); + qreal scale = qMin(page->mGraView->width() / page->mScene->width(), page->mGraView->height() / page->mScene->height()); + page->mGraView->scale(scale, scale); - auto items = page->mScene->items(); - foreach(auto item, items) { - auto element = static_cast(item); - if(element->mMultiWin == nullptr) element->fitProgSize(); - } - page->mScene->update(); + auto items = page->mScene->items(); + foreach(auto item, items) { + auto element = static_cast(item); + if(element->mMultiWin == nullptr) element->fitProgSize(); } - }); - dlg->exec(); + page->mScene->update(); + } }); toolBar->addAction(action); toolBar->addSeparator(); diff --git a/LedOK/wProgramManager/wprogramitem.cpp b/LedOK/wProgramManager/progitem.cpp similarity index 87% rename from LedOK/wProgramManager/wprogramitem.cpp rename to LedOK/wProgramManager/progitem.cpp index 0891331..52b7b62 100644 --- a/LedOK/wProgramManager/wprogramitem.cpp +++ b/LedOK/wProgramManager/progitem.cpp @@ -1,4 +1,4 @@ -#include "wprogramitem.h" +#include "progitem.h" #include "tools.h" #include "progeditorwin.h" #include "mconverter.h" @@ -8,11 +8,7 @@ #include "sendprogramdialog.h" #include "mainwindow.h" -wProgramItem::wProgramItem(const QString &pRoot, const QString &name, int w, int h, const QString &remarks, LoQTreeWidget *parent,QWidget *pWnd) : - QObject(parent), - QTreeWidgetItem(UserType), - m_parent(parent) -{ +ProgItem::ProgItem(const QString &pRoot, const QString &name, int w, int h, const QString &remarks, LoQTreeWidget *parent,QWidget *pWnd) : QObject(parent), QTreeWidgetItem(UserType), m_parent(parent) { m_name = name; m_width = w; m_height = h; @@ -24,15 +20,9 @@ wProgramItem::wProgramItem(const QString &pRoot, const QString &name, int w, int m_orgName = m_name; m_pWnd = pWnd; init(); - emit sigEditProgram(); - } -wProgramItem::wProgramItem(const QString &pRoot, const QJsonObject &json, LoQTreeWidget *parent,QWidget *pWnd) : - QObject(parent), - QTreeWidgetItem(UserType), - m_parent(parent) -{ +ProgItem::ProgItem(const QString &pRoot, const QJsonObject &json, LoQTreeWidget *parent,QWidget *pWnd) : QObject(parent), QTreeWidgetItem(UserType), m_parent(parent) { m_name = json["name"].toString(); m_width = json["resolution"]["w"].toInt(); m_height = json["resolution"]["h"].toInt(); @@ -45,11 +35,8 @@ wProgramItem::wProgramItem(const QString &pRoot, const QJsonObject &json, LoQTre m_pWnd = pWnd; init(); } -QString wProgramItem::GetBnName() -{ - return m_bnName->text(); -} -void wProgramItem::init() + +void ProgItem::init() { auto cfg = Tools::getInstance(); setData(ENUM_PROGRAMLISTHEADERITEM_NAME, 0,m_name); @@ -79,7 +66,6 @@ QPushButton:hover { m_bnName->setCursor(QCursor(Qt::PointingHandCursor)); m_parent->setItemWidget(this, ENUM_PROGRAMLISTHEADERITEM_NAME, m_bnName); connect(m_bnName, SIGNAL(clicked()), this, SLOT(onEditProgram())); - connect(this,SIGNAL(sigEditProgram()),this, SLOT(onEditProgram())); m_bnExport = new QPushButton(); m_bnExport->setCursor(QCursor(Qt::PointingHandCursor)); m_bnExport->setToolTip(tr("ExportButtonTip")); @@ -110,13 +96,13 @@ QPushButton:hover{background-color: #cccccc;} m_parent->setItemWidget(this, ENUM_PROGRAMLISTHEADERITEM_SEND, m_bnSend); connect(m_bnSend, SIGNAL(clicked()), this, SLOT(onSendProgram())); } -void wProgramItem::refreshLable() +void ProgItem::refreshLable() { m_bnExport->setToolTip(tr("ExportButtonTip")); m_bnSend->setToolTip(tr("SendButtonTip")); } -QJsonObject wProgramItem::jRoot() +QJsonObject ProgItem::jRoot() { QJsonObject oRoot; QJsonObject oSize; @@ -130,7 +116,7 @@ QJsonObject wProgramItem::jRoot() return oRoot; } -void wProgramItem::save() { +void ProgItem::save() { QDir dRoot(mProgDir); QDir dParent(m_strSavePath); if(!dRoot.exists()) { @@ -151,7 +137,7 @@ void wProgramItem::save() { } } -void wProgramItem::del() +void ProgItem::del() { QDir dRoot(mProgDir); if(dRoot.exists()) { @@ -159,7 +145,7 @@ void wProgramItem::del() } } //设置列表项的值 -void wProgramItem::onSetProgram() +void ProgItem::onSetProgram() { auto cfg = Tools::getInstance(); m_bnName->setText(m_name); @@ -172,7 +158,7 @@ void wProgramItem::onSetProgram() save(); } -void wProgramItem::onEditProgram() { +void ProgItem::onEditProgram() { auto editor = new ProgEditorWin(m_name, m_width, m_height, m_remarks, mProgDir, m_strSavePath, gMainWin); connect(editor, &ProgEditorWin::sProgramChanged, this, [this]{ m_last = QDateTime::currentDateTime(); @@ -183,12 +169,12 @@ void wProgramItem::onEditProgram() { editor->show(); } -void wProgramItem::onUsbExportProgram(){ +void ProgItem::onUsbExportProgram(){ auto pDlg = new UsbDetectDialog(gMainWin); - connect(pDlg, &UsbDetectDialog::acceptData, this, &wProgramItem::onUsbExportProgramPro); + connect(pDlg, &UsbDetectDialog::acceptData, this, &ProgItem::onUsbExportProgramPro); pDlg->exec(); } -void wProgramItem::onUsbExportProgramPro(QString strPath, QString strPassword){ +void ProgItem::onUsbExportProgramPro(QString strPath, QString strPassword){ LoEmptyDialog * msgbox = new LoEmptyDialog(m_pWnd); QString strUsbProgramName = m_name; auto converter = new mConverter(strUsbProgramName, strPath + (strPath.endsWith('/') ? "program.zip" : "/program.zip"), strPassword, this); @@ -204,7 +190,7 @@ void wProgramItem::onUsbExportProgramPro(QString strPath, QString strPassword){ msgbox->exec(); } -void wProgramItem::onSendProgram(){ +void ProgItem::onSendProgram(){ LoEmptyDialog * msgbox = new LoEmptyDialog(m_pWnd); //转换节目 auto converter = new mConverter(m_name, "", "", this); diff --git a/LedOK/wProgramManager/progitem.h b/LedOK/wProgramManager/progitem.h new file mode 100644 index 0000000..fc58291 --- /dev/null +++ b/LedOK/wProgramManager/progitem.h @@ -0,0 +1,62 @@ +#ifndef PROGITEM_H +#define PROGITEM_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class ProgItem : public QObject, public QTreeWidgetItem{ + Q_OBJECT +public: + explicit ProgItem(const QString &pRoot, const QString &name, int w, int h, const QString & remarks, LoQTreeWidget *parent = nullptr,QWidget *pWnd=nullptr); + explicit ProgItem(const QString &pRoot, const QJsonObject &json, LoQTreeWidget *parent = nullptr,QWidget *pWnd=nullptr); + + void save(); + void del(); + QJsonObject jRoot(); + void refreshLable(); + + QString m_name; + int m_width; + int m_height; + QString m_remarks; + qint64 m_fsize; + QDateTime m_last; + QPushButton *m_bnName; + +public slots: + void onSetProgram(); + void onEditProgram(); + void onSendProgram(); + void onUsbExportProgram(); + void onUsbExportProgramPro(QString strPath,QString strPassword); + +private: + void init(); + QPushButton *m_bnExport; + QPushButton *m_bnSend; + LoQTreeWidget *m_parent; + QString m_strSavePath; + QString mProgDir; + QString m_orgName; + QWidget *m_pWnd=nullptr; +}; +enum ENUM_PROGRAMLISTHEADERITEM +{ + ENUM_PROGRAMLISTHEADERITEM_CHECK=0, + ENUM_PROGRAMLISTHEADERITEM_NAME, + ENUM_PROGRAMLISTHEADERITEM_RESOLUTION, + ENUM_PROGRAMLISTHEADERITEM_SIZE, + ENUM_PROGRAMLISTHEADERITEM_LASTTIME, + ENUM_PROGRAMLISTHEADERITEM_USB_EXPORT, + ENUM_PROGRAMLISTHEADERITEM_SEND, + ENUM_PROGRAMLISTHEADERITEM_END +}; + +#endif // PROGITEM_H diff --git a/LedOK/wProgramManager/wnewprogram.cpp b/LedOK/wProgramManager/wnewprogram.cpp deleted file mode 100644 index 1d126d5..0000000 --- a/LedOK/wProgramManager/wnewprogram.cpp +++ /dev/null @@ -1,42 +0,0 @@ -#include "wnewprogram.h" -#include "ui_wnewprogram.h" - -wNewProgram::wNewProgram(QWidget *parent) : - BaseDlg(parent), - ui(new Ui::wNewProgram) -{ - setAttribute(Qt::WA_DeleteOnClose); - ui->setupUi(this); - //ui->pName->setText(tr("New") + QDateTime::currentDateTime().toString("yyyyMMddhhmmsszzz")); - ui->pName->setText(QDateTime::currentDateTime().toString("yyyyMMddhhmmsszzz")); - ui->pWidth->setValue(512); - ui->pHeight->setValue(512); - ui->pRemarks->setText(""); - connect(this, SIGNAL(accepted()), this, SLOT(onAccepted())); -} - -wNewProgram::wNewProgram(QString name, QSize res, QString remarks, QWidget *parent, bool lockName) : - BaseDlg(parent), - ui(new Ui::wNewProgram) -{ - setAttribute(Qt::WA_DeleteOnClose); - ui->setupUi(this); - ui->pName->setText(name); - ui->pName->setDisabled(lockName); - ui->pWidth->setValue(res.width()); - ui->pHeight->setValue(res.height()); - ui->pRemarks->setText(remarks); - connect(this, SIGNAL(accepted()), this, SLOT(onAccepted())); -} - -wNewProgram::~wNewProgram() -{ - delete ui; -} - -void wNewProgram::onAccepted() -{ - emit sigAcceptData(ui->pName->text(), - QSize(ui->pWidth->value(), ui->pHeight->value()), - ui->pRemarks->document()->toPlainText()); -} diff --git a/LedOK/wProgramManager/wnewprogram.h b/LedOK/wProgramManager/wnewprogram.h deleted file mode 100644 index df0946d..0000000 --- a/LedOK/wProgramManager/wnewprogram.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef WNEWPROGRAM_H -#define WNEWPROGRAM_H - -#include -#include - -namespace Ui { -class wNewProgram; -} - -class wNewProgram : public BaseDlg -{ - Q_OBJECT - -public: - explicit wNewProgram(QWidget *parent = nullptr); - wNewProgram(QString name, QSize res, QString remarks, QWidget *parent = nullptr, bool lockName = false); - ~wNewProgram(); - -signals: - void sigAcceptData(QString name, QSize res, QString remarks); - -protected slots: - void onAccepted(); - -private: - Ui::wNewProgram *ui; -}; - -#endif // WNEWPROGRAM_H diff --git a/LedOK/wProgramManager/wnewprogram.ui b/LedOK/wProgramManager/wnewprogram.ui deleted file mode 100644 index 89cdcf2..0000000 --- a/LedOK/wProgramManager/wnewprogram.ui +++ /dev/null @@ -1,415 +0,0 @@ - - - wNewProgram - - - - 0 - 0 - 434 - 236 - - - - Dialog - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - true - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - 0 - - - - - - 0 - 0 - - - - Solution Information - - - Qt::AlignCenter - - - - - - - - 31 - 16777215 - - - - X - - - - - - - - - border-top: 1.5px solid gray; - - - Qt::Horizontal - - - - - - - - - Qt::Horizontal - - - QSizePolicy::Expanding - - - - 1 - 20 - - - - - - - - 6 - - - - - - - Solution Name - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 20 - 20 - - - - - - - - - 240 - 0 - - - - - 300 - 16777215 - - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 40 - 20 - - - - - - - - - - 12 - - - - - Resolution - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 20 - 20 - - - - - - - - Width - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - 99999 - - - - - - - Height - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - 99999 - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 40 - 20 - - - - - - - - - - - - Remarks - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - - - - - - 240 - 0 - - - - - 240 - 16777215 - - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 40 - 20 - - - - - - - - - - - - Qt::Horizontal - - - QSizePolicy::Expanding - - - - 1 - 20 - - - - - - - - - - border-top: 1px solid gray; - - - Qt::Horizontal - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - OK - - - - - - - Cancel - - - - - - - - - - - - - - bnOK - clicked() - wNewProgram - accept() - - - 307 - 288 - - - 199 - 149 - - - - - bnCancel - clicked() - wNewProgram - reject() - - - 388 - 288 - - - 199 - 149 - - - - - pushButton - clicked() - wNewProgram - close() - - - 407 - 22 - - - 216 - 117 - - - - - diff --git a/LedOK/wProgramManager/wprogramitem.h b/LedOK/wProgramManager/wprogramitem.h deleted file mode 100644 index 79ad7db..0000000 --- a/LedOK/wProgramManager/wprogramitem.h +++ /dev/null @@ -1,90 +0,0 @@ -#ifndef WPROGRAMITEM_H -#define WPROGRAMITEM_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -class wProgramItem : public QObject, public QTreeWidgetItem{ - Q_OBJECT - Q_PROPERTY(QString name MEMBER m_name READ name WRITE setName NOTIFY nameChanged ) - Q_PROPERTY(int width MEMBER m_width READ width WRITE setWidth NOTIFY widthChanged ) - Q_PROPERTY(int height MEMBER m_height READ height WRITE setHeight NOTIFY heightChanged ) - Q_PROPERTY(QString remarks MEMBER m_remarks READ remarks WRITE setRemarks NOTIFY remarksChanged) - Q_PROPERTY(int fsize MEMBER m_fsize READ fsize WRITE setFsize NOTIFY fsizeChanged ) - Q_PROPERTY(QDateTime last MEMBER m_last READ last WRITE setLast NOTIFY lastChanged ) - -public: - explicit wProgramItem(const QString &pRoot, const QString &name, int w, int h, const QString & remarks, LoQTreeWidget *parent = nullptr,QWidget *pWnd=nullptr); - explicit wProgramItem(const QString &pRoot, const QJsonObject &json, LoQTreeWidget *parent = nullptr,QWidget *pWnd=nullptr); - - void save(); - void del(); - QJsonObject jRoot(); - void refreshLable(); - QString name() const { return m_name; } - int width() const { return m_width; } - int height() const { return m_height; } - QString remarks() const { return m_remarks; } - qint64 fsize() const { return m_fsize; } - QDateTime last() const { return m_last; } - void setName(const QString &s) { m_name = s; } - void setWidth(int w) { m_width = w; } - void setHeight(int h) { m_height = h; } - void setRemarks(const QString &s) { m_remarks = s; } - void setFsize(qint64 n) { m_fsize = n; } - void setLast(const QDateTime &s) { m_last = s; } - QString GetBnName(); - -signals: - void nameChanged(const QString &); - void widthChanged(int); - void heightChanged(int); - void remarksChanged(const QString &); - void fsizeChanged(quint64); - void lastChanged(const QDateTime &); - void sigEditProgram(); - -protected slots: - void onSetProgram(); - void onEditProgram(); - void onSendProgram(); - void onUsbExportProgram(); - void onUsbExportProgramPro(QString strPath,QString strPassword); - -private: - void init(); - QPushButton *m_bnExport; - QPushButton *m_bnSend; - QString m_name; - int m_width; - int m_height; - QString m_remarks; - qint64 m_fsize; - QDateTime m_last; - LoQTreeWidget *m_parent; - QPushButton *m_bnName; - QString m_strSavePath; - QString mProgDir; - QString m_orgName; - QWidget *m_pWnd=nullptr; -}; -enum ENUM_PROGRAMLISTHEADERITEM -{ - ENUM_PROGRAMLISTHEADERITEM_CHECK=0, - ENUM_PROGRAMLISTHEADERITEM_NAME, - ENUM_PROGRAMLISTHEADERITEM_RESOLUTION, - ENUM_PROGRAMLISTHEADERITEM_SIZE, - ENUM_PROGRAMLISTHEADERITEM_LASTTIME, - ENUM_PROGRAMLISTHEADERITEM_USB_EXPORT, - ENUM_PROGRAMLISTHEADERITEM_SEND, - ENUM_PROGRAMLISTHEADERITEM_END -}; - -#endif // WPROGRAMITEM_H