From 3c933451793b43e9ec06dc02eefc93fd21b2f085 Mon Sep 17 00:00:00 2001 From: jp9000 Date: Sat, 20 Jun 2015 18:56:07 -0700 Subject: [PATCH] UI: Add optional config button to volume controls --- obs/volume-control.cpp | 31 +++++++++++++++++++++++++++++-- obs/volume-control.hpp | 10 +++++++++- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/obs/volume-control.cpp b/obs/volume-control.cpp index 3be1022f7..568bdbbc5 100644 --- a/obs/volume-control.cpp +++ b/obs/volume-control.cpp @@ -5,6 +5,8 @@ #include #include #include +#include +#include #include #include #include @@ -99,7 +101,12 @@ void VolControl::SetName(const QString &newName) nameLabel->setText(newName); } -VolControl::VolControl(OBSSource source_) +void VolControl::EmitConfigClicked() +{ + emit ConfigClicked(); +} + +VolControl::VolControl(OBSSource source_, bool showConfig) : source (source_), levelTotal (0.0f), levelCount (0.0f), @@ -109,6 +116,7 @@ VolControl::VolControl(OBSSource source_) QHBoxLayout *volLayout = new QHBoxLayout(); QVBoxLayout *mainLayout = new QVBoxLayout(); QHBoxLayout *textLayout = new QHBoxLayout(); + QHBoxLayout *botLayout = new QHBoxLayout(); nameLabel = new QLabel(); volLabel = new QLabel(); @@ -139,11 +147,30 @@ VolControl::VolControl(OBSSource source_) volLayout->addWidget(mute); volLayout->setSpacing(5); + botLayout->setContentsMargins(0, 0, 0, 0); + botLayout->setSpacing(0); + botLayout->addLayout(volLayout); + + if (showConfig) { + config = new QPushButton(this); + config->setProperty("themeID", "configIconSmall"); + config->setFlat(true); + config->setSizePolicy(QSizePolicy::Maximum, + QSizePolicy::Maximum); + config->setMaximumSize(22, 22); + config->setAutoDefault(false); + + connect(config, &QAbstractButton::clicked, + this, &VolControl::EmitConfigClicked); + + botLayout->addWidget(config); + } + mainLayout->setContentsMargins(4, 4, 4, 4); mainLayout->setSpacing(2); mainLayout->addItem(textLayout); mainLayout->addWidget(volMeter); - mainLayout->addItem(volLayout); + mainLayout->addItem(botLayout); setLayout(mainLayout); diff --git a/obs/volume-control.hpp b/obs/volume-control.hpp index 5bce1395e..a1fb10f6f 100644 --- a/obs/volume-control.hpp +++ b/obs/volume-control.hpp @@ -3,6 +3,8 @@ #include #include +class QPushButton; + class VolumeMeter : public QWidget { Q_OBJECT @@ -48,6 +50,7 @@ private: VolumeMeter *volMeter; QSlider *slider; MuteCheckBox *mute; + QPushButton *config = nullptr; float levelTotal; float levelCount; obs_fader_t *obs_fader; @@ -57,6 +60,8 @@ private: static void OBSVolumeLevel(void *data, calldata_t *calldata); static void OBSVolumeMuted(void *data, calldata_t *calldata); + void EmitConfigClicked(); + private slots: void VolumeChanged(); void VolumeMuted(bool muted); @@ -66,8 +71,11 @@ private slots: void SliderChanged(int vol); void updateText(); +signals: + void ConfigClicked(); + public: - VolControl(OBSSource source); + VolControl(OBSSource source, bool showConfig = false); ~VolControl(); inline obs_source_t *GetSource() const {return source;}