singlecompareroadwidget.cpp 4.5 KB

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