Răsfoiți Sursa

Merge pull request #2970 from cg2121/adv-audio-config

UI: Add percent checkbox to advanced audio dialog
Jim 5 ani în urmă
părinte
comite
f887bc3f22
2 a modificat fișierele cu 31 adăugiri și 40 ștergeri
  1. 29 38
      UI/window-basic-adv-audio.cpp
  2. 2 2
      UI/window-basic-adv-audio.hpp

+ 29 - 38
UI/window-basic-adv-audio.cpp

@@ -26,6 +26,27 @@ OBSBasicAdvAudio::OBSBasicAdvAudio(QWidget *parent)
 	QWidget *widget;
 	QLabel *label;
 
+	QLabel *volLabel = new QLabel(QTStr("Basic.AdvAudio.Volume"));
+	volLabel->setStyleSheet("font-weight: bold;");
+
+	usePercent = new QCheckBox();
+	usePercent->setStyleSheet("font-weight: bold;");
+	usePercent->setText("%");
+	connect(usePercent, SIGNAL(toggled(bool)), this,
+		SLOT(SetVolumeType(bool)));
+
+	VolumeType volType = (VolumeType)config_get_int(
+		GetGlobalConfig(), "BasicWindow", "AdvAudioVolumeType");
+
+	if (volType == VolumeType::Percent)
+		usePercent->setChecked(true);
+
+	QHBoxLayout *volLayout = new QHBoxLayout();
+	volLayout->setContentsMargins(0, 0, 0, 0);
+	volLayout->addWidget(volLabel);
+	volLayout->addStretch();
+	volLayout->addWidget(usePercent);
+
 	int idx = 0;
 	mainLayout = new QGridLayout;
 	mainLayout->setContentsMargins(0, 0, 0, 0);
@@ -37,9 +58,7 @@ OBSBasicAdvAudio::OBSBasicAdvAudio(QWidget *parent)
 	label = new QLabel(QTStr("Basic.Stats.Status"));
 	label->setStyleSheet("font-weight: bold;");
 	mainLayout->addWidget(label, 0, idx++);
-	label = new QLabel(QTStr("Basic.AdvAudio.Volume"));
-	label->setStyleSheet("font-weight: bold;");
-	mainLayout->addWidget(label, 0, idx++);
+	mainLayout->addLayout(volLayout, 0, idx++);
 	label = new QLabel(QTStr("Basic.AdvAudio.Mono"));
 	label->setStyleSheet("font-weight: bold;");
 	mainLayout->addWidget(label, 0, idx++);
@@ -193,10 +212,14 @@ void OBSBasicAdvAudio::SourceRemoved(OBSSource source)
 	}
 }
 
-void OBSBasicAdvAudio::SetVolumeType()
+void OBSBasicAdvAudio::SetVolumeType(bool percent)
 {
-	QAction *action = reinterpret_cast<QAction *>(sender());
-	VolumeType type = (VolumeType)action->property("volumeType").toInt();
+	VolumeType type;
+
+	if (percent)
+		type = VolumeType::Percent;
+	else
+		type = VolumeType::dB;
 
 	for (size_t i = 0; i < controls.size(); i++)
 		controls[i]->SetVolumeWidget(type);
@@ -205,38 +228,6 @@ void OBSBasicAdvAudio::SetVolumeType()
 		       (int)type);
 }
 
-void OBSBasicAdvAudio::ShowContextMenu(const QPoint &pos)
-{
-	VolumeType type = (VolumeType)config_get_int(
-		GetGlobalConfig(), "BasicWindow", "AdvAudioVolumeType");
-
-	QMenu *contextMenu = new QMenu(this);
-
-	QAction *percent = new QAction(QTStr("Percent"), this);
-	QAction *dB = new QAction(QTStr("dB"), this);
-
-	percent->setProperty("volumeType", (int)VolumeType::Percent);
-	dB->setProperty("volumeType", (int)VolumeType::dB);
-
-	connect(percent, SIGNAL(triggered()), this, SLOT(SetVolumeType()),
-		Qt::DirectConnection);
-	connect(dB, SIGNAL(triggered()), this, SLOT(SetVolumeType()),
-		Qt::DirectConnection);
-
-	percent->setCheckable(true);
-	dB->setCheckable(true);
-
-	if (type == VolumeType::Percent)
-		percent->setChecked(true);
-	else if (type == VolumeType::dB)
-		dB->setChecked(true);
-
-	contextMenu->addAction(dB);
-	contextMenu->addAction(percent);
-
-	contextMenu->exec(mapToGlobal(pos));
-}
-
 void OBSBasicAdvAudio::ActiveOnlyChanged(bool checked)
 {
 	SetShowInactive(!checked);

+ 2 - 2
UI/window-basic-adv-audio.hpp

@@ -18,6 +18,7 @@ private:
 	QWidget *controlArea;
 	QGridLayout *mainLayout;
 	QPointer<QCheckBox> activeOnly;
+	QPointer<QCheckBox> usePercent;
 	OBSSignal sourceAddedSignal;
 	OBSSignal sourceRemovedSignal;
 	bool showInactive;
@@ -36,8 +37,7 @@ public slots:
 	void SourceAdded(OBSSource source);
 	void SourceRemoved(OBSSource source);
 
-	void ShowContextMenu(const QPoint &pos);
-	void SetVolumeType();
+	void SetVolumeType(bool percent);
 	void ActiveOnlyChanged(bool checked);
 
 public: