singlecompareroadwidget.cpp 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  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. connect(ui->btnDel, &QPushButton::clicked, this, [this]{emit deleted(m_nIndex);});
  17. }
  18. SingleCompareRoadWidget::~SingleCompareRoadWidget()
  19. {
  20. delete ui;
  21. }
  22. bool SingleCompareRoadWidget::isDelBtnVisible() const
  23. {
  24. return ui->btnDel->isVisible();
  25. }
  26. void SingleCompareRoadWidget::setDelBtnVisible(bool bVisible)
  27. {
  28. ui->btnDel->setVisible(bVisible);
  29. }
  30. /* 设置声卡通道列表 */
  31. void SingleCompareRoadWidget::setSoundCardRoadList(const SoundCardPCMInfo_t& soundCard)
  32. {
  33. m_soundCardInfo = soundCard;
  34. bool bShowDesc = SoundCards.isShowSoundCardDesc();
  35. ui->comboBox_soundCardNum->clear();
  36. for(const auto& it : m_soundCardInfo.listPCM)
  37. {
  38. QString strItem = bShowDesc ? QString::fromStdString(it.strPCMDesc) : QString::fromStdString(it.strPCMName);
  39. QString strData = QString::fromStdString(it.strPCMName);
  40. ui->comboBox_soundCardNum->addItem(strItem, strData);
  41. }
  42. /* 默认选择第一个 */
  43. ui->comboBox_soundCardNum->setCurrentIndex(0);
  44. }
  45. /* 设置默认参数,设置之前需要先设置完成声卡可选通道列表 */
  46. void SingleCompareRoadWidget::setDefaultParams(const CompareItemRoadInfo_t& roadInfo)
  47. {
  48. ui->lineEditRoadName->setText(roadInfo.strCompareRoadName);
  49. ui->checkBox->setChecked(roadInfo.isEnableRecord);
  50. // setIndex(roadInfo.nCompareRoadNum); /* 通道编号不需要设置 */
  51. /* 先清空选择,再设置当前选项 */
  52. // ui->comboBox_soundCardNum->setCurrentIndex(-1);
  53. int numIndex = ui->comboBox_soundCardNum->findData(QString::fromStdString(roadInfo.scRoadInfo.pcmInfo.strPCMName));
  54. if(numIndex != -1)
  55. {
  56. ui->comboBox_soundCardNum->setCurrentIndex(numIndex);
  57. } else
  58. {
  59. ui->comboBox_soundCardNum->setCurrentIndex(0); // 如果没有找到,默认选择第一个
  60. }
  61. // for(int i = 0; i < ui->comboBox_soundCardNum->count(); ++i)
  62. // {
  63. // SoundCardRoadInfo_t road = ui->comboBox_soundCardNum->itemData(i).value<SoundCardRoadInfo_t>();
  64. // if(road.roadInfo.nRoadNum == roadInfo.scRoadInfo.roadInfo.nRoadNum &&
  65. // road.nSoundCardNum == roadInfo.scRoadInfo.nSoundCardNum)
  66. // {
  67. // ui->comboBox_soundCardNum->setCurrentIndex(i);
  68. // break;
  69. // }
  70. // }
  71. }
  72. int SingleCompareRoadWidget::getIndex() const
  73. {
  74. return m_nIndex;
  75. }
  76. void SingleCompareRoadWidget::setIndex(int nIndex)
  77. {
  78. if(nIndex <= 0) return;
  79. m_nIndex = nIndex;
  80. QString str = nIndex == 1 ? "主" : QString::number(nIndex);
  81. ui->labelRoadName->setText(QString("<font color='red'>*</font>%1通道名称:").arg(str));
  82. ui->labelDriverNum->setText(QString("<font color='red'>*</font>%1通道声卡设备编号:").arg(str));
  83. ui->checkBox->setText(QString("%1通道开启录音").arg(str));
  84. }
  85. /* 获取通道名称 */
  86. QString SingleCompareRoadWidget::getRoadName() const
  87. {
  88. return ui->lineEditRoadName->text();
  89. }
  90. /* 获取声卡录音通道编号 */
  91. OneSoundCardPCMInfo_t SingleCompareRoadWidget::getSoundCardRoadInfo()
  92. {
  93. std::string strPCMName = ui->comboBox_soundCardNum->currentData().toString().toStdString();
  94. OneSoundCardPCMInfo_t pcmInfo;
  95. pcmInfo.strSoundCardName = m_soundCardInfo.strSoundCardName;
  96. for(const auto& it : m_soundCardInfo.listPCM)
  97. {
  98. if(it.strPCMName == strPCMName)
  99. {
  100. pcmInfo.pcmInfo = it;
  101. break;
  102. }
  103. }
  104. return pcmInfo;
  105. }
  106. /* 是否开启录音 */
  107. bool SingleCompareRoadWidget::isRecordEnabled() const
  108. {
  109. return ui->checkBox->isChecked();
  110. }
  111. /* 设置通道名称报警 */
  112. void SingleCompareRoadWidget::setRoadNameWarn(bool isWarn)
  113. {
  114. ui->lineEditRoadName->setProperty("Warn", isWarn);
  115. ui->lineEditRoadName->style()->unpolish(ui->lineEditRoadName);
  116. ui->lineEditRoadName->style()->polish(ui->lineEditRoadName);
  117. ui->lineEditRoadName->update();
  118. }
  119. /* 设置样式表 */
  120. void SingleCompareRoadWidget::setQSS(QString strStyle)
  121. {
  122. this->setStyleSheet(strStyle);
  123. ui->comboBox_soundCardNum->setStyleSheet(strStyle);
  124. /* 设置下拉框阴影 */
  125. ui->comboBox_soundCardNum->setViewShadowEffect();
  126. // SPDLOG_INFO("ui->comboBox_soundCardNum 样式表: {}", ui->comboBox_soundCardNum->styleSheet().toStdString());
  127. }