123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284 |
- #include "moc_basic-controls.cpp"
- #include "window-basic-main.hpp"
- 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);
- connect(
- ui->exitButton, &QPushButton::clicked, this, [this]() { emit this->ExitButtonClicked(); },
- 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);
- ui->streamButton->setChecked(true);
- 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);
- ui->streamButton->setChecked(false);
- 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)
- {
- ui->broadcastButton->setChecked(ready);
- }
- 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)
- {
- ui->recordButton->setChecked(true);
- ui->recordButton->setText(QTStr("Basic.Main.StopRecording"));
- if (pausable) {
- ui->pauseRecordButton->setVisible(pausable);
- RecordingUnpaused();
- }
- }
- void OBSBasicControls::RecordingPaused()
- {
- QString text = QTStr("Basic.Main.UnpauseRecording");
- ui->pauseRecordButton->setChecked(true);
- ui->pauseRecordButton->setAccessibleName(text);
- ui->pauseRecordButton->setToolTip(text);
- ui->saveReplayButton->setEnabled(false);
- }
- void OBSBasicControls::RecordingUnpaused()
- {
- QString text = QTStr("Basic.Main.PauseRecording");
- ui->pauseRecordButton->setChecked(false);
- 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()
- {
- ui->recordButton->setChecked(false);
- ui->recordButton->setText(QTStr("Basic.Main.StartRecording"));
- ui->pauseRecordButton->setVisible(false);
- }
- void OBSBasicControls::ReplayBufferStarted()
- {
- ui->replayBufferButton->setChecked(true);
- ui->replayBufferButton->setText(QTStr("Basic.Main.StopReplayBuffer"));
- ui->saveReplayButton->setVisible(true);
- }
- void OBSBasicControls::ReplayBufferStopping()
- {
- ui->replayBufferButton->setText(QTStr("Basic.Main.StoppingReplayBuffer"));
- }
- void OBSBasicControls::ReplayBufferStopped()
- {
- ui->replayBufferButton->setChecked(false);
- ui->replayBufferButton->setText(QTStr("Basic.Main.StartReplayBuffer"));
- ui->saveReplayButton->setVisible(false);
- }
- void OBSBasicControls::VirtualCamStarted()
- {
- ui->virtualCamButton->setChecked(true);
- ui->virtualCamButton->setText(QTStr("Basic.Main.StopVirtualCam"));
- }
- void OBSBasicControls::VirtualCamStopped()
- {
- ui->virtualCamButton->setChecked(false);
- ui->virtualCamButton->setText(QTStr("Basic.Main.StartVirtualCam"));
- }
- void OBSBasicControls::UpdateStudioModeState(bool enabled)
- {
- ui->modeSwitch->setChecked(enabled);
- }
- 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);
- }
|