#include "QCameraMgrUI.h" #include #pragma execution_character_set("utf-8") QCameraMgrUI::QCameraMgrUI(QWidget *parent) : QWidget(parent) { ui.setupUi(this); connect(ui.m_pbFound, SIGNAL(clicked()), this, SLOT(onButtonClicked())); connect(ui.m_pbAddCam, SIGNAL(clicked()), this, SLOT(onButtonClicked())); connect(ui.m_pbModCam, SIGNAL(clicked()), this, SLOT(onButtonClicked())); connect(ui.m_pbDelCam, SIGNAL(clicked()), this, SLOT(onButtonClicked())); connect(ui.m_pbClose, SIGNAL(clicked()), this, SLOT(onButtonClicked())); QStringList strHeaders; strHeaders << "ID" << "显示名" << "序列号" << "类型" << "状态"; m_tableModel.setHorizontalHeaderLabels(strHeaders); ui.tableView->setModel(&m_tableModel); //ui.tableView->hideColumn(4); ui.tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); ui.tableView->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Fixed); ui.tableView->setColumnWidth(0, 20); ui.tableView->verticalHeader()->hide(); ui.tableView->setEditTriggers(QAbstractItemView::NoEditTriggers); ui.tableView->setSelectionBehavior(QAbstractItemView::SelectRows); connect(ui.tableView, SIGNAL(doubleClicked(const QModelIndex &)), this, SLOT(onDoubleClicked(const QModelIndex &))); m_pCamSetUI = new QCamSettingDlg();//相机预览 m_pCamConfigUI = new QCameraConfigUI();//相机配置 } QCameraMgrUI::~QCameraMgrUI() { if (m_pCamSetUI) { delete m_pCamSetUI; m_pCamSetUI = nullptr; } if (m_pCamConfigUI) { delete m_pCamConfigUI; m_pCamConfigUI = nullptr; } } void QCameraMgrUI::onInitCamInfo(ICoreCtrl* pCtrl) { m_pCorctl = pCtrl; onUpdateTableView(); } Q_SLOT void QCameraMgrUI::onButtonClicked() { QString strObj = sender()->objectName(); if (strObj == "m_pbFound") { } else if (strObj == "m_pbAddCam") { m_pCamConfigUI->setParent(this); //m_pCamConfigUI->setWindowIcon(QIcon(LEAPER_LOGO)); m_pCamConfigUI->setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint); m_pCamConfigUI->setWindowModality(Qt::ApplicationModal); m_pCamConfigUI->setAttribute(Qt::WA_ShowModal, true); if (m_pCamConfigUI->exec() == QDialog::Accepted) { tagCamInfo info = m_pCamConfigUI->getNewCamInfo(); TP_CAMERA_OPTION camOpt; camOpt.id = 3; camOpt.folder = info.loadPath; camOpt.showName = info.showName; camOpt.uniqueName = info.serialNo; camOpt.deviceType = info.nType; m_pCorctl->IAddCamera(info.serialNo, camOpt); } } else if (strObj == "m_pbModCam") { int row = ui.tableView->currentIndex().row(); if (row < 0) { QMessageBox::information(this, tr("提示"), "请选择要修改的相机"); return; } QModelIndex index = m_tableModel.index(row, 2);//选中行第一列的内容 QVariant data = m_tableModel.data(index); QString strSerial = data.toString(); m_pCamSetUI->setParent(this); //m_pCamSetUI->setWindowIcon(QIcon(LEAPER_LOGO)); m_pCamSetUI->setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint); m_pCamSetUI->setWindowModality(Qt::ApplicationModal); m_pCamSetUI->setAttribute(Qt::WA_ShowModal, true); m_pCamSetUI->setCoreCtrlPtr(m_pCorctl); m_pCamSetUI->onInitWidget(strSerial); m_pCamSetUI->show(); } else if (strObj == "m_pbDelCam") { int row = ui.tableView->currentIndex().row(); if (row < 0) { QMessageBox::information(this, tr("提示"), "请选择要移除的相机"); return; } QModelIndex index = m_tableModel.index(row, 2);//选中行第一列的内容 QVariant data = m_tableModel.data(index); QString key = data.toString(); if (key.isEmpty()) { QMessageBox::information(this, tr("提示"), "请选择要移除的相机"); return; } QMessageBox info(this); //info.setWindowIcon(QIcon(LEAPER_LOGO)); info.setWindowTitle(QObject::tr("警告")); info.setText(QObject::tr("你确定要移除相机 %1?").arg(key)); info.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); info.setButtonText(QMessageBox::Ok, QObject::tr("确定")); info.setButtonText(QMessageBox::Cancel, QObject::tr("取消")); if (info.exec() == QMessageBox::Ok) { m_pCorctl->IDelCamera(key); onUpdateTableView(); } } else if (strObj == "m_pbClose") { close(); } } void QCameraMgrUI::onUpdateTableView() { //移除所有 while (m_tableModel.rowCount()) { m_tableModel.removeRow(0); } QStringList lst = m_pCorctl->ICameraKeys(); foreach(QString var, lst) { TP_CAMERA_OPTION camOpt; m_pCorctl->IGetCameraOption(var, camOpt); int nID = camOpt.id; QString strShowName = camOpt.showName; QString strSerial = camOpt.uniqueName; QString strType = gCameraNamesMap.value((emTpDeviceType)camOpt.deviceType); QString strState = gCameraStatusMap.value(camOpt.status); QList listItem; listItem.append(new QStandardItem(QString("%1").arg(nID))); listItem.append(new QStandardItem(QString("%1").arg(strShowName))); listItem.append(new QStandardItem(QString("%1").arg(strSerial))); listItem.append(new QStandardItem(QString("%1").arg(strType))); listItem.append(new QStandardItem(QString("%1").arg(strState))); m_tableModel.appendRow(listItem); } // QMap map = QStationMgr::instance()->getConnInfos(); // for (QMap::iterator it = map.begin(); it != map.end(); ++it) // { // QString strKey = it.key(); // QList listItem; // listItem.append(new QStandardItem(it.key())); // listItem.append(new QStandardItem((*it).hostName)); // listItem.append(new QStandardItem((*it).hostSerial)); // listItem.append(new QStandardItem((*it).hostIP)); // listItem.append(new QStandardItem((*it).hostMac)); // QString strVersion = lpGlobalData::instance()->m_CamVersionMap[strKey]; // listItem.append(new QStandardItem(strVersion)); // // QStandardItem *pStateItem = new QStandardItem((*it).bConnect == false ? "未连接" : "已连接"); // // listItem.append(pStateItem); // // if ((*it).bConnect == true) { // // pStateItem->setBackground(QBrush(Qt::red, Qt::NoBrush)); // // } // // else { // // pStateItem->setBackground(QBrush(Qt::red, Qt::SolidPattern)); // // } // m_tableModel.appendRow(listItem); // } } void QCameraMgrUI::changeEvent(QEvent *evt) { if (evt->type() == QEvent::LanguageChange) { ui.retranslateUi(this); } } Q_SLOT void QCameraMgrUI::onDoubleClicked(const QModelIndex &index) { QString strSerial = m_tableModel.index(index.row(), 2).data().toString(); TP_CAMERA_OPTION camOpt; m_pCorctl->IGetCameraOption(strSerial, camOpt); if (m_pCamSetUI) { m_pCamSetUI->setParent(this); //m_pCamSetUI->setWindowIcon(QIcon(LEAPER_LOGO)); m_pCamSetUI->setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint); m_pCamSetUI->setWindowModality(Qt::ApplicationModal); m_pCamSetUI->setAttribute(Qt::WA_ShowModal, true); m_pCamSetUI->setCoreCtrlPtr(m_pCorctl); m_pCamSetUI->onModCam(strSerial); m_pCamSetUI->show(); } } Q_SLOT void QCameraMgrUI::onShowImage(QString serial, QImage img) { if (m_pCamSetUI) { m_pCamSetUI->onShowImage(serial, img); } }