singlecompareroadwidget.cpp 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. #include "singlecompareroadwidget.h"
  2. #include "GlobalVariable.h"
  3. #include "ui_singlecompareroadwidget.h"
  4. #include "customcombobox.h"
  5. #include "spdlog/spdlog.h"
  6. #include <qchar.h>
  7. #include <string>
  8. SingleCompareRoadWidget::SingleCompareRoadWidget(QWidget *parent)
  9. : QWidget(parent)
  10. , ui(new Ui::SingleCompareRoadWidget)
  11. , m_nIndex(0)
  12. {
  13. ui->setupUi(this);
  14. /* 设置comboBox阴影 */
  15. // ui->comboBox_soundCardNum->setViewShadowEffect();
  16. /* 通道名称限制10个字 */
  17. ui->lineEditRoadName->setMaxLength(10);
  18. connect(ui->btnDel, &QPushButton::clicked, this, [this]{emit deleted(m_nIndex);});
  19. connect(ui->comboBox_soundCardNum, QOverload<int>::of(&CustomComboBox::currentIndexChanged), this, &SingleCompareRoadWidget::do_comboBox_soundCardNum_currentIndexChanged);
  20. }
  21. SingleCompareRoadWidget::~SingleCompareRoadWidget()
  22. {
  23. delete ui;
  24. }
  25. bool SingleCompareRoadWidget::isDelBtnVisible() const
  26. {
  27. return ui->btnDel->isVisible();
  28. }
  29. void SingleCompareRoadWidget::setDelBtnVisible(bool bVisible)
  30. {
  31. ui->btnDel->setVisible(bVisible);
  32. }
  33. /* 设置声卡通道列表 */
  34. void SingleCompareRoadWidget::setSoundCardRoadList(const SoundCardPCMInfo_t& soundCard)
  35. {
  36. m_soundCardInfo = soundCard;
  37. bool bShowDesc = SoundCards.isShowSoundCardDesc();
  38. ui->comboBox_soundCardNum->clear();
  39. for(const auto& it : m_soundCardInfo.listPCM)
  40. {
  41. QString strItem = bShowDesc ? QString::fromStdString(it.strPCMDesc) : QString::fromStdString(it.strPCMName);
  42. QString strData = QString::fromStdString(it.strPCMName);
  43. ui->comboBox_soundCardNum->addItem(strItem, strData);
  44. }
  45. /* 默认选择第一个 */
  46. ui->comboBox_soundCardNum->setCurrentIndex(0);
  47. }
  48. /* 设置默认参数,设置之前需要先设置完成声卡可选通道列表 */
  49. void SingleCompareRoadWidget::setDefaultParams(const CompareItemRoadInfo_t& roadInfo)
  50. {
  51. ui->lineEditRoadName->setText(roadInfo.strCompareRoadName);
  52. ui->checkBox->setChecked(roadInfo.isEnableRecord);
  53. // setIndex(roadInfo.nCompareRoadNum); /* 通道编号不需要设置 */
  54. /* 先清空选择,再设置当前选项 */
  55. // ui->comboBox_soundCardNum->setCurrentIndex(-1);
  56. int numIndex = ui->comboBox_soundCardNum->findData(QString::fromStdString(roadInfo.scRoadInfo.pcmInfo.strPCMName));
  57. if(numIndex != -1)
  58. {
  59. ui->comboBox_soundCardNum->setCurrentIndex(numIndex);
  60. } else
  61. {
  62. ui->comboBox_soundCardNum->setCurrentIndex(0); // 如果没有找到,默认选择第一个
  63. }
  64. // for(int i = 0; i < ui->comboBox_soundCardNum->count(); ++i)
  65. // {
  66. // SoundCardRoadInfo_t road = ui->comboBox_soundCardNum->itemData(i).value<SoundCardRoadInfo_t>();
  67. // if(road.roadInfo.nRoadNum == roadInfo.scRoadInfo.roadInfo.nRoadNum &&
  68. // road.nSoundCardNum == roadInfo.scRoadInfo.nSoundCardNum)
  69. // {
  70. // ui->comboBox_soundCardNum->setCurrentIndex(i);
  71. // break;
  72. // }
  73. // }
  74. }
  75. int SingleCompareRoadWidget::getIndex() const
  76. {
  77. return m_nIndex;
  78. }
  79. void SingleCompareRoadWidget::setIndex(int nIndex)
  80. {
  81. if(nIndex <= 0) return;
  82. m_nIndex = nIndex;
  83. QString str = nIndex == 1 ? "主" : QString::number(nIndex);
  84. ui->labelRoadName->setText(QString("<font color='red'>*</font>%1通道名称:").arg(str));
  85. ui->labelDriverNum->setText(QString("<font color='red'>*</font>%1通道声卡设备编号:").arg(str));
  86. ui->checkBox->setText(QString("%1通道开启录音").arg(str));
  87. }
  88. /* 获取通道名称 */
  89. QString SingleCompareRoadWidget::getRoadName() const
  90. {
  91. return ui->lineEditRoadName->text();
  92. }
  93. /* 获取声卡录音通道编号 */
  94. OneSoundCardPCMInfo_t SingleCompareRoadWidget::getSoundCardRoadInfo()
  95. {
  96. std::string strPCMName = ui->comboBox_soundCardNum->currentData().toString().toStdString();
  97. OneSoundCardPCMInfo_t pcmInfo;
  98. pcmInfo.strSoundCardName = m_soundCardInfo.strSoundCardName;
  99. for(const auto& it : m_soundCardInfo.listPCM)
  100. {
  101. if(it.strPCMName == strPCMName)
  102. {
  103. pcmInfo.pcmInfo = it;
  104. break;
  105. }
  106. }
  107. return pcmInfo;
  108. }
  109. /* 获取当前PCM通道名称 */
  110. QString SingleCompareRoadWidget::getCurrentPCMName() const
  111. {
  112. return ui->comboBox_soundCardNum->currentData().toString();
  113. }
  114. /* 是否开启录音 */
  115. bool SingleCompareRoadWidget::isRecordEnabled() const
  116. {
  117. return ui->checkBox->isChecked();
  118. }
  119. /* 设置通道名称报警 */
  120. void SingleCompareRoadWidget::setRoadNameWarn(bool isWarn)
  121. {
  122. ui->lineEditRoadName->setProperty("Warn", isWarn);
  123. ui->lineEditRoadName->style()->unpolish(ui->lineEditRoadName);
  124. ui->lineEditRoadName->style()->polish(ui->lineEditRoadName);
  125. ui->lineEditRoadName->update();
  126. }
  127. /* 设置当前录音通道名称 */
  128. void SingleCompareRoadWidget::clearCurrentSelectRecordName()
  129. {
  130. ui->comboBox_soundCardNum->setCurrentIndex(-1);
  131. }
  132. /* 设置样式表 */
  133. void SingleCompareRoadWidget::setQSS(QString strStyle)
  134. {
  135. this->setStyleSheet(strStyle);
  136. ui->comboBox_soundCardNum->setStyleSheet(strStyle);
  137. /* 设置下拉框阴影 */
  138. ui->comboBox_soundCardNum->setViewShadowEffect();
  139. // SPDLOG_INFO("ui->comboBox_soundCardNum 样式表: {}", ui->comboBox_soundCardNum->styleSheet().toStdString());
  140. }
  141. /* 设置多对比项编辑模式 */
  142. void SingleCompareRoadWidget::setMultiEditMode(bool multiEdit)
  143. {
  144. if(multiEdit)
  145. {
  146. return;
  147. }
  148. /* 设置通道名称和声卡选择框不可编辑 */
  149. ui->lineEditRoadName->setEnabled(false);
  150. ui->comboBox_soundCardNum->setEnabled(false);
  151. }
  152. /* 选择了一个录音通道 */
  153. void SingleCompareRoadWidget::do_comboBox_soundCardNum_currentIndexChanged(int nIndex)
  154. {
  155. QString strPCMName = ui->comboBox_soundCardNum->currentData().toString();
  156. // SPDLOG_INFO("选择了一个录音通道: {}", strPCMName.toStdString());
  157. emit signal_selectRecordRoad(strPCMName);
  158. }