UI: Disallow exiting settings with no track in simple mode

This commit is contained in:
gxalpha
2023-05-12 18:01:00 +02:00
committed by Ryan Foster
parent 63e0bff5e6
commit 2bc368349f
3 changed files with 31 additions and 8 deletions

View File

@@ -3853,14 +3853,8 @@ void OBSBasicSettings::SaveOutputSettings()
SaveCheckBox(ui->simpleReplayBuf, "SimpleOutput", "RecRB");
SaveSpinBox(ui->simpleRBSecMax, "SimpleOutput", "RecRBTime");
SaveSpinBox(ui->simpleRBMegsMax, "SimpleOutput", "RecRBSize");
config_set_int(
main->Config(), "SimpleOutput", "RecTracks",
(ui->simpleOutRecTrack1->isChecked() ? (1 << 0) : 0) |
(ui->simpleOutRecTrack2->isChecked() ? (1 << 1) : 0) |
(ui->simpleOutRecTrack3->isChecked() ? (1 << 2) : 0) |
(ui->simpleOutRecTrack4->isChecked() ? (1 << 3) : 0) |
(ui->simpleOutRecTrack5->isChecked() ? (1 << 4) : 0) |
(ui->simpleOutRecTrack6->isChecked() ? (1 << 5) : 0));
config_set_int(main->Config(), "SimpleOutput", "RecTracks",
SimpleOutGetSelectedAudioTracks());
curAdvStreamEncoder = GetComboData(ui->advOutEncoder);
@@ -4219,6 +4213,7 @@ bool OBSBasicSettings::QueryAllowedToClose()
bool invalidEncoder = false;
bool invalidFormat = false;
bool invalidTracks = false;
if (simple) {
if (ui->simpleOutRecEncoder->currentIndex() == -1 ||
ui->simpleOutStrEncoder->currentIndex() == -1 ||
@@ -4228,6 +4223,14 @@ bool OBSBasicSettings::QueryAllowedToClose()
if (ui->simpleOutRecFormat->currentIndex() == -1)
invalidFormat = true;
QString qual =
ui->simpleOutRecQuality->currentData().toString();
QString format =
ui->simpleOutRecFormat->currentData().toString();
if (SimpleOutGetSelectedAudioTracks() == 0 &&
qual != "Stream" && format != "flv")
invalidTracks = true;
} else {
if (ui->advOutRecEncoder->currentIndex() == -1 ||
ui->advOutEncoder->currentIndex() == -1 ||
@@ -4246,6 +4249,12 @@ bool OBSBasicSettings::QueryAllowedToClose()
this, QTStr("CodecCompat.ContainerMissingOnExit.Title"),
QTStr("CodecCompat.ContainerMissingOnExit.Text"));
return false;
} else if (invalidTracks) {
OBSMessageBox::warning(
this,
QTStr("OutputWarnings.NoTracksSelectedOnExit.Title"),
QTStr("OutputWarnings.NoTracksSelectedOnExit.Text"));
return false;
}
return true;
@@ -6157,6 +6166,17 @@ int OBSBasicSettings::CurrentFLVTrack()
return 0;
}
int OBSBasicSettings::SimpleOutGetSelectedAudioTracks()
{
int tracks = (ui->simpleOutRecTrack1->isChecked() ? (1 << 0) : 0) |
(ui->simpleOutRecTrack2->isChecked() ? (1 << 1) : 0) |
(ui->simpleOutRecTrack3->isChecked() ? (1 << 2) : 0) |
(ui->simpleOutRecTrack4->isChecked() ? (1 << 3) : 0) |
(ui->simpleOutRecTrack5->isChecked() ? (1 << 4) : 0) |
(ui->simpleOutRecTrack6->isChecked() ? (1 << 5) : 0);
return tracks;
}
/* Using setEditable(true) on a QComboBox when there's a custom style in use
* does not work properly, so instead completely recreate the widget, which
* seems to work fine. */