|
@@ -5,6 +5,8 @@
|
|
|
#include "SoundCardData.h"
|
|
|
#include "tipwidget.h"
|
|
|
|
|
|
+#include <QIntValidator>
|
|
|
+
|
|
|
|
|
|
CompareItemDialog::CompareItemDialog(QWidget *parent)
|
|
|
: DialogBase(parent)
|
|
@@ -18,12 +20,8 @@ CompareItemDialog::CompareItemDialog(QWidget *parent)
|
|
|
/* 设置标题 */
|
|
|
setTitle("对比项信息", QSize(120, 18));
|
|
|
|
|
|
- /* 连接信号和槽 */
|
|
|
- connect(ui->pBtn_add, &QPushButton::clicked, this, &CompareItemDialog::do_pBtn_add_clicked);
|
|
|
- /* 连接静音、过载、反相三个按钮的开关 */
|
|
|
- connect(ui->checkBoxMute, &QCheckBox::clicked, this, &CompareItemDialog::do_checkBox_MOP_clicked);
|
|
|
- connect(ui->checkBoxOverload, &QCheckBox::clicked, this, &CompareItemDialog::do_checkBox_MOP_clicked);
|
|
|
- connect(ui->checkBoxPhase, &QCheckBox::clicked, this, &CompareItemDialog::do_checkBox_MOP_clicked);
|
|
|
+ /* 对输入做一些限制 */
|
|
|
+ setDetectParamInputOnlyNumber();
|
|
|
|
|
|
/* 设置默认开启 */
|
|
|
ui->checkBoxMute->setChecked(true);
|
|
@@ -34,6 +32,15 @@ CompareItemDialog::CompareItemDialog(QWidget *parent)
|
|
|
ui->widget_mainRoad->setSoundCardRoadList(SoundCards.getSoundCardRoadList());
|
|
|
ui->widget_secondRoad->setSoundCardRoadList(SoundCards.getSoundCardRoadList());
|
|
|
|
|
|
+
|
|
|
+ /* 连接信号和槽 */
|
|
|
+ connect(ui->pBtn_add, &QPushButton::clicked, this, &CompareItemDialog::do_pBtn_add_clicked);
|
|
|
+ /* 连接静音、过载、反相三个按钮的开关 */
|
|
|
+ connect(ui->checkBoxMute, &QCheckBox::clicked, this, &CompareItemDialog::do_checkBox_MOP_clicked);
|
|
|
+ connect(ui->checkBoxOverload, &QCheckBox::clicked, this, &CompareItemDialog::do_checkBox_MOP_clicked);
|
|
|
+ connect(ui->checkBoxPhase, &QCheckBox::clicked, this, &CompareItemDialog::do_checkBox_MOP_clicked);
|
|
|
+
|
|
|
+
|
|
|
/* 设置样式 */
|
|
|
setQSS();
|
|
|
}
|
|
@@ -43,6 +50,63 @@ CompareItemDialog::~CompareItemDialog()
|
|
|
delete ui;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+/* 设置默认的参数 */
|
|
|
+void CompareItemDialog::setDefaultParams(const CompareItemInfo_t& item)
|
|
|
+{
|
|
|
+ m_compareItemInfo = item; // 保存对比项信息
|
|
|
+ /* 设置对比项名称 */
|
|
|
+ ui->lineEdit_compareItmName->setText(item.strName);
|
|
|
+ /* 设置对比项状态 */
|
|
|
+ ui->checkBox_enable->setChecked(item.isEnable);
|
|
|
+
|
|
|
+ /* 设置静音检测参数 */
|
|
|
+ ui->checkBoxMute->setChecked(item.paramMute.isEnable);
|
|
|
+ ui->lineEditMuteLen->setText(QString::number(item.paramMute.nLen));
|
|
|
+ ui->lineEditMuteSensibility->setText(QString::number(item.paramMute.nSensibility));
|
|
|
+ ui->lineEditMuteThreshold->setText(QString::number(item.paramMute.threshold.nThreshold));
|
|
|
+
|
|
|
+ /* 设置过载检测参数 */
|
|
|
+ ui->checkBoxOverload->setChecked(item.paramOverload.isEnable);
|
|
|
+ ui->lineEditOverloadLen->setText(QString::number(item.paramOverload.nLen));
|
|
|
+ ui->lineEditOverloadSensibility->setText(QString::number(item.paramOverload.nSensibility));
|
|
|
+ ui->lineEditOverloadThreshold->setText(QString::number(item.paramOverload.threshold.nThreshold));
|
|
|
+
|
|
|
+ /* 设置反相检测参数 */
|
|
|
+ ui->checkBoxPhase->setChecked(item.paramPhase.isEnable);
|
|
|
+ ui->lineEditPhaseLen->setText(QString::number(item.paramPhase.nLen));
|
|
|
+ ui->lineEditPhaseSensibility->setText(QString::number(item.paramPhase.nSensibility));
|
|
|
+ ui->lineEditPhaseThreshold->setText(QString::number(item.paramPhase.threshold.dThreshold));
|
|
|
+
|
|
|
+ /* 先设置主通道和第二通道 */
|
|
|
+ for(const auto& road : item.listRoads)
|
|
|
+ {
|
|
|
+ if(road.nCompareRoadNum == 1) // 主通道
|
|
|
+ {
|
|
|
+ ui->widget_mainRoad->setSoundCardRoadList(SoundCards.getSoundCardRoadList());
|
|
|
+ ui->widget_mainRoad->setDefaultParams(road);
|
|
|
+ }
|
|
|
+ else if(road.nCompareRoadNum == 2) // 第二通道
|
|
|
+ {
|
|
|
+ ui->widget_secondRoad->setSoundCardRoadList(SoundCards.getSoundCardRoadList());
|
|
|
+ ui->widget_secondRoad->setDefaultParams(road);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /* 设置其他通道 */
|
|
|
+ for(const auto& road : item.listRoads)
|
|
|
+ {
|
|
|
+ if(road.nCompareRoadNum > 2) // 其他通道
|
|
|
+ {
|
|
|
+ SingleCompareRoadWidget *pWgt = addOneRoadWidget(road.nCompareRoadNum, true);
|
|
|
+ pWgt->setSoundCardRoadList(SoundCards.getSoundCardRoadList());
|
|
|
+ pWgt->setDefaultParams(road);
|
|
|
+ m_listOtherRoadWgt.append(pWgt);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
/* 获取生成的对比项信息 */
|
|
|
CompareItemInfo_t& CompareItemDialog::getCompareItemInfo()
|
|
|
{
|
|
@@ -54,19 +118,9 @@ CompareItemInfo_t& CompareItemDialog::getCompareItemInfo()
|
|
|
/* 新增通道 */
|
|
|
void CompareItemDialog::do_pBtn_add_clicked()
|
|
|
{
|
|
|
- QVBoxLayout* pLayout = qobject_cast<QVBoxLayout*>(ui->scrollAreaWidgetContents->layout());
|
|
|
- if(pLayout)
|
|
|
- {
|
|
|
- SingleCompareRoadWidget *pWgt = new SingleCompareRoadWidget(this);
|
|
|
- connect(pWgt, &SingleCompareRoadWidget::deleted, this, &CompareItemDialog::do_CompareRoadWgtDeleted);
|
|
|
- pWgt->setIndex(m_listOtherRoadWgt.size() + 3);
|
|
|
- pWgt->setDelBtnVisible(true);
|
|
|
- /* 设置可选通道列表 */
|
|
|
- pWgt->setSoundCardRoadList(SoundCards.getSoundCardRoadList());
|
|
|
- pWgt->setStyleSheet(m_qssRecordRoad);
|
|
|
- pLayout->insertWidget(m_listOtherRoadWgt.size(), pWgt);
|
|
|
- m_listOtherRoadWgt.append(pWgt);
|
|
|
- }
|
|
|
+ /* 从3开始编号,1是主通道,2是第二通道 */
|
|
|
+ int index = m_listOtherRoadWgt.size() + 3;
|
|
|
+ addOneRoadWidget(index, true);
|
|
|
}
|
|
|
|
|
|
/* 删除通道 */
|
|
@@ -187,9 +241,53 @@ void CompareItemDialog::setMOPEditable(EDBType type, bool editable)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+/* 设置检测参数输入栏只能输入数字 */
|
|
|
+void CompareItemDialog::setDetectParamInputOnlyNumber()
|
|
|
+{
|
|
|
+ // 静音参数,只允许输入1~1000的整数
|
|
|
+ ui->lineEditMuteThreshold->setValidator(new QIntValidator(40, 84, this));
|
|
|
+ ui->lineEditMuteLen->setValidator(new QIntValidator(2, 90, this));
|
|
|
+ ui->lineEditMuteSensibility->setValidator(new QIntValidator(22, 100, this));
|
|
|
+
|
|
|
+ // 过载参数
|
|
|
+ ui->lineEditOverloadThreshold->setValidator(new QIntValidator(0, 40, this));
|
|
|
+ ui->lineEditOverloadLen->setValidator(new QIntValidator(2, 90, this));
|
|
|
+ ui->lineEditOverloadSensibility->setValidator(new QIntValidator(22, 100, this));
|
|
|
+
|
|
|
+ // 反相参数,阈值为浮点数,范围0.0~100.0
|
|
|
+ ui->lineEditPhaseThreshold->setValidator(new QDoubleValidator(0.0, 0.99, 2, this));
|
|
|
+ ui->lineEditPhaseLen->setValidator(new QIntValidator(10, 90, this));
|
|
|
+ ui->lineEditPhaseSensibility->setValidator(new QIntValidator(20, 99, this));
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+/* 新增一个通道 */
|
|
|
+SingleCompareRoadWidget* CompareItemDialog::addOneRoadWidget(int nIndex, bool bDelBtnVisible)
|
|
|
+{
|
|
|
+ QVBoxLayout* pLayout = qobject_cast<QVBoxLayout*>(ui->scrollAreaWidgetContents->layout());
|
|
|
+ if(pLayout == nullptr)
|
|
|
+ {
|
|
|
+ SPDLOG_LOGGER_ERROR(m_logger, "滚动区域内容布局未设置,无法添加通道");
|
|
|
+ return nullptr;
|
|
|
+ }
|
|
|
+ SingleCompareRoadWidget *pWgt = new SingleCompareRoadWidget(this);
|
|
|
+ connect(pWgt, &SingleCompareRoadWidget::deleted, this, &CompareItemDialog::do_CompareRoadWgtDeleted);
|
|
|
+ pWgt->setIndex(nIndex);
|
|
|
+ pWgt->setDelBtnVisible(bDelBtnVisible);
|
|
|
+ /* 设置可选通道列表 */
|
|
|
+ pWgt->setSoundCardRoadList(SoundCards.getSoundCardRoadList());
|
|
|
+ pWgt->setStyleSheet(m_qssRecordRoad);
|
|
|
+ pLayout->insertWidget(m_listOtherRoadWgt.size(), pWgt);
|
|
|
+ m_listOtherRoadWgt.append(pWgt);
|
|
|
+
|
|
|
+ return pWgt;
|
|
|
+}
|
|
|
+
|
|
|
/* 重载按下关闭按钮之前的操作 */
|
|
|
bool CompareItemDialog::isOKClicked()
|
|
|
{
|
|
|
+ /* 先取消所有的报警 */
|
|
|
+ cancelAllWarn();
|
|
|
/* 获取对比项的信息 */
|
|
|
if(!getCompareItemBaseInfo(m_compareItemInfo))
|
|
|
{
|
|
@@ -203,6 +301,10 @@ bool CompareItemDialog::isOKClicked()
|
|
|
}
|
|
|
|
|
|
/* 获取音频检测信息 */
|
|
|
+ if(!getAudioDetectInfo(m_compareItemInfo))
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
|
|
|
return true;
|
|
|
}
|
|
@@ -212,7 +314,8 @@ bool CompareItemDialog::getCompareItemBaseInfo(CompareItemInfo_t& compareItemInf
|
|
|
{
|
|
|
if(ui->lineEdit_compareItmName->text().isEmpty())
|
|
|
{
|
|
|
- TipWidget::display(TipWidget::OPERATOR_WARN, "对比项名称不能为空");
|
|
|
+ setWarn(ui->lineEdit_compareItmName, true);
|
|
|
+ TipWidget::display(TipWidget::OPERATOR_WARN, "对比项名称不能为空", this);
|
|
|
return false;
|
|
|
}
|
|
|
compareItemInfo.strName = ui->lineEdit_compareItmName->text();
|
|
@@ -227,13 +330,47 @@ bool CompareItemDialog::getCompareRoadInfo(CompareItemInfo_t& compareItemInfo)
|
|
|
compareItemInfo.listRoads.clear();
|
|
|
/* 获取主通道信息 */
|
|
|
CompareItemRoadInfo_t mainRoadInfo;
|
|
|
- mainRoadInfo.nCompareRoadNum = 1;
|
|
|
mainRoadInfo.strCompareRoadName = ui->widget_mainRoad->getRoadName();
|
|
|
+ mainRoadInfo.nCompareRoadNum = ui->widget_mainRoad->getIndex();
|
|
|
+ mainRoadInfo.isEnableRecord = ui->widget_mainRoad->isRecordEnabled();
|
|
|
+ mainRoadInfo.scRoadInfo = ui->widget_mainRoad->getSoundCardRoadInfo();
|
|
|
if(mainRoadInfo.strCompareRoadName.isEmpty())
|
|
|
{
|
|
|
- TipWidget::display(TipWidget::OPERATOR_WARN, "主通道名称不能为空");
|
|
|
+ ui->widget_mainRoad->setRoadNameWarn(true);
|
|
|
+ TipWidget::display(TipWidget::OPERATOR_WARN, "主通道名称不能为空", this);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ compareItemInfo.listRoads.append(mainRoadInfo);
|
|
|
+ /* 获取第二通道信息 */
|
|
|
+ CompareItemRoadInfo_t secondRoadInfo;
|
|
|
+ secondRoadInfo.strCompareRoadName = ui->widget_secondRoad->getRoadName();
|
|
|
+ secondRoadInfo.nCompareRoadNum = ui->widget_secondRoad->getIndex();
|
|
|
+ secondRoadInfo.isEnableRecord = ui->widget_secondRoad->isRecordEnabled();
|
|
|
+ secondRoadInfo.scRoadInfo = ui->widget_secondRoad->getSoundCardRoadInfo();
|
|
|
+ if(secondRoadInfo.strCompareRoadName.isEmpty())
|
|
|
+ {
|
|
|
+ ui->widget_secondRoad->setRoadNameWarn(true);
|
|
|
+ TipWidget::display(TipWidget::OPERATOR_WARN, "第二通道名称不能为空", this);
|
|
|
return false;
|
|
|
}
|
|
|
+ compareItemInfo.listRoads.append(secondRoadInfo);
|
|
|
+
|
|
|
+ /* 获取其他通道信息 */
|
|
|
+ for(SingleCompareRoadWidget* roadWgt : m_listOtherRoadWgt)
|
|
|
+ {
|
|
|
+ CompareItemRoadInfo_t otherRoadInfo;
|
|
|
+ otherRoadInfo.strCompareRoadName = roadWgt->getRoadName();
|
|
|
+ otherRoadInfo.nCompareRoadNum = roadWgt->getIndex();
|
|
|
+ otherRoadInfo.isEnableRecord = roadWgt->isRecordEnabled();
|
|
|
+ otherRoadInfo.scRoadInfo = roadWgt->getSoundCardRoadInfo();
|
|
|
+ if(otherRoadInfo.strCompareRoadName.isEmpty())
|
|
|
+ {
|
|
|
+ roadWgt->setRoadNameWarn(true);
|
|
|
+ TipWidget::display(TipWidget::OPERATOR_WARN, QString("第%1通道名称不能为空").arg(otherRoadInfo.nCompareRoadNum), this);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ compareItemInfo.listRoads.append(otherRoadInfo);
|
|
|
+ }
|
|
|
|
|
|
return true;
|
|
|
}
|
|
@@ -241,8 +378,37 @@ bool CompareItemDialog::getCompareRoadInfo(CompareItemInfo_t& compareItemInfo)
|
|
|
/* 获取音频检测信息 */
|
|
|
bool CompareItemDialog::getAudioDetectInfo(CompareItemInfo_t& compareItemInfo)
|
|
|
{
|
|
|
+ /* 静音检测 */
|
|
|
+ compareItemInfo.paramMute.isEnable = ui->checkBoxMute->isChecked();
|
|
|
+ compareItemInfo.paramMute.threshold.nThreshold = ui->lineEditMuteThreshold->text().toULongLong();
|
|
|
+ compareItemInfo.paramMute.nLen = ui->lineEditMuteLen->text().toInt();
|
|
|
+ compareItemInfo.paramMute.nSensibility = ui->lineEditMuteSensibility->text().toInt();
|
|
|
+
|
|
|
+ /* 过载检测 */
|
|
|
+ compareItemInfo.paramOverload.isEnable = ui->checkBoxOverload->isChecked();
|
|
|
+ compareItemInfo.paramOverload.threshold.nThreshold = ui->lineEditOverloadThreshold->text().toULongLong();
|
|
|
+ compareItemInfo.paramOverload.nLen = ui->lineEditOverloadLen->text().toInt();
|
|
|
+ compareItemInfo.paramOverload.nSensibility = ui->lineEditOverloadSensibility->text().toInt();
|
|
|
+
|
|
|
+ /* 反相检测 */
|
|
|
+ compareItemInfo.paramPhase.isEnable = ui->checkBoxPhase->isChecked();
|
|
|
+ compareItemInfo.paramPhase.threshold.dThreshold = ui->lineEditPhaseThreshold->text().toDouble();
|
|
|
+ compareItemInfo.paramPhase.nLen = ui->lineEditPhaseLen->text().toInt();
|
|
|
+ compareItemInfo.paramPhase.nSensibility = ui->lineEditPhaseSensibility->text().toInt();
|
|
|
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+/* 取消所有的报警 */
|
|
|
+void CompareItemDialog::cancelAllWarn()
|
|
|
+{
|
|
|
+ setWarn(ui->lineEdit_compareItmName, false);
|
|
|
+ ui->widget_mainRoad->setRoadNameWarn(false);
|
|
|
+ ui->widget_secondRoad->setRoadNameWarn(false);
|
|
|
+ for(SingleCompareRoadWidget* roadWgt : m_listOtherRoadWgt)
|
|
|
+ {
|
|
|
+ roadWgt->setRoadNameWarn(false);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
|