Skip to content

Commit 5d5a20e

Browse files
committed
UI: Remove usage of controls UI elements in OBSBasic
OBSBasic now no longer rely on UI element from the controls dock.
1 parent 07f54a5 commit 5d5a20e

File tree

3 files changed

+47
-26
lines changed

3 files changed

+47
-26
lines changed

UI/basic-controls.hpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,6 @@ class OBSBasicControlsButton;
1313
class OBSBasicControls : public QFrame {
1414
Q_OBJECT
1515

16-
// XXX: OBSBasic still require access to buttons state
17-
friend class OBSBasic;
18-
1916
OBSBasic *main;
2017
std::unique_ptr<Ui::OBSBasicControls> ui;
2118

UI/window-basic-main.cpp

Lines changed: 43 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,30 @@ OBSBasic::OBSBasic(QWidget *parent)
282282
ui->previewDisabledWidget->setVisible(false);
283283
ui->contextContainer->setStyle(new OBSContextBarProxyStyle);
284284

285+
// Setup streaming connections
286+
connect(this, &OBSBasic::StreamingStarting, this,
287+
[this] { this->streamActionEnabled = false; });
288+
connect(this, &OBSBasic::StreamingStarted, this,
289+
[this] { this->streamActionEnabled = true; });
290+
connect(this, &OBSBasic::StreamingStopped, this,
291+
[this] { this->streamActionEnabled = true; });
292+
293+
// Setup recording connections
294+
connect(this, &OBSBasic::RecordingStartAborted, this,
295+
[this]() { this->recordingEnabled = false; });
296+
connect(this, &OBSBasic::RecordingStarted, this, [this]() {
297+
this->recordingEnabled = true;
298+
this->recordingPaused = false;
299+
});
300+
connect(this, &OBSBasic::RecordingStopAborted, this,
301+
[this]() { this->recordingEnabled = true; });
302+
connect(this, &OBSBasic::RecordingStopped, this,
303+
[this]() { this->recordingEnabled = false; });
304+
connect(this, &OBSBasic::RecordingPaused, this,
305+
[this]() { this->recordingPaused = true; });
306+
connect(this, &OBSBasic::RecordingUnpaused, this,
307+
[this]() { this->recordingPaused = false; });
308+
285309
/* Add controls dock */
286310
controls = new OBSBasicControls(this);
287311
controlsDock = new OBSDock(this);
@@ -2413,14 +2437,12 @@ void OBSBasic::CreateHotkeys()
24132437
streamingHotkeys = obs_hotkey_pair_register_frontend(
24142438
"OBSBasic.StartStreaming", Str("Basic.Main.StartStreaming"),
24152439
"OBSBasic.StopStreaming", Str("Basic.Main.StopStreaming"),
2416-
MAKE_CALLBACK(
2417-
!basic.outputHandler->StreamingActive() &&
2418-
basic.controls->ui->streamButton->isEnabled(),
2419-
basic.StartStreaming, "Starting stream"),
2420-
MAKE_CALLBACK(
2421-
basic.outputHandler->StreamingActive() &&
2422-
basic.controls->ui->streamButton->isEnabled(),
2423-
basic.StopStreaming, "Stopping stream"),
2440+
MAKE_CALLBACK(!basic.outputHandler->StreamingActive() &&
2441+
basic.streamActionEnabled,
2442+
basic.StartStreaming, "Starting stream"),
2443+
MAKE_CALLBACK(basic.outputHandler->StreamingActive() &&
2444+
basic.streamActionEnabled,
2445+
basic.StopStreaming, "Stopping stream"),
24242446
this, this);
24252447
LoadHotkeyPair(streamingHotkeys, "OBSBasic.StartStreaming",
24262448
"OBSBasic.StopStreaming");
@@ -2440,26 +2462,24 @@ void OBSBasic::CreateHotkeys()
24402462
recordingHotkeys = obs_hotkey_pair_register_frontend(
24412463
"OBSBasic.StartRecording", Str("Basic.Main.StartRecording"),
24422464
"OBSBasic.StopRecording", Str("Basic.Main.StopRecording"),
2443-
MAKE_CALLBACK(
2444-
!basic.outputHandler->RecordingActive() &&
2445-
!basic.controls->ui->recordButton->isChecked(),
2446-
basic.StartRecording, "Starting recording"),
2447-
MAKE_CALLBACK(
2448-
basic.outputHandler->RecordingActive() &&
2449-
basic.controls->ui->recordButton->isChecked(),
2450-
basic.StopRecording, "Stopping recording"),
2465+
MAKE_CALLBACK(!basic.outputHandler->RecordingActive() &&
2466+
!basic.recordingEnabled,
2467+
basic.StartRecording, "Starting recording"),
2468+
MAKE_CALLBACK(basic.outputHandler->RecordingActive() &&
2469+
basic.recordingEnabled,
2470+
basic.StopRecording, "Stopping recording"),
24512471
this, this);
24522472
LoadHotkeyPair(recordingHotkeys, "OBSBasic.StartRecording",
24532473
"OBSBasic.StopRecording");
24542474

24552475
pauseHotkeys = obs_hotkey_pair_register_frontend(
24562476
"OBSBasic.PauseRecording", Str("Basic.Main.PauseRecording"),
24572477
"OBSBasic.UnpauseRecording", Str("Basic.Main.UnpauseRecording"),
2458-
MAKE_CALLBACK(basic.controls->pauseButton &&
2459-
!basic.controls->pauseButton->isChecked(),
2478+
MAKE_CALLBACK(basic.IsRecordingPausable() &&
2479+
!basic.recordingPaused,
24602480
basic.PauseRecording, "Pausing recording"),
2461-
MAKE_CALLBACK(basic.controls->pauseButton &&
2462-
basic.controls->pauseButton->isChecked(),
2481+
MAKE_CALLBACK(basic.IsRecordingPausable() &&
2482+
basic.recordingPaused,
24632483
basic.UnpauseRecording, "Unpausing recording"),
24642484
this, this);
24652485
LoadHotkeyPair(pauseHotkeys, "OBSBasic.PauseRecording",
@@ -9852,7 +9872,7 @@ void OBSBasic::UpdatePatronJson(const QString &text, const QString &error)
98529872

98539873
void OBSBasic::PauseRecording()
98549874
{
9855-
if (!controls->pauseButton || !outputHandler ||
9875+
if (!IsRecordingPausable() || !outputHandler ||
98569876
!outputHandler->fileOutput ||
98579877
os_atomic_load_bool(&recording_paused))
98589878
return;
@@ -9890,7 +9910,7 @@ void OBSBasic::PauseRecording()
98909910

98919911
void OBSBasic::UnpauseRecording()
98929912
{
9893-
if (!controls->pauseButton || !outputHandler ||
9913+
if (!IsRecordingPausable() || !outputHandler ||
98949914
!outputHandler->fileOutput ||
98959915
!os_atomic_load_bool(&recording_paused))
98969916
return;
@@ -9925,7 +9945,7 @@ void OBSBasic::UnpauseRecording()
99259945

99269946
void OBSBasic::PauseToggled()
99279947
{
9928-
if (!controls->pauseButton || !outputHandler ||
9948+
if (!IsRecordingPausable() || !outputHandler ||
99299949
!outputHandler->fileOutput)
99309950
return;
99319951

UI/window-basic-main.hpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -635,6 +635,10 @@ class OBSBasic : public OBSMainWindow {
635635

636636
float GetDevicePixelRatio();
637637

638+
bool streamActionEnabled = true;
639+
bool recordingEnabled = false;
640+
bool recordingPaused = false;
641+
638642
bool IsRecordingPausable();
639643

640644
public slots:

0 commit comments

Comments
 (0)