Custom Output

This commit is contained in:
David Marsh 2024-07-18 17:18:50 +01:00
parent e76c4d3d33
commit d8ee4ac15c
2 changed files with 111 additions and 3 deletions

View File

@ -94,3 +94,11 @@ KickServer="Kick Server"
KickServerInfo="The stream server URL is preset for Kick, you do not need to change it."
KickStreamKey="Kick Stream Key"
KickStreamKeyInfo="Please enter your stream key, you can find this in your <a href='https://kick.com/dashboard/settings/stream'>Kick Creator Dashboard</a>."
# Custom Output Dialog
CustomOutput="Custom Output"
CustomServiceInfo="Please complete the following fields to add a new output."
CustomServer="Server"
CustomServerInfo="Please enter the server URL provided by the site."
CustomStreamKey="Stream Key"
CustomStreamKeyInfo="Please enter your stream key, provide by the site."

View File

@ -572,14 +572,114 @@ QWidget *OutputDialog::WizardInfoTwitter() {
QWidget *OutputDialog::WizardInfoUnknown() {
auto page = new QWidget(this);
auto pageLayout = new QVBoxLayout;
page->setStyleSheet("padding: 0px; margin: 0px;");
auto title = new QLabel(QString("Unknown Service page"));
// Layout
auto pageLayout = new QVBoxLayout;
pageLayout->setSpacing(12);
// Heading
auto title = new QLabel(QString::fromUtf8(obs_module_text("CustomServiceInfo")));
title->setWordWrap(true);
title->setTextFormat(Qt::RichText);
pageLayout->addWidget(title);
// Content
auto contentLayout = new QVBoxLayout;
// Confirm button - initialised here so we can set state in form input connects
auto confirmButton = generateButton(QString("Create Output"));
// Form
auto formLayout = new QFormLayout;
formLayout->setFieldGrowthPolicy(QFormLayout::AllNonFixedFieldsGrow);
formLayout->setLabelAlignment(Qt::AlignRight | Qt::AlignTrailing | Qt::AlignVCenter);
formLayout->setSpacing(12);
// Output name
auto outputNameField = new QLineEdit;
outputNameField->setText(QString::fromUtf8(obs_module_text("CustomOutput")));
outputNameField->setStyleSheet("padding: 4px 8px;");
connect(outputNameField, &QLineEdit::textEdited, [this, outputNameField, confirmButton] {
outputName = outputNameField->text();
validateOutputs(confirmButton);
});
formLayout->addRow(generateFormLabel("OutputName"), outputNameField);
// Server field
auto serverSelection = new QLineEdit;
serverSelection->setStyleSheet("padding: 4px 8px;");
connect(serverSelection, &QLineEdit::textEdited, [this, serverSelection, confirmButton] {
outputServer = serverSelection->text();
validateOutputs(confirmButton);
});
formLayout->addRow(generateFormLabel("CustomServer"), serverSelection);
// Server info
formLayout->addWidget(generateInfoLabel("CustomServerInfo"));
// Server key
auto outputKeyField = new QLineEdit;
outputKeyField->setStyleSheet("padding: 4px 8px;");
connect(outputKeyField, &QLineEdit::textEdited, [this, outputKeyField, confirmButton] {
outputKey = outputKeyField->text();
validateOutputs(confirmButton);
});
formLayout->addRow(generateFormLabel("CustomStreamKey"), outputKeyField);
// Server key info
formLayout->addWidget(generateInfoLabel("CustomStreamKeyInfo"));
contentLayout->addLayout(formLayout);
// spacing
auto spacer = new QSpacerItem(1, 20, QSizePolicy::Minimum, QSizePolicy::MinimumExpanding);
contentLayout->addSpacerItem(spacer);
pageLayout->addLayout(contentLayout);
// Controls
auto controlsLayout = new QHBoxLayout;
controlsLayout->setSpacing(12);
// back button
auto serviceButton = generateButton(QString("< Back"));
connect(serviceButton, &QPushButton::clicked, [this] {
stackedWidget->setCurrentIndex(0);
resetOutputs();
});
controlsLayout->addWidget(serviceButton, 0);
controlsLayout->addStretch(1);
// confirm button (initialised above so we can set state)
connect(confirmButton, &QPushButton::clicked, [this] {
acceptOutputs();
});
controlsLayout->addWidget(confirmButton, 0);
// Hook it all together
pageLayout->addLayout(controlsLayout);
page->setLayout(pageLayout);
// Defaults for when we're changed to
connect(stackedWidget, &QStackedWidget::currentChanged, [this, outputNameField, serverSelection, outputKeyField, confirmButton] {
if (stackedWidget->currentIndex() == 4) {
outputName = outputNameField->text();
outputServer = serverSelection->text();
outputKey = outputKeyField->text();
validateOutputs(confirmButton);
}
});
return page;
}