UI: Make replay buffer settings always visible in Simple Mode

Instead of a checkbox in the recording group that reveals the replay
buffer group when pressed, the replay buffer group now has its own
toggle that enables or disables the replay buffer.
This commit is contained in:
gxalpha
2022-07-08 21:26:17 +02:00
committed by Lain
parent 7d55229bef
commit e9ecb6c565
3 changed files with 29 additions and 22 deletions

View File

@@ -437,7 +437,7 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
HookWidget(ui->simpleOutRecTrack5, CHECK_CHANGED, OUTPUTS_CHANGED);
HookWidget(ui->simpleOutRecTrack6, CHECK_CHANGED, OUTPUTS_CHANGED);
HookWidget(ui->simpleOutMuxCustom, EDIT_CHANGED, OUTPUTS_CHANGED);
HookWidget(ui->simpleReplayBuf, CHECK_CHANGED, OUTPUTS_CHANGED);
HookWidget(ui->simpleReplayBuf, GROUP_CHANGED, OUTPUTS_CHANGED);
HookWidget(ui->simpleRBSecMax, SCROLL_CHANGED, OUTPUTS_CHANGED);
HookWidget(ui->simpleRBMegsMax, SCROLL_CHANGED, OUTPUTS_CHANGED);
HookWidget(ui->advOutEncoder, COMBO_CHANGED, OUTPUTS_CHANGED);
@@ -774,7 +774,7 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
&OBSBasicSettings::SimpleRecordingEncoderChanged);
connect(ui->ignoreRecommended, &QCheckBox::toggled, this,
&OBSBasicSettings::SimpleRecordingEncoderChanged);
connect(ui->simpleReplayBuf, &QCheckBox::toggled, this,
connect(ui->simpleReplayBuf, &QGroupBox::toggled, this,
&OBSBasicSettings::SimpleReplayBufferChanged);
connect(ui->simpleOutputVBitrate, &QSpinBox::valueChanged, this,
&OBSBasicSettings::SimpleReplayBufferChanged);
@@ -1024,6 +1024,14 @@ void OBSBasicSettings::SaveSpinBox(QSpinBox *widget, const char *section,
config_set_int(main->Config(), section, value, widget->value());
}
void OBSBasicSettings::SaveGroupBox(QGroupBox *widget, const char *section,
const char *value)
{
if (WidgetChanged(widget))
config_set_bool(main->Config(), section, value,
widget->isChecked());
}
#define CS_PARTIAL_STR QTStr("Basic.Settings.Advanced.Video.ColorRange.Partial")
#define CS_FULL_STR QTStr("Basic.Settings.Advanced.Video.ColorRange.Full")
@@ -2448,7 +2456,7 @@ void OBSBasicSettings::LoadOutputSettings()
ui->simpleOutStrAEncoderLabel->setEnabled(false);
ui->simpleOutStrAEncoder->setEnabled(false);
ui->simpleRecordingGroupBox->setEnabled(false);
ui->replayBufferGroupBox->setEnabled(false);
ui->simpleReplayBuf->setEnabled(false);
ui->advOutTopContainer->setEnabled(false);
ui->advOutRecTopContainer->setEnabled(false);
ui->advOutRecTypeContainer->setEnabled(false);
@@ -3798,7 +3806,7 @@ void OBSBasicSettings::SaveOutputSettings()
SaveComboData(ui->simpleOutRecAEncoder, "SimpleOutput",
"RecAudioEncoder");
SaveEdit(ui->simpleOutMuxCustom, "SimpleOutput", "MuxerCustom");
SaveCheckBox(ui->simpleReplayBuf, "SimpleOutput", "RecRB");
SaveGroupBox(ui->simpleReplayBuf, "SimpleOutput", "RecRB");
SaveSpinBox(ui->simpleRBSecMax, "SimpleOutput", "RecRBTime");
SaveSpinBox(ui->simpleRBMegsMax, "SimpleOutput", "RecRBSize");
config_set_int(main->Config(), "SimpleOutput", "RecTracks",
@@ -5460,12 +5468,16 @@ void OBSBasicSettings::UpdateAutomaticReplayBufferCheckboxes()
{
bool state = false;
switch (ui->outputMode->currentIndex()) {
case 0:
case 0: {
const bool lossless =
ui->simpleOutRecQuality->currentData().toString() ==
"Lossless";
state = ui->simpleReplayBuf->isChecked();
ui->simpleReplayBuf->setEnabled(
!obs_frontend_replay_buffer_active());
!obs_frontend_replay_buffer_active() && !lossless);
break;
case 1:
}
case 1: {
state = ui->advReplayBuf->isChecked();
bool customFFmpeg = ui->advOutRecType->currentIndex() == 1;
ui->advReplayBuf->setEnabled(
@@ -5473,6 +5485,7 @@ void OBSBasicSettings::UpdateAutomaticReplayBufferCheckboxes()
ui->advReplayBufCustomFFmpeg->setVisible(customFFmpeg);
break;
}
}
ui->replayWhileStreaming->setEnabled(state);
ui->keepReplayStreamStops->setEnabled(
state && ui->replayWhileStreaming->isChecked());
@@ -5481,8 +5494,6 @@ void OBSBasicSettings::UpdateAutomaticReplayBufferCheckboxes()
void OBSBasicSettings::SimpleReplayBufferChanged()
{
QString qual = ui->simpleOutRecQuality->currentData().toString();
bool replayBufferEnabled = ui->simpleReplayBuf->isChecked();
bool lossless = qual == "Lossless";
bool streamQuality = qual == "Stream";
int abitrate = 0;
@@ -5539,8 +5550,6 @@ void OBSBasicSettings::SimpleReplayBufferChanged()
}
ui->simpleRBEstimate->style()->polish(ui->simpleRBEstimate);
ui->replayBufferGroupBox->setVisible(!lossless && replayBufferEnabled);
ui->simpleReplayBuf->setVisible(!lossless);
UpdateAutomaticReplayBufferCheckboxes();
}