#include "configwidget.h" #include "ui_configwidget.h" #include #include #include #include #include #include #include #define LOCAL_TOPIC "同轴采集服务配置" ConfigWidget::ConfigWidget(int skintype, QWidget *parent) : QWidget(parent), ui(new Ui::ConfigWidget) { ui->setupUi(this); DoSetStyleSheet(skintype); QListView *view = new QListView(); view->window()->setWindowFlags(Qt::Popup|Qt::FramelessWindowHint|Qt::NoDropShadowWindowHint); view->window()->setAttribute(Qt::WA_TranslucentBackground); ui->comboBox->addItem("是"); ui->comboBox->addItem("否"); ui->comboBox->setStyle(QStyleFactory::create("Windows")); ui->comboBox->setView(view); ui->comboBox->installEventFilter(this); ui->comboBox->setCurrentIndex(0); QListView *view1 = new QListView(); view1->window()->setWindowFlags(Qt::Popup|Qt::FramelessWindowHint|Qt::NoDropShadowWindowHint); view1->window()->setAttribute(Qt::WA_TranslucentBackground); ui->comboBox_1->setStyle(QStyleFactory::create("Windows")); ui->comboBox_1->setView(view1); ui->comboBox_1->installEventFilter(this); QListView *view2 = new QListView(); view2->window()->setWindowFlags(Qt::Popup|Qt::FramelessWindowHint|Qt::NoDropShadowWindowHint); view2->window()->setAttribute(Qt::WA_TranslucentBackground); ui->comboBox_2->setStyle(QStyleFactory::create("Windows")); ui->comboBox_2->setView(view2); ui->comboBox_2->installEventFilter(this); QListView *view3 = new QListView(); view3->window()->setWindowFlags(Qt::Popup|Qt::FramelessWindowHint|Qt::NoDropShadowWindowHint); view3->window()->setAttribute(Qt::WA_TranslucentBackground); ui->comboBox_3->setStyle(QStyleFactory::create("Windows")); ui->comboBox_3->setView(view3); ui->comboBox_3->installEventFilter(this); QListView *view4 = new QListView(); view4->window()->setWindowFlags(Qt::Popup|Qt::FramelessWindowHint|Qt::NoDropShadowWindowHint); view4->window()->setAttribute(Qt::WA_TranslucentBackground); ui->comboBox_4->addItem("是"); ui->comboBox_4->addItem("否"); ui->comboBox_4->setStyle(QStyleFactory::create("Windows")); ui->comboBox_4->setView(view4); ui->comboBox_4->installEventFilter(this); ui->comboBox_4->setCurrentIndex(1); ui->lineEdit_monIp->setEnabled(false); ui->lineEdit_monPort->setEnabled(false); } ConfigWidget::~ConfigWidget() { delete ui; } bool ConfigWidget::eventFilter(QObject *obj, QEvent *event) { if (obj == ui->comboBox_1 ||obj == ui->comboBox_2 || obj == ui->comboBox_3 || obj == ui->comboBox_4 || obj == ui->comboBox) { if (event->type() == QEvent::MouseMove) { return true; } else { return false; } } else { // pass the event on to the parent class return ConfigWidget::eventFilter(obj, event); } } void ConfigWidget::DoSetStyleSheet(int nstyle) { QString strQssPath; if(nstyle == 0) { strQssPath = QString(":/light/lhcoaxialswitchsetinfo.qss"); } else { strQssPath = QString(":/deep/lhcoaxialswitchsetinfo.qss"); } QFile file(strQssPath); file.open(QFile::ReadOnly); QString styleSheet = QLatin1String(file.readAll()); this->setStyleSheet(styleSheet); } void ConfigWidget::InitTransInfo(int nchnid, int ntype) { for(int i = 0; i < m_dataManager.m_transDataList.size(); i++) { tMPinData &mpin = m_dataManager.m_transDataList[i]; if((mpin.nChnID == nchnid || mpin.nChnID == 0) && (mpin.nFlags == ntype || mpin.nFlags < 0)) { if(ntype == 0) { ui->comboBox_1->addItem(mpin.strDevName, mpin.nMPID); } else if(ntype == 1) { ui->comboBox_2->addItem(mpin.strDevName, mpin.nMPID); } else if(ntype == 2) { ui->comboBox_3->addItem(mpin.strDevName, mpin.nMPID); } break; } } if(ntype == 0) { ui->comboBox_1->setCurrentIndex(0); } else if(ntype == 1) { ui->comboBox_2->setCurrentIndex(0); } else if(ntype == 2) { ui->comboBox_3->setCurrentIndex(0); } } void ConfigWidget::SetTransInfo(int nmpid, int ntype) { if(ntype == 0) { int nRow = ui->comboBox_1->findData(nmpid); nRow = nRow < 0 ? 0 : nRow; ui->comboBox_1->setCurrentIndex(nRow); } else if(ntype == 1) { int nRow = ui->comboBox_2->findData(nmpid); nRow = nRow < 0 ? 0 : nRow; ui->comboBox_2->setCurrentIndex(nRow); } else if(ntype == 2) { int nRow = ui->comboBox_3->findData(nmpid); nRow = nRow < 0 ? 0 : nRow; ui->comboBox_3->setCurrentIndex(nRow); } } bool ConfigWidget::DoSave(int serviceid) { QListWidgetItem* pItem = ui->listWidget->currentItem(); if(pItem == NULL) { return false; } SaveDeviceData(pItem->data(Qt::UserRole).toInt()); m_dataManager.m_transServerIP = ui->lineEdit_TransIp->text(); m_dataManager.m_transServerPort = ui->lineEdit_TransPort->text().toInt(); m_dataManager.DoSaveServiceConfig(serviceid); return true; } void ConfigWidget::SaveDeviceData(int nMPID) { tTZConfig tzConfig; tzConfig.enable = ui->comboBox->currentIndex() == 0 ? true : false; tzConfig.enablemutilchannel = ui->comboBox_4->currentText() == 0 ? true : false; tzConfig.mpid = nMPID; tzConfig.powerofftime = ui->lineEdit_wait->text().toInt(); tzConfig.hosttransmpid = ui->comboBox_1->currentData().toInt(); tzConfig.backtransmpid = ui->comboBox_2->currentData().toInt(); tzConfig.emergencympid = ui->comboBox_3->currentData().toInt(); tzConfig.strhosttransName = ui->comboBox_1->currentText(); tzConfig.strbacktransName = ui->comboBox_2->currentText(); tzConfig.stremergencyName = ui->comboBox_3->currentText(); tzConfig.address = ui->lineEdit_monIp->text(); tzConfig.port = ui->lineEdit_monPort->text().toInt(); tzConfig.slaveid = ui->lineEdit_monAddr->text().toInt(); m_dataManager.SetDeviceConfig(nMPID, tzConfig); } void ConfigWidget::GetInfoFromDb(int serviceid) { m_dataManager.DoLoadDeviceData(); m_dataManager.DoLoadServiceConfig(serviceid); //更新列表 for(int i = 0; i < m_dataManager.m_deviceDataList.size(); i++) { tDeviceData &devData = m_dataManager.m_deviceDataList[i]; QString strText = QString("%1.%2").arg(ui->listWidget->count() + 1).arg(devData.strDevName); QListWidgetItem* item = new QListWidgetItem(strText, ui->listWidget); item->setData(Qt::UserRole, devData.nMPID); item->setTextAlignment(Qt::AlignLeft|Qt::AlignVCenter); ui->listWidget->addItem(item); } ui->listWidget->setCurrentRow(0); ui->lineEdit_TransIp->setText(m_dataManager.m_transServerIP); ui->lineEdit_TransPort->setText(QString::number(m_dataManager.m_transServerPort)); } void ConfigWidget::on_listWidget_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous) { if(previous != NULL) { int nMPID = previous->data(Qt::UserRole).toInt(); SaveDeviceData(nMPID); } if(current == NULL) { return; } qDebug() << current->text(); ui->lineEdit_monIp->setText(""); ui->lineEdit_monPort->setText(""); ui->lineEdit_monAddr->setText("1"); ui->lineEdit_wait->setText("1"); ui->comboBox->setCurrentIndex(0); ui->comboBox_4->setCurrentIndex(1); ui->comboBox_1->clear(); ui->comboBox_2->clear(); ui->comboBox_3->clear(); int nMPID = current->data(Qt::UserRole).toInt(); for(int i = 0; i < m_dataManager.m_deviceDataList.size(); i++) { tDeviceData &devData = m_dataManager.m_deviceDataList[i]; if(devData.nMPID == nMPID) { QString strAddress = devData.strMaddress; QStringList strList = strAddress.split(':'); if(strList.size() == 2) { ui->lineEdit_monIp->setText(strList.at(0)); ui->lineEdit_monPort->setText(strList.at(1)); } InitTransInfo(devData.nChnID, 0); InitTransInfo(devData.nChnID, 1); InitTransInfo(devData.nChnID, 2); tTZConfig tzConfig; m_dataManager.GetDeviceConfig(nMPID, tzConfig); if(!tzConfig.isValid()) { SetTransInfo(tzConfig.hosttransmpid, 0); SetTransInfo(tzConfig.backtransmpid, 1); SetTransInfo(tzConfig.emergencympid, 2); ui->lineEdit_monAddr->setText(QString::number(tzConfig.slaveid)); ui->lineEdit_wait->setText(QString::number(tzConfig.powerofftime)); if(tzConfig.enable) { ui->comboBox->setCurrentIndex(0); } else { ui->comboBox->setCurrentIndex(1); } if(tzConfig.enablemutilchannel) { ui->comboBox_4->setCurrentIndex(0); } else { ui->comboBox_4->setCurrentIndex(1); } } break; } } }