#include "mdevicemanager.h" #include "ui_mdevicemanager.h" #include "communication/network.h" #include #include #include #include //#include #include //设备管理响应页面 mDeviceManager::mDeviceManager(QWidget *parent) : QWidget(parent), ui(new Ui::mDeviceManager) { setAttribute(Qt::WA_DeleteOnClose); ui->setupUi(this); pNetComm = new NetComm(this); p_globaNetComm=pNetComm; QStyledItemDelegate* itemDelegate = new QStyledItemDelegate(); m_headerItem = new QTreeWidgetItem(); ui->label_2->setVisible(false); ui->label_4->setVisible(false); ui->label_5->setVisible(false); ui->label_5->setVisible(false); ui->label_6->setVisible(false); ui->label_7->setVisible(false); ui->label_8->setVisible(false); ui->label_9->setVisible(false); ui->label_10->setVisible(false); ui->label_11->setVisible(false); ui->nDeviceNumOnline->setVisible(false); ui->nDeviceNumUnlogin->setVisible(false); ui->nDeviceNumOffline->setVisible(false); QAction *search = new QAction(ui->txtSearch); search->setIcon(QIcon(":/res/ProgramManager/bnSearch.png")); ui->txtSearch->addAction(search, QLineEdit::LeadingPosition); ui->txtSearch->setClearButtonEnabled(true); ui->txtSearch->setProperty("ssType", "progManageTool"); ui->txtSearch->setProperty("ssName", "searchProg"); //qss中使用,设置按钮(刷新,指定ip)的样式 ui->bnFlashArea ->setProperty("ssType", tr("devManager")); ui->bnFlashArea ->setProperty("ssName", tr("devFlash")); ui->bnFlashArrow->setProperty("ssType", tr("devManager")); ui->bnFlashArrow->setProperty("ssName", tr("devFlashSpeciallyIP")); itemDelegate->setObjectName(tr("bnFlashArrowItem")); ui->bnFlashArrow->setItemDelegate(itemDelegate); //ui->bnFlashArrow->activated() refreshLable(); m_headerItem->setTextAlignment(1, Qt::AlignHCenter | Qt::AlignVCenter); for(int i=2; isetTextAlignment(i, Qt::AlignCenter); } // ui->wDeviceList->setProperty("ssType", "Toplist"); ui->wDeviceList->setHeaderItem(m_headerItem); ui->wDeviceList->header()->setSectionResizeMode(ENUM_DEVICEHEADE_CHECK, QHeaderView::Fixed); ui->wDeviceList->header()->setSectionResizeMode(ENUM_DEVICEHEADE_ONLINE, QHeaderView::Fixed); ui->wDeviceList->header()->setSectionResizeMode(ENUM_DEVICEHEADE_SCREEN_ID, QHeaderView::Stretch); ui->wDeviceList->header()->setSectionResizeMode(ENUM_DEVICEHEADE_SCREEN_IP, QHeaderView::Stretch); ui->wDeviceList->header()->setSectionResizeMode(ENUM_DEVICEHEADE_SCREEN_SIZE, QHeaderView::Stretch); ui->wDeviceList->header()->setSectionResizeMode(ENUM_DEVICEHEADE_REMARK_NAME, QHeaderView::Stretch); ui->wDeviceList->header()->setSectionResizeMode(ENUM_DEVICEHEADE_BRIGHTNESS, QHeaderView::Stretch); ui->wDeviceList->header()->setSectionResizeMode(ENUM_DEVICEHEADE_POWER, QHeaderView::Stretch); ui->wDeviceList->header()->setSectionResizeMode(ENUM_DEVICEHEADE_PASSWORD, QHeaderView::Fixed); ui->wDeviceList->header()->setSectionResizeMode(ENUM_DEVICEHEADE_MORE_INFO, QHeaderView::Fixed); ui->wDeviceList->header()->setSectionResizeMode(ENUM_DEVICEHEADE_PIC_READBACK, QHeaderView::Fixed); ui->wDeviceList->header()->setStretchLastSection(false); ui->wDeviceList->setColumnWidth(ENUM_DEVICEHEADE_CHECK, 62); ui->wDeviceList->setColumnWidth(ENUM_DEVICEHEADE_ONLINE, 52); ui->wDeviceList->setColumnWidth(ENUM_DEVICEHEADE_PASSWORD, 72); ui->wDeviceList->setColumnWidth(ENUM_DEVICEHEADE_MORE_INFO, 72); ui->wDeviceList->setColumnWidth(ENUM_DEVICEHEADE_PIC_READBACK, 72); // connect(ui->bnFlashArea, SIGNAL(clicked()), pNetComm, SLOT(RestoreLedCardIpByUdpCmd())); connect(ui->bnFlashArea, SIGNAL(clicked()), this, SLOT(OnRefreshButtonPro())); connect(ui->bnFlashArea, SIGNAL(clicked()), pNetComm, SLOT(CheckControllersInLanByUdp2222Cmd())); connect(ui->bnFlashArrow,SIGNAL(activated(int)),this,SLOT(onSpecialIpPro())); //ui->bnFlashArrow->currentIndexChanged(1); /// ui->bnFlashArrow->activated() connect(ui->wDeviceList, SIGNAL(sigCheckStateChanged(int)), this, SLOT(onCheckStateChanged(int))); // connect(ui->wDeviceList, SIGNAL(itemSelectionChanged()), this, SLOT(onSelectionChanged())); // ui->wDeviceList->setSelectionBehavior(QAbstractItemView::SelectItems); ui->wDeviceList->setSelectionMode(QAbstractItemView::SingleSelection); //ui->wDeviceList->setSelectionModel(QAbstractItemView::SingleSelection); //连接信号和设备管理界面槽行数 connect(pNetComm,SIGNAL(addLedCard(LedCard *)),this,SLOT(onAddLedCard(LedCard *))); connect(pNetComm,SIGNAL(ClearHeartbeatFlagByUdp(LedCard *)),this,SLOT(onClearHeartbeatFlagByUdp(LedCard *))); // connect(pNetComm,SIGNAL(LedCardChanged(LedCard *)),this,SLOT(onLedCardChanged(LedCard *))); connect(pNetComm,SIGNAL(sigwDeviceItemHttpPost(LedCard *)),this,SLOT(onsigwDeviceItemHttpPost(LedCard *))); connect(ui->txtSearch,SIGNAL(textChanged(const QString &)),this,SLOT(FilterProgram(const QString &))); connect(this,SIGNAL(sigShowDevicesInfoOrControlWidget(int)),this,SLOT(ShowDevicesInfoOrControlWidget(int))); // connect(this,SIGNAL(sigShowDevicesInfoOrControlWidget(int)),this,SLOT(ShowDevicesInfoOrControlWidget(int))); //开始轮训查找局域网内的控制卡 pNetComm->StartUpdCheck(); ui->wDeviceList->hideColumn(0); ui->wDeviceList->HideHeaderCheckBox(true); } mDeviceManager::~mDeviceManager() { pNetComm->StopAllCheck(); delete pNetComm; delete ui; } #include int mDeviceManager::GetScreenWidth() { QDesktopWidget* desktopWidget = QApplication::desktop(); //获取可用桌面大小 // QRect deskRect = desktopWidget->availableGeometry(); //获取设备屏幕大小 //QRect screenRect = desktopWidget->screenGeometry();QGuiApplication::screens(); // int iScreenNum=desktopWidget->screenNumber(); // QList tempScreen=QGuiApplication::screens(); // int ireturnwidth=3840; // for(int i=0;iscreenGeometry(); // } // const QRect screenGeometry(const QWidget *widget) const; // const QRect availableGeometry(const QWidget *widget) const; QRect screenRect = desktopWidget->screenGeometry(); qDebug()<<"*********分辨率********"<screenCount(); } void mDeviceManager::ShowDevicesInfoOrControlWidget(int index) { int iDeviceListWidth=340; m_intIndexFlagOfInfoOrControl=index; if(index==ENUM_MAIN_TOOL_DEVICESMANAGER)//设备信息列表页面 { ui->wDeviceList->hideColumn(0); ui->wDeviceList->HideHeaderCheckBox(true); if(m_wDeviceSetting!=nullptr) { for(int j=ENUM_DEVICEHEADE_SCREEN_SIZE;jwDeviceList->showColumn(j); int iParentWidgetWidth=parentWidget()->width(); ui->wDeviceList->resize(iParentWidgetWidth,ui->wDeviceList->size().height()); ui->wDeviceList->setMaximumWidth(GetScreenWidth()); m_wDeviceSetting->hide(); m_pDevicesControlWidget->hide(); } } else if(index==ENUM_MAIN_TOOL_DEVICESCONTROL)//终端控制页面 { ui->wDeviceList->showColumn(0); ui->wDeviceList->HideHeaderCheckBox(false); if(m_wDeviceSetting==nullptr) { m_wDeviceSetting = new mDeviceSetting(this); m_wDeviceSetting->setFixedHeight(120); m_wDeviceSetting->setStyleSheet("background-color: rgba(255,255,255,0.5)"); for(int j=ENUM_DEVICEHEADE_SCREEN_SIZE;jwDeviceList->hideColumn(j); ui->verticalLayout_6->addWidget(m_wDeviceSetting); GetSelectDeviceNum(); m_pDevicesControlWidget=new DevicesControllWidget(this,&SelectedLedCardList); ui->verticalLayout_6->addWidget(m_pDevicesControlWidget); m_pDevicesControlWidget->setStyleSheet("background-color: rgba(255,255,255,0.5)"); // m_pDevicesControlWidget->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Expanding); // m_wDeviceSetting->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Expanding); ui->wDeviceList->resize(iDeviceListWidth,ui->wDeviceList->size().height()); ui->wDeviceList->setMaximumWidth(iDeviceListWidth); } else { m_wDeviceSetting->setFixedHeight(120); for(int j=ENUM_DEVICEHEADE_SCREEN_SIZE;jwDeviceList->hideColumn(j); ui->wDeviceList->resize(iDeviceListWidth,ui->wDeviceList->size().height()); ui->wDeviceList->setMaximumWidth(iDeviceListWidth); // m_pDevicesControlWidget->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Expanding); // m_wDeviceSetting->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Expanding); m_wDeviceSetting->show(); m_pDevicesControlWidget->show(); } GetSelectDeviceNum(); emit sigSelectedDeviceList(&SelectedLedCardList); } int cnt = ui->wDeviceList->topLevelItemCount(); if(cnt>0)//切换到终点管理页面是刷新列表中控制卡的状态参数 for(int i=0; i(ui->wDeviceList->topLevelItem(i))->SetMainTabWidgetIndex(m_intIndexFlagOfInfoOrControl); } } //基类虚函数,子类重绘函数 void mDeviceManager::paintEvent(QPaintEvent *event) { Q_UNUSED(event); QStyleOption opt; opt.init(this); QPainter p(this); style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this); } //切换语言,实时刷新翻译标签 void mDeviceManager::refreshLable() { ui->bnFlashArea->setText(tr("Refresh","Refresh")); ui->bnFlashArrow->setItemText(0,tr("Specify IP")); ui->label_5->setText(tr("Online")); ui->label_3->setText(tr("All")); ui->label_10->setText(tr("Unlogin")); ui->label_11->setText(tr("Offline")); m_headerItem->setData(ENUM_DEVICEHEADE_CHECK, 0, ""); m_headerItem->setData(ENUM_DEVICEHEADE_ONLINE, 0, tr("Online")); m_headerItem->setData(ENUM_DEVICEHEADE_SCREEN_ID, 0, tr("Screen ID")); m_headerItem->setData(ENUM_DEVICEHEADE_SCREEN_IP, 0, tr("Screen IP")); m_headerItem->setData(ENUM_DEVICEHEADE_SCREEN_SIZE, 0, tr("Screen Size")); m_headerItem->setData(ENUM_DEVICEHEADE_REMARK_NAME, 0, tr("Remark Name")); m_headerItem->setData(ENUM_DEVICEHEADE_PIC_READBACK, 0, tr("readback pic")); m_headerItem->setData(ENUM_DEVICEHEADE_BRIGHTNESS, 0, tr("Cur Brightness")); m_headerItem->setData(ENUM_DEVICEHEADE_POWER, 0, tr("Power Status")); m_headerItem->setData(ENUM_DEVICEHEADE_PASSWORD, 0, tr("Security")); m_headerItem->setData(ENUM_DEVICEHEADE_MORE_INFO, 0, tr("More Info")); for(int i=0;irefreshLable(); } if(m_wDeviceSetting!=nullptr) { m_wDeviceSetting->refreshLable(); } emit sigChangeLanguage(); } void mDeviceManager::onClearHeartbeatFlagByUdp(LedCard *p) { int cnt = ui->wDeviceList->topLevelItemCount(); for(int i=0; i(ui->wDeviceList->topLevelItem(i))->GetLedCardId(); if(strTempCardId == p->m_strCardId) { static_cast(ui->wDeviceList->topLevelItem(i))->onClearHeartbeatFlagByUdp(); break; } } } void mDeviceManager::OnStopAllItemPostHeartBeat(bool b) { int cnt = ui->wDeviceList->topLevelItemCount(); if(cnt>0 && b==true)//切换到终点管理页面是刷新列表中控制卡的状态参数 for(int i=0; i(ui->wDeviceList->topLevelItem(i))->OnStopAllItemPostHeartBeat(b); } OnRefreshDevicesListStatusInfo(); } void mDeviceManager::onAddLedCard(LedCard *p) { qDebug() << " SLOT onAddLedCard FUNC:" << p->m_strCardId; int iExistFlg=0; int cnt = ui->wDeviceList->topLevelItemCount(); for(int i=0; i(ui->wDeviceList->topLevelItem(i))->GetLedCardId(); if(strTempCardId == p->m_strCardId) { iExistFlg=1; static_cast(ui->wDeviceList->topLevelItem(i))->ChangeHttpGetResponsePro(p); break; } } if(iExistFlg==0) { m_pwDeviceItemList.append(new wDevicesItem( p, ui->wDeviceList,this)); ui->nDeviceNum->setValue(ui->wDeviceList->topLevelItemCount()); } } void mDeviceManager::onsigwDeviceItemHttpPost(LedCard *p) { qDebug() << " SLOT onsigwDeviceItemHttpPost FUNC:" << p->m_strCardId; int cnt = ui->wDeviceList->topLevelItemCount(); for(int i=0; i(ui->wDeviceList->topLevelItem(i))->GetLedCardId(); if(strTempCardId == p->m_strCardId) { static_cast(ui->wDeviceList->topLevelItem(i))->DeviceItemHttpPost(); break; } } } void mDeviceManager::OnRefreshDevicesListStatusInfo() { int cnt = ui->wDeviceList->topLevelItemCount(); for(int i=0; i(ui->wDeviceList->topLevelItem(i))->DeviceItemHttpPost(); } } void mDeviceManager::OnRefreshButtonPro() { pNetComm->StopUpdCheck(); pNetComm->ClearAllLedcardList(); ui->wDeviceList->onCheckAll(false); ui->wDeviceList->clear(); ui->nDeviceNum->setValue(0); m_pwDeviceItemList.clear(); pNetComm->StartUpdCheck(); } //void mDeviceManager::onLedCardChanged(LedCard * p) //{ // int cnt = ui->wDeviceList->topLevelItemCount(); // QStringList selectProgramlist; // for(int i=0; i(ui->wDeviceList->topLevelItem(i))->GetLedCardId(); // if(strTempCardId == p->m_strCardId) { // static_cast(ui->wDeviceList->topLevelItem(i))->ChangeHttpGetResponsePro(p); // break; // } // } // qDebug() << " SLOT onLedCardChanged FUNC:" << p->m_strCardId; //} void mDeviceManager::onSpecialIpPro() { SpecialDlg *pDlg =new SpecialDlg(this,this->pNetComm); pNetComm->OnStartUdpTimer(false); connect(pDlg, SIGNAL(sigGetSpecialIp(LedCard *)), this, SLOT(OnSpecialGetLedcardIp(LedCard *)));//显示正在保存提示对话框 pDlg->exec(); pNetComm->OnStartUdpTimer(true); } void mDeviceManager::OnSpecialGetLedcardIp(LedCard *p) { qDebug()<<"OnSpecialGetLedcardIp="<m_strCardId; int cnt = ui->wDeviceList->topLevelItemCount(); for(int i=0; i(ui->wDeviceList->topLevelItem(i))->GetLedCardId(); if(strTempCardId == p->m_strCardId) { static_cast(ui->wDeviceList->topLevelItem(i))->setCheckState(0,Qt::CheckState::Checked); break; } } } void mDeviceManager::FilterProgram(const QString &strtemp) { if (strtemp.isEmpty()) //显示全部 { for (int i = 0; i< ui->wDeviceList->topLevelItemCount(); ++i) { QTreeWidgetItem* topItem = ui->wDeviceList->topLevelItem(i); ui->wDeviceList->setRowHidden(i,ui->wDeviceList->indexFromItem(topItem->parent()),false); } } else { QList resultList = ui->wDeviceList->findItems(strtemp, Qt::MatchContains,ENUM_DEVICEHEADE_SCREEN_ID); //搜索结果 if (resultList.size() > 0) { //QMessageBox::warning(this, "Export", QString(resultList.size())); for (int i = 0; i< ui->wDeviceList->topLevelItemCount(); ++i) { QTreeWidgetItem* topItem = ui->wDeviceList->topLevelItem(i); if (resultList.contains(topItem)) ui->wDeviceList->setRowHidden(i,ui->wDeviceList->indexFromItem(topItem->parent()),false); //显示匹配的结果 else ui->wDeviceList->setRowHidden(i,ui->wDeviceList->indexFromItem(topItem->parent()),true); //隐藏不匹配的结果 } } else { //QMessageBox::warning(this, "Export", "FilterProgram"); QList resultList1 = ui->wDeviceList->findItems(strtemp, Qt::MatchContains,ENUM_DEVICEHEADE_REMARK_NAME); //搜索结果 if (resultList1.size() > 0) { //QMessageBox::warning(this, "Export", QString(resultList.size())); for (int i = 0; i< ui->wDeviceList->topLevelItemCount(); ++i) { QTreeWidgetItem* topItem = ui->wDeviceList->topLevelItem(i); if (resultList1.contains(topItem)) ui->wDeviceList->setRowHidden(i,ui->wDeviceList->indexFromItem(topItem->parent()),false); //显示匹配的结果 else ui->wDeviceList->setRowHidden(i,ui->wDeviceList->indexFromItem(topItem->parent()),true); //隐藏不匹配的结果 } } else { QList resultList2 = ui->wDeviceList->findItems(strtemp, Qt::MatchContains,ENUM_DEVICEHEADE_SCREEN_IP); //搜索结果 if (resultList2.size() > 0) { //QMessageBox::warning(this, "Export", QString(resultList.size())); for (int i = 0; i< ui->wDeviceList->topLevelItemCount(); ++i) { QTreeWidgetItem* topItem = ui->wDeviceList->topLevelItem(i); if (resultList2.contains(topItem)) ui->wDeviceList->setRowHidden(i,ui->wDeviceList->indexFromItem(topItem->parent()),false); //显示匹配的结果 else ui->wDeviceList->setRowHidden(i,ui->wDeviceList->indexFromItem(topItem->parent()),true); //隐藏不匹配的结果 } } else { for (int i = 0; i< ui->wDeviceList->topLevelItemCount(); ++i) { QTreeWidgetItem* topItem = ui->wDeviceList->topLevelItem(i); ui->wDeviceList->setRowHidden(i,ui->wDeviceList->indexFromItem(topItem->parent()),true); //隐藏不匹配的结果 } } } } } } void mDeviceManager::onSwitchControlWidget(int index) { if(m_pDevicesControlWidget!=nullptr) m_pDevicesControlWidget->SwitchControlWidget(index); } void mDeviceManager::OnControlTcpSend(int iProgramIndex) { int cnt = ui->wDeviceList->topLevelItemCount(); QList list; int iSelectCount=0; for(int i=0; iwDeviceList->topLevelItem(i)->checkState(0) == Qt::Checked) { iSelectCount++; wDevicesItem *item = static_cast(ui->wDeviceList->topLevelItem(i)); //item->HttpPostByTypeJsonObject(json); item->OnControlTcpSend(iProgramIndex); //QString strCardId=item->GetLedCardId(); // m_pDevicesControlWidget->OnOutputInfo(strCardId+":"+tr("Anycast")+"->"+tr("Success")); } } } void mDeviceManager::OnControlSendJson(QJsonObject &json,QString strFanYi) { int cnt = ui->wDeviceList->topLevelItemCount(); QList list; int iSelectCount=0; for(int i=0; iwDeviceList->topLevelItem(i)->checkState(0) == Qt::Checked) { iSelectCount++; wDevicesItem *item = static_cast(ui->wDeviceList->topLevelItem(i)); item->HttpPostByTypeJsonObject(json); QString strCardId=item->GetLedCardId(); m_pDevicesControlWidget->OnOutputInfo(strCardId+":"+tr("send")+"->"+strFanYi); } } } int mDeviceManager::GetSelectDeviceNum() { int cnt = ui->wDeviceList->topLevelItemCount(); int iSelectCount=0; SelectedLedCardList.clear(); for(int i=0; iwDeviceList->topLevelItem(i)->checkState(0) == Qt::Checked) { iSelectCount++; wDevicesItem *item = static_cast(ui->wDeviceList->topLevelItem(i)); SelectedLedCardList.append(item->GetLedCardPoint()); } } return iSelectCount; } void mDeviceManager::OnOutputInfo(QString strInfo) { if(m_intIndexFlagOfInfoOrControl==ENUM_MAIN_TOOL_DEVICESCONTROL) if(m_pDevicesControlWidget!=nullptr) m_pDevicesControlWidget->OnOutputInfo(strInfo); } void mDeviceManager::onCheckStateChanged(int f) { Q_UNUSED(f); if(m_intIndexFlagOfInfoOrControl==ENUM_MAIN_TOOL_DEVICESCONTROL) { GetSelectDeviceNum(); emit sigSelectedDeviceList(&SelectedLedCardList); } }