| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283 | 
							- #include "OBSBasicControls.hpp"
 
- #include "OBSBasic.hpp"
 
- #include "qt-wrappers.hpp"
 
- #include "moc_OBSBasicControls.cpp"
 
- OBSBasicControls::OBSBasicControls(OBSBasic *main) : QFrame(nullptr), ui(new Ui::OBSBasicControls)
 
- {
 
- 	/* Create UI elements */
 
- 	ui->setupUi(this);
 
- 	streamButtonMenu.reset(new QMenu());
 
- 	startStreamAction = streamButtonMenu->addAction(QTStr("Basic.Main.StartStreaming"));
 
- 	stopStreamAction = streamButtonMenu->addAction(QTStr("Basic.Main.StopStreaming"));
 
- 	QAction *forceStopStreamAction = streamButtonMenu->addAction(QTStr("Basic.Main.ForceStopStreaming"));
 
- 	/* Transfer buttons signals as OBSBasicControls signals */
 
- 	connect(
 
- 		ui->streamButton, &QPushButton::clicked, this, [this]() { emit this->StreamButtonClicked(); },
 
- 		Qt::DirectConnection);
 
- 	connect(
 
- 		ui->broadcastButton, &QPushButton::clicked, this, [this]() { emit this->BroadcastButtonClicked(); },
 
- 		Qt::DirectConnection);
 
- 	connect(
 
- 		ui->recordButton, &QPushButton::clicked, this, [this]() { emit this->RecordButtonClicked(); },
 
- 		Qt::DirectConnection);
 
- 	connect(
 
- 		ui->pauseRecordButton, &QPushButton::clicked, this, [this]() { emit this->PauseRecordButtonClicked(); },
 
- 		Qt::DirectConnection);
 
- 	connect(
 
- 		ui->replayBufferButton, &QPushButton::clicked, this,
 
- 		[this]() { emit this->ReplayBufferButtonClicked(); }, Qt::DirectConnection);
 
- 	connect(
 
- 		ui->saveReplayButton, &QPushButton::clicked, this,
 
- 		[this]() { emit this->SaveReplayBufferButtonClicked(); }, Qt::DirectConnection);
 
- 	connect(
 
- 		ui->virtualCamButton, &QPushButton::clicked, this, [this]() { emit this->VirtualCamButtonClicked(); },
 
- 		Qt::DirectConnection);
 
- 	connect(
 
- 		ui->virtualCamConfigButton, &QPushButton::clicked, this,
 
- 		[this]() { emit this->VirtualCamConfigButtonClicked(); }, Qt::DirectConnection);
 
- 	connect(
 
- 		ui->modeSwitch, &QPushButton::clicked, this, [this]() { emit this->StudioModeButtonClicked(); },
 
- 		Qt::DirectConnection);
 
- 	connect(
 
- 		ui->settingsButton, &QPushButton::clicked, this, [this]() { emit this->SettingsButtonClicked(); },
 
- 		Qt::DirectConnection);
 
- 	/* Transfer menu actions signals as OBSBasicControls signals */
 
- 	connect(
 
- 		startStreamAction.get(), &QAction::triggered, this,
 
- 		[this]() { emit this->StartStreamMenuActionClicked(); }, Qt::DirectConnection);
 
- 	connect(
 
- 		stopStreamAction.get(), &QAction::triggered, this,
 
- 		[this]() { emit this->StopStreamMenuActionClicked(); }, Qt::DirectConnection);
 
- 	connect(
 
- 		forceStopStreamAction, &QAction::triggered, this,
 
- 		[this]() { emit this->ForceStopStreamMenuActionClicked(); }, Qt::DirectConnection);
 
- 	/* Set up default visibilty */
 
- 	ui->broadcastButton->setVisible(false);
 
- 	ui->pauseRecordButton->setVisible(false);
 
- 	ui->replayBufferButton->setVisible(false);
 
- 	ui->saveReplayButton->setVisible(false);
 
- 	ui->virtualCamButton->setVisible(false);
 
- 	ui->virtualCamConfigButton->setVisible(false);
 
- 	/* Set up state update connections */
 
- 	connect(main, &OBSBasic::StreamingPreparing, this, &OBSBasicControls::StreamingPreparing);
 
- 	connect(main, &OBSBasic::StreamingStarting, this, &OBSBasicControls::StreamingStarting);
 
- 	connect(main, &OBSBasic::StreamingStarted, this, &OBSBasicControls::StreamingStarted);
 
- 	connect(main, &OBSBasic::StreamingStopping, this, &OBSBasicControls::StreamingStopping);
 
- 	connect(main, &OBSBasic::StreamingStopped, this, &OBSBasicControls::StreamingStopped);
 
- 	connect(main, &OBSBasic::BroadcastStreamReady, this, &OBSBasicControls::BroadcastStreamReady);
 
- 	connect(main, &OBSBasic::BroadcastStreamActive, this, &OBSBasicControls::BroadcastStreamActive);
 
- 	connect(main, &OBSBasic::BroadcastStreamStarted, this, &OBSBasicControls::BroadcastStreamStarted);
 
- 	connect(main, &OBSBasic::RecordingStarted, this, &OBSBasicControls::RecordingStarted);
 
- 	connect(main, &OBSBasic::RecordingPaused, this, &OBSBasicControls::RecordingPaused);
 
- 	connect(main, &OBSBasic::RecordingUnpaused, this, &OBSBasicControls::RecordingUnpaused);
 
- 	connect(main, &OBSBasic::RecordingStopping, this, &OBSBasicControls::RecordingStopping);
 
- 	connect(main, &OBSBasic::RecordingStopped, this, &OBSBasicControls::RecordingStopped);
 
- 	connect(main, &OBSBasic::ReplayBufStarted, this, &OBSBasicControls::ReplayBufferStarted);
 
- 	connect(main, &OBSBasic::ReplayBufStopping, this, &OBSBasicControls::ReplayBufferStopping);
 
- 	connect(main, &OBSBasic::ReplayBufStopped, this, &OBSBasicControls::ReplayBufferStopped);
 
- 	connect(main, &OBSBasic::VirtualCamStarted, this, &OBSBasicControls::VirtualCamStarted);
 
- 	connect(main, &OBSBasic::VirtualCamStopped, this, &OBSBasicControls::VirtualCamStopped);
 
- 	connect(main, &OBSBasic::PreviewProgramModeChanged, this, &OBSBasicControls::UpdateStudioModeState);
 
- 	/* Set up enablement connection */
 
- 	connect(main, &OBSBasic::BroadcastFlowEnabled, this, &OBSBasicControls::EnableBroadcastFlow);
 
- 	connect(main, &OBSBasic::ReplayBufEnabled, this, &OBSBasicControls::EnableReplayBufferButtons);
 
- 	connect(main, &OBSBasic::VirtualCamEnabled, this, &OBSBasicControls::EnableVirtualCamButtons);
 
- }
 
- void OBSBasicControls::StreamingPreparing()
 
- {
 
- 	ui->streamButton->setEnabled(false);
 
- 	ui->streamButton->setText(QTStr("Basic.Main.PreparingStream"));
 
- }
 
- void OBSBasicControls::StreamingStarting(bool broadcastAutoStart)
 
- {
 
- 	ui->streamButton->setText(QTStr("Basic.Main.Connecting"));
 
- 	if (!broadcastAutoStart) {
 
- 		// well, we need to disable button while stream is not active
 
- 		ui->broadcastButton->setEnabled(false);
 
- 		ui->broadcastButton->setText(QTStr("Basic.Main.StartBroadcast"));
 
- 		ui->broadcastButton->setProperty("broadcastState", "ready");
 
- 		ui->broadcastButton->style()->unpolish(ui->broadcastButton);
 
- 		ui->broadcastButton->style()->polish(ui->broadcastButton);
 
- 	}
 
- }
 
- void OBSBasicControls::StreamingStarted(bool withDelay)
 
- {
 
- 	ui->streamButton->setEnabled(true);
 
- 	setClasses(ui->streamButton, "state-active");
 
- 	ui->streamButton->setText(QTStr("Basic.Main.StopStreaming"));
 
- 	if (withDelay) {
 
- 		ui->streamButton->setMenu(streamButtonMenu.get());
 
- 		startStreamAction->setVisible(false);
 
- 		stopStreamAction->setVisible(true);
 
- 	}
 
- }
 
- void OBSBasicControls::StreamingStopping()
 
- {
 
- 	ui->streamButton->setText(QTStr("Basic.Main.StoppingStreaming"));
 
- }
 
- void OBSBasicControls::StreamingStopped(bool withDelay)
 
- {
 
- 	ui->streamButton->setEnabled(true);
 
- 	setClasses(ui->streamButton, "");
 
- 	ui->streamButton->setText(QTStr("Basic.Main.StartStreaming"));
 
- 	if (withDelay) {
 
- 		if (!ui->streamButton->menu())
 
- 			ui->streamButton->setMenu(streamButtonMenu.get());
 
- 		startStreamAction->setVisible(true);
 
- 		stopStreamAction->setVisible(false);
 
- 	} else {
 
- 		ui->streamButton->setMenu(nullptr);
 
- 	}
 
- }
 
- void OBSBasicControls::BroadcastStreamReady(bool ready)
 
- {
 
- 	setClasses(ui->broadcastButton, ready ? "state-active" : "");
 
- }
 
- void OBSBasicControls::BroadcastStreamActive()
 
- {
 
- 	ui->broadcastButton->setEnabled(true);
 
- }
 
- void OBSBasicControls::BroadcastStreamStarted(bool autoStop)
 
- {
 
- 	ui->broadcastButton->setText(QTStr(autoStop ? "Basic.Main.AutoStopEnabled" : "Basic.Main.StopBroadcast"));
 
- 	if (autoStop)
 
- 		ui->broadcastButton->setEnabled(false);
 
- 	ui->broadcastButton->setProperty("broadcastState", "active");
 
- 	ui->broadcastButton->style()->unpolish(ui->broadcastButton);
 
- 	ui->broadcastButton->style()->polish(ui->broadcastButton);
 
- }
 
- void OBSBasicControls::RecordingStarted(bool pausable)
 
- {
 
- 	setClasses(ui->recordButton, "state-active");
 
- 	ui->recordButton->setText(QTStr("Basic.Main.StopRecording"));
 
- 	if (pausable) {
 
- 		ui->pauseRecordButton->setVisible(pausable);
 
- 		RecordingUnpaused();
 
- 	}
 
- }
 
- void OBSBasicControls::RecordingPaused()
 
- {
 
- 	QString text = QTStr("Basic.Main.UnpauseRecording");
 
- 	setClasses(ui->pauseRecordButton, "icon-media-pause state-active");
 
- 	ui->pauseRecordButton->setAccessibleName(text);
 
- 	ui->pauseRecordButton->setToolTip(text);
 
- 	ui->saveReplayButton->setEnabled(false);
 
- }
 
- void OBSBasicControls::RecordingUnpaused()
 
- {
 
- 	QString text = QTStr("Basic.Main.PauseRecording");
 
- 	setClasses(ui->pauseRecordButton, "icon-media-pause");
 
- 	ui->pauseRecordButton->setAccessibleName(text);
 
- 	ui->pauseRecordButton->setToolTip(text);
 
- 	ui->saveReplayButton->setEnabled(true);
 
- }
 
- void OBSBasicControls::RecordingStopping()
 
- {
 
- 	ui->recordButton->setText(QTStr("Basic.Main.StoppingRecording"));
 
- }
 
- void OBSBasicControls::RecordingStopped()
 
- {
 
- 	setClasses(ui->recordButton, "");
 
- 	ui->recordButton->setText(QTStr("Basic.Main.StartRecording"));
 
- 	ui->pauseRecordButton->setVisible(false);
 
- }
 
- void OBSBasicControls::ReplayBufferStarted()
 
- {
 
- 	setClasses(ui->replayBufferButton, "state-active");
 
- 	ui->replayBufferButton->setText(QTStr("Basic.Main.StopReplayBuffer"));
 
- 	ui->saveReplayButton->setVisible(true);
 
- }
 
- void OBSBasicControls::ReplayBufferStopping()
 
- {
 
- 	ui->replayBufferButton->setText(QTStr("Basic.Main.StoppingReplayBuffer"));
 
- }
 
- void OBSBasicControls::ReplayBufferStopped()
 
- {
 
- 	setClasses(ui->replayBufferButton, "");
 
- 	ui->replayBufferButton->setText(QTStr("Basic.Main.StartReplayBuffer"));
 
- 	ui->saveReplayButton->setVisible(false);
 
- }
 
- void OBSBasicControls::VirtualCamStarted()
 
- {
 
- 	setClasses(ui->virtualCamButton, "state-active");
 
- 	ui->virtualCamButton->setText(QTStr("Basic.Main.StopVirtualCam"));
 
- }
 
- void OBSBasicControls::VirtualCamStopped()
 
- {
 
- 	setClasses(ui->virtualCamButton, "");
 
- 	ui->virtualCamButton->setText(QTStr("Basic.Main.StartVirtualCam"));
 
- }
 
- void OBSBasicControls::UpdateStudioModeState(bool enabled)
 
- {
 
- 	setClasses(ui->modeSwitch, enabled ? "state-active" : "");
 
- }
 
- void OBSBasicControls::EnableBroadcastFlow(bool enabled)
 
- {
 
- 	ui->broadcastButton->setVisible(enabled);
 
- 	ui->broadcastButton->setEnabled(enabled);
 
- 	ui->broadcastButton->setText(QTStr("Basic.Main.SetupBroadcast"));
 
- 	ui->broadcastButton->setProperty("broadcastState", "idle");
 
- 	ui->broadcastButton->style()->unpolish(ui->broadcastButton);
 
- 	ui->broadcastButton->style()->polish(ui->broadcastButton);
 
- }
 
- void OBSBasicControls::EnableReplayBufferButtons(bool enabled)
 
- {
 
- 	ui->replayBufferButton->setVisible(enabled);
 
- }
 
- void OBSBasicControls::EnableVirtualCamButtons()
 
- {
 
- 	ui->virtualCamButton->setVisible(true);
 
- 	ui->virtualCamConfigButton->setVisible(true);
 
- }
 
 
  |