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
+7 -11
View File
@@ -2162,21 +2162,17 @@
<item row="7" column="1">
<widget class="QLineEdit" name="simpleOutMuxCustom"/>
</item>
<item row="8" column="1">
<widget class="QCheckBox" name="simpleReplayBuf">
<property name="text">
<string>Basic.Settings.Output.UseReplayBuffer</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="replayBufferGroupBox">
<widget class="QGroupBox" name="simpleReplayBuf">
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
<property name="title">
<string>ReplayBuffer</string>
</property>
+20 -11
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();
}
+2
View File
@@ -168,6 +168,8 @@ private:
const char *value);
void SaveCheckBox(QAbstractButton *widget, const char *section,
const char *value, bool invert = false);
void SaveGroupBox(QGroupBox *widget, const char *section,
const char *value);
void SaveEdit(QLineEdit *widget, const char *section,
const char *value);
void SaveSpinBox(QSpinBox *widget, const char *section,