diff --git a/UI/adv-audio-control.cpp b/UI/adv-audio-control.cpp index 7dd5f3d70..e2d281102 100644 --- a/UI/adv-audio-control.cpp +++ b/UI/adv-audio-control.cpp @@ -33,6 +33,7 @@ OBSAdvAudioCtrl::OBSAdvAudioCtrl(QGridLayout *, obs_source_t *source_) balanceContainer = new QWidget(); labelL = new QLabel(); labelR = new QLabel(); + iconLabel = new QLabel(); nameLabel = new QLabel(); active = new QLabel(); stackedWidget = new QStackedWidget(); @@ -81,6 +82,14 @@ OBSAdvAudioCtrl::OBSAdvAudioCtrl(QGridLayout *, obs_source_t *source_) labelR->setText("R"); + OBSBasic *main = reinterpret_cast(App()->GetMainWindow()); + + QIcon sourceIcon = main->GetSourceIcon(obs_source_get_id(source)); + QPixmap pixmap = sourceIcon.pixmap(QSize(16, 16)); + iconLabel->setPixmap(pixmap); + iconLabel->setFixedSize(16, 16); + iconLabel->setStyleSheet("background: none"); + nameLabel->setText(QT_UTF8(sourceName)); nameLabel->setAlignment(Qt::AlignVCenter); @@ -130,8 +139,6 @@ OBSAdvAudioCtrl::OBSAdvAudioCtrl(QGridLayout *, obs_source_t *source_) balance->setTickPosition(QSlider::TicksAbove); balance->setTickInterval(50); - OBSBasic *main = reinterpret_cast(App()->GetMainWindow()); - const char *speakers = config_get_string(main->Config(), "Audio", "ChannelSetup"); @@ -226,6 +233,7 @@ OBSAdvAudioCtrl::OBSAdvAudioCtrl(QGridLayout *, obs_source_t *source_) OBSAdvAudioCtrl::~OBSAdvAudioCtrl() { + iconLabel->deleteLater(); nameLabel->deleteLater(); activeContainer->deleteLater(); stackedWidget->deleteLater(); @@ -243,6 +251,7 @@ void OBSAdvAudioCtrl::ShowAudioControl(QGridLayout *layout) int lastRow = layout->rowCount(); int idx = 0; + layout->addWidget(iconLabel, lastRow, idx++); layout->addWidget(nameLabel, lastRow, idx++); layout->addWidget(activeContainer, lastRow, idx++); layout->addWidget(stackedWidget, lastRow, idx++); @@ -495,3 +504,8 @@ void OBSAdvAudioCtrl::SetVolumeWidget(VolumeType type) break; } } + +void OBSAdvAudioCtrl::SetIconVisible(bool visible) +{ + visible ? iconLabel->show() : iconLabel->hide(); +} diff --git a/UI/adv-audio-control.hpp b/UI/adv-audio-control.hpp index 684ca9ea6..9a7cf07a9 100644 --- a/UI/adv-audio-control.hpp +++ b/UI/adv-audio-control.hpp @@ -29,6 +29,7 @@ private: QPointer mixerContainer; QPointer balanceContainer; + QPointer iconLabel; QPointer nameLabel; QPointer active; QPointer stackedWidget; @@ -69,6 +70,7 @@ public: void ShowAudioControl(QGridLayout *layout); void SetVolumeWidget(VolumeType type); + void SetIconVisible(bool visible); public slots: void SourceActiveChanged(bool active); diff --git a/UI/window-basic-adv-audio.cpp b/UI/window-basic-adv-audio.cpp index 5bfa5dfe7..a443f7810 100644 --- a/UI/window-basic-adv-audio.cpp +++ b/UI/window-basic-adv-audio.cpp @@ -29,6 +29,8 @@ OBSBasicAdvAudio::OBSBasicAdvAudio(QWidget *parent) int idx = 0; mainLayout = new QGridLayout; mainLayout->setContentsMargins(0, 0, 0, 0); + label = new QLabel(""); + mainLayout->addWidget(label, 0, idx++); label = new QLabel(QTStr("Basic.AdvAudio.Name")); label->setStyleSheet("font-weight: bold;"); mainLayout->addWidget(label, 0, idx++); @@ -259,6 +261,8 @@ void OBSBasicAdvAudio::SetShowInactive(bool show) this); obs_enum_sources(EnumSources, this); + + SetIconsVisible(showVisible); } else { sourceAddedSignal.Connect(obs_get_signal_handler(), "source_activate", OBSSourceAdded, @@ -277,3 +281,16 @@ void OBSBasicAdvAudio::SetShowInactive(bool show) } } } + +void OBSBasicAdvAudio::SetIconsVisible(bool visible) +{ + showVisible = visible; + + QLayoutItem *item = mainLayout->itemAtPosition(0, 0); + QLabel *headerLabel = qobject_cast(item->widget()); + visible ? headerLabel->show() : headerLabel->hide(); + + for (int i = 0; i < controls.size(); i++) { + controls[i]->SetIconVisible(visible); + } +} diff --git a/UI/window-basic-adv-audio.hpp b/UI/window-basic-adv-audio.hpp index 0dfc50fd7..c98227267 100644 --- a/UI/window-basic-adv-audio.hpp +++ b/UI/window-basic-adv-audio.hpp @@ -21,6 +21,7 @@ private: OBSSignal sourceAddedSignal; OBSSignal sourceRemovedSignal; bool showInactive; + bool showVisible; std::vector controls; @@ -43,4 +44,5 @@ public: OBSBasicAdvAudio(QWidget *parent); ~OBSBasicAdvAudio(); void SetShowInactive(bool showInactive); + void SetIconsVisible(bool visible); }; diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp index 2ca68322c..ea785b149 100644 --- a/UI/window-basic-main.cpp +++ b/UI/window-basic-main.cpp @@ -3983,9 +3983,13 @@ void OBSBasic::on_actionAdvAudioProperties_triggered() return; } + bool iconsVisible = config_get_bool(App()->GlobalConfig(), + "BasicWindow", "ShowSourceIcons"); + advAudioWindow = new OBSBasicAdvAudio(this); advAudioWindow->show(); advAudioWindow->setAttribute(Qt::WA_DeleteOnClose, true); + advAudioWindow->SetIconsVisible(iconsVisible); connect(advAudioWindow, SIGNAL(destroyed()), this, SLOT(on_advAudioProps_destroyed())); @@ -6808,6 +6812,8 @@ void OBSBasic::on_toggleStatusBar_toggled(bool visible) void OBSBasic::on_toggleSourceIcons_toggled(bool visible) { ui->sources->SetIconsVisible(visible); + if (advAudioWindow != nullptr) + advAudioWindow->SetIconsVisible(visible); config_set_bool(App()->GlobalConfig(), "BasicWindow", "ShowSourceIcons", visible);