You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
newValue/tpvs17/lpMain/QCameraMgrUI.cpp

227 lines
7.0 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#include "QCameraMgrUI.h"
#include <QMessageBox>
#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<QStandardItem*> 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<QString, ServerInfo> map = QStationMgr::instance()->getConnInfos();
// for (QMap<QString, ServerInfo>::iterator it = map.begin(); it != map.end(); ++it)
// {
// QString strKey = it.key();
// QList<QStandardItem*> 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);
}
}