Abstract layout stuff + clean up layout

This commit is contained in:
David Marsh 2024-07-22 15:44:28 +01:00
parent 3dd93d7572
commit ed3e9ef508
2 changed files with 116 additions and 230 deletions

View File

@ -63,11 +63,15 @@ QLabel *generateFormLabel(std::string text) {
} }
// Helper for generating output name field // Helper for generating output name field
QLineEdit *OutputDialog::generateOutputNameField(std::string text, QPushButton *confirmButton) { QLineEdit *OutputDialog::generateOutputNameField(std::string text, QPushButton *confirmButton, bool edit) {
auto field = new QLineEdit; auto field = new QLineEdit;
field->setText(QString::fromUtf8(obs_module_text(text.c_str()))); field->setText(QString::fromUtf8(obs_module_text(text.c_str())));
field->setStyleSheet("padding: 4px 8px;"); field->setStyleSheet("padding: 4px 8px;");
if (edit) { // edit mode, set field value from output value
field->setText(outputName);
}
connect(field, &QLineEdit::textEdited, [this, field, confirmButton] { connect(field, &QLineEdit::textEdited, [this, field, confirmButton] {
outputName = field->text(); outputName = field->text();
validateOutputs(confirmButton); validateOutputs(confirmButton);
@ -77,11 +81,15 @@ QLineEdit *OutputDialog::generateOutputNameField(std::string text, QPushButton *
} }
// Helper for generating output server field // Helper for generating output server field
QLineEdit *OutputDialog::generateOutputServerField(QPushButton *confirmButton, bool locked) { QLineEdit *OutputDialog::generateOutputServerField(QPushButton *confirmButton, bool locked, bool edit) {
auto field = new QLineEdit; auto field = new QLineEdit;
field->setStyleSheet("padding: 4px 8px;"); field->setStyleSheet("padding: 4px 8px;");
field->setDisabled(locked); field->setDisabled(locked);
if (edit) { // edit mode, set field value from output value
field->setText(outputServer);
}
if (!locked) { if (!locked) {
connect(field, &QLineEdit::textEdited, [this, field, confirmButton] { connect(field, &QLineEdit::textEdited, [this, field, confirmButton] {
outputServer = field->text(); outputServer = field->text();
@ -134,10 +142,14 @@ QComboBox *OutputDialog::generateOutputServerCombo(std::string service, QPushBut
} }
// Helper for generating output key field // Helper for generating output key field
QLineEdit *OutputDialog::generateOutputKeyField(QPushButton *confirmButton) { QLineEdit *OutputDialog::generateOutputKeyField(QPushButton *confirmButton, bool edit) {
auto field = new QLineEdit; auto field = new QLineEdit;
field->setStyleSheet("padding: 4px 8px;"); field->setStyleSheet("padding: 4px 8px;");
if (edit) { // edit mode, set field value from output value
field->setText(outputKey);
}
connect(field, &QLineEdit::textEdited, [this, field, confirmButton] { connect(field, &QLineEdit::textEdited, [this, field, confirmButton] {
outputKey = field->text(); outputKey = field->text();
validateOutputs(confirmButton); validateOutputs(confirmButton);
@ -146,6 +158,24 @@ QLineEdit *OutputDialog::generateOutputKeyField(QPushButton *confirmButton) {
return field; return field;
} }
// Helper for generating wizard button layout
QHBoxLayout *OutputDialog::generateWizardButtonLayout(QPushButton *confirmButton, QPushButton *serviceButton, bool edit) {
auto layout = new QHBoxLayout;
layout->setSpacing(0);
layout->setContentsMargins(0,0,0,0);
if (!edit && serviceButton != nullptr) { // Not edit mode and we have a service (back) button
layout->addWidget(serviceButton, 1);
layout->addStretch(1);
layout->addWidget(confirmButton, 0, Qt::AlignRight);
} else { // edit mode, push the button to the right
layout->addWidget(confirmButton, 0, Qt::AlignRight);
}
return layout;
}
// Helper for generating QPushButtons w/ style // Helper for generating QPushButtons w/ style
QPushButton *generateButton(QString text) { QPushButton *generateButton(QString text) {
auto button = new QPushButton; auto button = new QPushButton;
@ -156,6 +186,18 @@ QPushButton *generateButton(QString text) {
return button; return button;
} }
// Helper for generating back button
QPushButton *OutputDialog::generateBackButton() {
auto button = generateButton(QString("< Back"));
connect(button, &QPushButton::clicked, [this] {
stackedWidget->setCurrentIndex(0);
resetOutputs();
});
return button;
}
QToolButton *OutputDialog::selectionButton(std::string title, QIcon icon, int selectionStep) { QToolButton *OutputDialog::selectionButton(std::string title, QIcon icon, int selectionStep) {
auto button = new QToolButton; auto button = new QToolButton;
@ -365,11 +407,11 @@ QWidget *OutputDialog::WizardInfoKick(bool edit) {
formLayout->setSpacing(12); formLayout->setSpacing(12);
// Output name // Output name
auto outputNameField = generateOutputNameField("KickOutput", confirmButton); auto outputNameField = generateOutputNameField("KickOutput", confirmButton, edit);
formLayout->addRow(generateFormLabel("OutputName"), outputNameField); formLayout->addRow(generateFormLabel("OutputName"), outputNameField);
// Server field // Server field
auto serverSelection = generateOutputServerField(confirmButton, true); auto serverSelection = generateOutputServerField(confirmButton, true, edit);
serverSelection->setText("rtmps://fa723fc1b171.global-contribute.live-video.net"); serverSelection->setText("rtmps://fa723fc1b171.global-contribute.live-video.net");
formLayout->addRow(generateFormLabel("KickServer"), serverSelection); formLayout->addRow(generateFormLabel("KickServer"), serverSelection);
@ -377,7 +419,7 @@ QWidget *OutputDialog::WizardInfoKick(bool edit) {
formLayout->addWidget(generateInfoLabel("KickServerInfo")); formLayout->addWidget(generateInfoLabel("KickServerInfo"));
// Server key // Server key
auto outputKeyField = generateOutputKeyField(confirmButton); auto outputKeyField = generateOutputKeyField(confirmButton, edit);
formLayout->addRow(generateFormLabel("KickStreamKey"), outputKeyField); formLayout->addRow(generateFormLabel("KickStreamKey"), outputKeyField);
// Server key info // Server key info
@ -391,32 +433,19 @@ QWidget *OutputDialog::WizardInfoKick(bool edit) {
pageLayout->addLayout(contentLayout); pageLayout->addLayout(contentLayout);
// Controls
auto controlsLayout = new QHBoxLayout;
controlsLayout->setSpacing(12);
// back button // back button
if (!edit) { auto serviceButton = edit ? nullptr : generateBackButton();
auto serviceButton = generateButton(QString("< Back"));
// Controls layout
connect(serviceButton, &QPushButton::clicked, [this] { auto controlsLayout = generateWizardButtonLayout(confirmButton, serviceButton, edit);
stackedWidget->setCurrentIndex(0);
resetOutputs();
});
controlsLayout->addWidget(serviceButton, 0);
controlsLayout->addStretch(1);
}
// confirm button (initialised above so we can set state) // confirm button (initialised above so we can set state)
connect(confirmButton, &QPushButton::clicked, [this] { connect(confirmButton, &QPushButton::clicked, [this] {
acceptOutputs(); acceptOutputs();
}); });
controlsLayout->addWidget(confirmButton, 0);
// Hook it all together // Hook it all together
pageLayout->addLayout(controlsLayout); pageLayout->addLayout(controlsLayout, 1);
page->setLayout(pageLayout); page->setLayout(pageLayout);
// Defaults for when we're changed to // Defaults for when we're changed to
@ -431,14 +460,6 @@ QWidget *OutputDialog::WizardInfoKick(bool edit) {
}); });
} }
// Edit changes
if (edit) {
outputNameField->setText(outputName);
serverSelection->setText(outputServer);
outputKeyField->setText(outputKey);
}
return page; return page;
} }
@ -467,18 +488,18 @@ QWidget *OutputDialog::WizardInfoYouTube(bool edit) {
formLayout->setSpacing(12); formLayout->setSpacing(12);
// Output name // Output name
auto outputNameField = generateOutputNameField("YouTubeOutput", confirmButton); auto outputNameField = generateOutputNameField("YouTubeOutput", confirmButton, edit);
formLayout->addRow(generateFormLabel("OutputName"), outputNameField); formLayout->addRow(generateFormLabel("OutputName"), outputNameField);
// Server selection // Server selection
auto serverSelection = generateOutputServerCombo("YouTube - RTMPS", confirmButton); auto serverSelection = generateOutputServerCombo("YouTube - RTMPS", confirmButton, edit);
formLayout->addRow(generateFormLabel("YouTubeServer"), serverSelection); formLayout->addRow(generateFormLabel("YouTubeServer"), serverSelection);
// Server info // Server info
formLayout->addWidget(generateInfoLabel("YouTubeServerInfo")); formLayout->addWidget(generateInfoLabel("YouTubeServerInfo"));
// Server key // Server key
auto outputKeyField = generateOutputKeyField(confirmButton); auto outputKeyField = generateOutputKeyField(confirmButton, edit);
formLayout->addRow(generateFormLabel("YouTubeStreamKey"), outputKeyField); formLayout->addRow(generateFormLabel("YouTubeStreamKey"), outputKeyField);
// Server key info // Server key info
@ -492,32 +513,19 @@ QWidget *OutputDialog::WizardInfoYouTube(bool edit) {
pageLayout->addLayout(contentLayout); pageLayout->addLayout(contentLayout);
// Controls
auto controlsLayout = new QHBoxLayout;
controlsLayout->setSpacing(12);
// back button // back button
if (!edit) { auto serviceButton = edit ? nullptr : generateBackButton();
auto serviceButton = generateButton(QString("< Back"));
// Controls layout
connect(serviceButton, &QPushButton::clicked, [this] { auto controlsLayout = generateWizardButtonLayout(confirmButton, serviceButton, edit);
stackedWidget->setCurrentIndex(0);
resetOutputs();
});
controlsLayout->addWidget(serviceButton, 0);
controlsLayout->addStretch(1);
}
// confirm button (initialised above so we can set state) // confirm button (initialised above so we can set state)
connect(confirmButton, &QPushButton::clicked, [this] { connect(confirmButton, &QPushButton::clicked, [this] {
acceptOutputs(); acceptOutputs();
}); });
controlsLayout->addWidget(confirmButton, 0);
// Hook it all together // Hook it all together
pageLayout->addLayout(controlsLayout); pageLayout->addLayout(controlsLayout, 1);
page->setLayout(pageLayout); page->setLayout(pageLayout);
// Defaults for when we're changed to // Defaults for when we're changed to
@ -531,13 +539,7 @@ QWidget *OutputDialog::WizardInfoYouTube(bool edit) {
} }
}); });
} }
// Edit changes
if (edit) {
outputNameField->setText(outputName);
outputKeyField->setText(outputKey);
}
return page; return page;
} }
@ -566,18 +568,18 @@ QWidget *OutputDialog::WizardInfoTwitter(bool edit) {
formLayout->setSpacing(12); formLayout->setSpacing(12);
// Output name // Output name
auto outputNameField = generateOutputNameField("TwitterOutput", confirmButton); auto outputNameField = generateOutputNameField("TwitterOutput", confirmButton, edit);
formLayout->addRow(generateFormLabel("OutputName"), outputNameField); formLayout->addRow(generateFormLabel("OutputName"), outputNameField);
// Server selection // Server selection
auto serverSelection = generateOutputServerCombo("Twitter", confirmButton); auto serverSelection = generateOutputServerCombo("Twitter", confirmButton, edit);
formLayout->addRow(generateFormLabel("TwitterServer"), serverSelection); formLayout->addRow(generateFormLabel("TwitterServer"), serverSelection);
// Server info // Server info
formLayout->addWidget(generateInfoLabel("TwitterServerInfo")); formLayout->addWidget(generateInfoLabel("TwitterServerInfo"));
// Server key // Server key
auto outputKeyField = generateOutputKeyField(confirmButton); auto outputKeyField = generateOutputKeyField(confirmButton, edit);
formLayout->addRow(generateFormLabel("TwitterStreamKey"), outputKeyField); formLayout->addRow(generateFormLabel("TwitterStreamKey"), outputKeyField);
// Server key info // Server key info
@ -591,32 +593,19 @@ QWidget *OutputDialog::WizardInfoTwitter(bool edit) {
pageLayout->addLayout(contentLayout); pageLayout->addLayout(contentLayout);
// Controls
auto controlsLayout = new QHBoxLayout;
controlsLayout->setSpacing(12);
// back button // back button
if (!edit) { auto serviceButton = edit ? nullptr : generateBackButton();
auto serviceButton = generateButton(QString("< Back"));
// Controls layout
connect(serviceButton, &QPushButton::clicked, [this] { auto controlsLayout = generateWizardButtonLayout(confirmButton, serviceButton, edit);
stackedWidget->setCurrentIndex(0);
resetOutputs();
});
controlsLayout->addWidget(serviceButton, 0);
controlsLayout->addStretch(1);
}
// confirm button (initialised above so we can set state) // confirm button (initialised above so we can set state)
connect(confirmButton, &QPushButton::clicked, [this] { connect(confirmButton, &QPushButton::clicked, [this] {
acceptOutputs(); acceptOutputs();
}); });
controlsLayout->addWidget(confirmButton, 0);
// Hook it all together // Hook it all together
pageLayout->addLayout(controlsLayout); pageLayout->addLayout(controlsLayout, 1);
page->setLayout(pageLayout); page->setLayout(pageLayout);
// Defaults for when we're changed to // Defaults for when we're changed to
@ -631,12 +620,6 @@ QWidget *OutputDialog::WizardInfoTwitter(bool edit) {
}); });
} }
// Edit changes
if (edit) {
outputNameField->setText(outputName);
outputKeyField->setText(outputKey);
}
return page; return page;
} }
@ -667,18 +650,18 @@ QWidget *OutputDialog::WizardInfoUnknown(bool edit) {
formLayout->setSpacing(12); formLayout->setSpacing(12);
// Output name // Output name
auto outputNameField = generateOutputNameField("CustomOutput", confirmButton); auto outputNameField = generateOutputNameField("CustomOutput", confirmButton, edit);
formLayout->addRow(generateFormLabel("OutputName"), outputNameField); formLayout->addRow(generateFormLabel("OutputName"), outputNameField);
// Server field // Server field
auto serverSelection = generateOutputServerField(confirmButton, false); auto serverSelection = generateOutputServerField(confirmButton, false, edit);
formLayout->addRow(generateFormLabel("CustomServer"), serverSelection); formLayout->addRow(generateFormLabel("CustomServer"), serverSelection);
// Server info // Server info
formLayout->addWidget(generateInfoLabel("CustomServerInfo")); formLayout->addWidget(generateInfoLabel("CustomServerInfo"));
// Server key // Server key
auto outputKeyField = generateOutputKeyField(confirmButton); auto outputKeyField = generateOutputKeyField(confirmButton, edit);
formLayout->addRow(generateFormLabel("CustomStreamKey"), outputKeyField); formLayout->addRow(generateFormLabel("CustomStreamKey"), outputKeyField);
// Server key info // Server key info
@ -692,32 +675,19 @@ QWidget *OutputDialog::WizardInfoUnknown(bool edit) {
pageLayout->addLayout(contentLayout); pageLayout->addLayout(contentLayout);
// Controls
auto controlsLayout = new QHBoxLayout;
controlsLayout->setSpacing(12);
// back button // back button
if (!edit) { auto serviceButton = edit ? nullptr : generateBackButton();
auto serviceButton = generateButton(QString("< Back"));
// Controls layout
connect(serviceButton, &QPushButton::clicked, [this] { auto controlsLayout = generateWizardButtonLayout(confirmButton, serviceButton, edit);
stackedWidget->setCurrentIndex(0);
resetOutputs();
});
controlsLayout->addWidget(serviceButton, 0);
controlsLayout->addStretch(1);
}
// confirm button (initialised above so we can set state) // confirm button (initialised above so we can set state)
connect(confirmButton, &QPushButton::clicked, [this] { connect(confirmButton, &QPushButton::clicked, [this] {
acceptOutputs(); acceptOutputs();
}); });
controlsLayout->addWidget(confirmButton, 0);
// Hook it all together // Hook it all together
pageLayout->addLayout(controlsLayout); pageLayout->addLayout(controlsLayout, 1);
page->setLayout(pageLayout); page->setLayout(pageLayout);
// Defaults for when we're changed to // Defaults for when we're changed to
@ -732,13 +702,6 @@ QWidget *OutputDialog::WizardInfoUnknown(bool edit) {
}); });
} }
// Edit changes
if (edit) {
outputNameField->setText(outputName);
serverSelection->setText(outputServer);
outputKeyField->setText(outputKey);
}
return page; return page;
} }
@ -767,7 +730,7 @@ QWidget *OutputDialog::WizardInfoTwitch(bool edit) {
formLayout->setSpacing(12); formLayout->setSpacing(12);
// Output name // Output name
auto outputNameField = generateOutputNameField("TwitchOutput", confirmButton); auto outputNameField = generateOutputNameField("TwitchOutput", confirmButton, edit);
formLayout->addRow(generateFormLabel("OutputName"), outputNameField); formLayout->addRow(generateFormLabel("OutputName"), outputNameField);
// Server selection // Server selection
@ -778,7 +741,7 @@ QWidget *OutputDialog::WizardInfoTwitch(bool edit) {
formLayout->addWidget(generateInfoLabel("TwitchServerInfo")); formLayout->addWidget(generateInfoLabel("TwitchServerInfo"));
// Server key // Server key
auto outputKeyField = generateOutputKeyField(confirmButton); auto outputKeyField = generateOutputKeyField(confirmButton, edit);
formLayout->addRow(generateFormLabel("TwitchStreamKey"), outputKeyField); formLayout->addRow(generateFormLabel("TwitchStreamKey"), outputKeyField);
// Server key info // Server key info
@ -792,32 +755,19 @@ QWidget *OutputDialog::WizardInfoTwitch(bool edit) {
pageLayout->addLayout(contentLayout); pageLayout->addLayout(contentLayout);
// Controls
auto controlsLayout = new QHBoxLayout;
controlsLayout->setSpacing(12);
// back button // back button
if (!edit) { auto serviceButton = edit ? nullptr : generateBackButton();
auto serviceButton = generateButton(QString("< Back"));
// Controls layout
connect(serviceButton, &QPushButton::clicked, [this] { auto controlsLayout = generateWizardButtonLayout(confirmButton, serviceButton, edit);
stackedWidget->setCurrentIndex(0);
resetOutputs();
});
controlsLayout->addWidget(serviceButton, 0);
controlsLayout->addStretch(1);
}
// confirm button (initialised above so we can set state) // confirm button (initialised above so we can set state)
connect(confirmButton, &QPushButton::clicked, [this] { connect(confirmButton, &QPushButton::clicked, [this] {
acceptOutputs(); acceptOutputs();
}); });
controlsLayout->addWidget(confirmButton, 0);
// Hook it all together // Hook it all together
pageLayout->addLayout(controlsLayout); pageLayout->addLayout(controlsLayout, 1);
page->setLayout(pageLayout); page->setLayout(pageLayout);
// Defaults for when we're changed to // Defaults for when we're changed to
@ -833,12 +783,6 @@ QWidget *OutputDialog::WizardInfoTwitch(bool edit) {
}); });
} }
// Edit changes
if (edit) {
outputNameField->setText(outputName);
outputKeyField->setText(outputKey);
}
return page; return page;
} }
@ -869,11 +813,11 @@ QWidget *OutputDialog::WizardInfoTrovo(bool edit) {
formLayout->setSpacing(12); formLayout->setSpacing(12);
// Output name // Output name
auto outputNameField = generateOutputNameField("TrovoOutput", confirmButton); auto outputNameField = generateOutputNameField("TrovoOutput", confirmButton, edit);
formLayout->addRow(generateFormLabel("OutputName"), outputNameField); formLayout->addRow(generateFormLabel("OutputName"), outputNameField);
// Server field // Server field
auto serverSelection = generateOutputServerField(confirmButton, true); auto serverSelection = generateOutputServerField(confirmButton, true, edit);
serverSelection->setText("rtmp://livepush.trovo.live/live/"); serverSelection->setText("rtmp://livepush.trovo.live/live/");
@ -883,7 +827,7 @@ QWidget *OutputDialog::WizardInfoTrovo(bool edit) {
formLayout->addWidget(generateInfoLabel("TrovoServerInfo")); formLayout->addWidget(generateInfoLabel("TrovoServerInfo"));
// Server key // Server key
auto outputKeyField = generateOutputKeyField(confirmButton); auto outputKeyField = generateOutputKeyField(confirmButton, edit);
formLayout->addRow(generateFormLabel("TrovoStreamKey"), outputKeyField); formLayout->addRow(generateFormLabel("TrovoStreamKey"), outputKeyField);
// Server key info // Server key info
@ -897,32 +841,19 @@ QWidget *OutputDialog::WizardInfoTrovo(bool edit) {
pageLayout->addLayout(contentLayout); pageLayout->addLayout(contentLayout);
// Controls
auto controlsLayout = new QHBoxLayout;
controlsLayout->setSpacing(12);
// back button // back button
if (!edit) { auto serviceButton = edit ? nullptr : generateBackButton();
auto serviceButton = generateButton(QString("< Back"));
// Controls layout
connect(serviceButton, &QPushButton::clicked, [this] { auto controlsLayout = generateWizardButtonLayout(confirmButton, serviceButton, edit);
stackedWidget->setCurrentIndex(0);
resetOutputs();
});
controlsLayout->addWidget(serviceButton, 0);
controlsLayout->addStretch(1);
}
// confirm button (initialised above so we can set state) // confirm button (initialised above so we can set state)
connect(confirmButton, &QPushButton::clicked, [this] { connect(confirmButton, &QPushButton::clicked, [this] {
acceptOutputs(); acceptOutputs();
}); });
controlsLayout->addWidget(confirmButton, 0);
// Hook it all together // Hook it all together
pageLayout->addLayout(controlsLayout); pageLayout->addLayout(controlsLayout, 1);
page->setLayout(pageLayout); page->setLayout(pageLayout);
// Defaults for when we're changed to // Defaults for when we're changed to
@ -937,13 +868,6 @@ QWidget *OutputDialog::WizardInfoTrovo(bool edit) {
}); });
} }
// Edit changes
if (edit) {
outputNameField->setText(outputName);
serverSelection->setText(outputServer);
outputKeyField->setText(outputKey);
}
return page; return page;
} }
@ -974,18 +898,18 @@ QWidget *OutputDialog::WizardInfoTikTok(bool edit) {
formLayout->setSpacing(12); formLayout->setSpacing(12);
// Output name // Output name
auto outputNameField = generateOutputNameField("TikTokOutput", confirmButton); auto outputNameField = generateOutputNameField("TikTokOutput", confirmButton, edit);
formLayout->addRow(generateFormLabel("OutputName"), outputNameField); formLayout->addRow(generateFormLabel("OutputName"), outputNameField);
// Server field // Server field
auto serverSelection = generateOutputServerField(confirmButton, false); auto serverSelection = generateOutputServerField(confirmButton, false, edit);
formLayout->addRow(generateFormLabel("TikTokServer"), serverSelection); formLayout->addRow(generateFormLabel("TikTokServer"), serverSelection);
// Server info // Server info
formLayout->addWidget(generateInfoLabel("TikTokServerInfo")); formLayout->addWidget(generateInfoLabel("TikTokServerInfo"));
// Server key // Server key
auto outputKeyField = generateOutputKeyField(confirmButton); auto outputKeyField = generateOutputKeyField(confirmButton, edit);
formLayout->addRow(generateFormLabel("TikTokStreamKey"), outputKeyField); formLayout->addRow(generateFormLabel("TikTokStreamKey"), outputKeyField);
// Server key info // Server key info
@ -999,32 +923,19 @@ QWidget *OutputDialog::WizardInfoTikTok(bool edit) {
pageLayout->addLayout(contentLayout); pageLayout->addLayout(contentLayout);
// Controls
auto controlsLayout = new QHBoxLayout;
controlsLayout->setSpacing(12);
// back button // back button
if (!edit) { auto serviceButton = edit ? nullptr : generateBackButton();
auto serviceButton = generateButton(QString("< Back"));
// Controls layout
connect(serviceButton, &QPushButton::clicked, [this] { auto controlsLayout = generateWizardButtonLayout(confirmButton, serviceButton, edit);
stackedWidget->setCurrentIndex(0);
resetOutputs();
});
controlsLayout->addWidget(serviceButton, 0);
controlsLayout->addStretch(1);
}
// confirm button (initialised above so we can set state) // confirm button (initialised above so we can set state)
connect(confirmButton, &QPushButton::clicked, [this] { connect(confirmButton, &QPushButton::clicked, [this] {
acceptOutputs(); acceptOutputs();
}); });
controlsLayout->addWidget(confirmButton, 0);
// Hook it all together // Hook it all together
pageLayout->addLayout(controlsLayout); pageLayout->addLayout(controlsLayout, 1);
page->setLayout(pageLayout); page->setLayout(pageLayout);
// Defaults for when we're changed to // Defaults for when we're changed to
@ -1039,14 +950,6 @@ QWidget *OutputDialog::WizardInfoTikTok(bool edit) {
}); });
} }
// Edit changes
if (edit) {
outputNameField->setText(outputName);
serverSelection->setText(outputServer);
outputKeyField->setText(outputKey);
}
return page; return page;
} }
@ -1077,11 +980,11 @@ QWidget *OutputDialog::WizardInfoFacebook(bool edit) {
formLayout->setSpacing(12); formLayout->setSpacing(12);
// Output name // Output name
auto outputNameField = generateOutputNameField("FacebookOutput", confirmButton); auto outputNameField = generateOutputNameField("FacebookOutput", confirmButton, edit);
formLayout->addRow(generateFormLabel("OutputName"), outputNameField); formLayout->addRow(generateFormLabel("OutputName"), outputNameField);
// Server field // Server field
auto serverSelection = generateOutputServerField(confirmButton, true); auto serverSelection = generateOutputServerField(confirmButton, true, edit);
serverSelection->setText("rtmps://rtmp-api.facebook.com:443/rtmp/"); serverSelection->setText("rtmps://rtmp-api.facebook.com:443/rtmp/");
formLayout->addRow(generateFormLabel("FacebookServer"), serverSelection); formLayout->addRow(generateFormLabel("FacebookServer"), serverSelection);
@ -1090,7 +993,7 @@ QWidget *OutputDialog::WizardInfoFacebook(bool edit) {
formLayout->addWidget(generateInfoLabel("FacebookServerInfo")); formLayout->addWidget(generateInfoLabel("FacebookServerInfo"));
// Server key // Server key
auto outputKeyField = generateOutputKeyField(confirmButton); auto outputKeyField = generateOutputKeyField(confirmButton, edit);
formLayout->addRow(generateFormLabel("FacebookStreamKey"), outputKeyField); formLayout->addRow(generateFormLabel("FacebookStreamKey"), outputKeyField);
// Server key info // Server key info
@ -1104,32 +1007,19 @@ QWidget *OutputDialog::WizardInfoFacebook(bool edit) {
pageLayout->addLayout(contentLayout); pageLayout->addLayout(contentLayout);
// Controls
auto controlsLayout = new QHBoxLayout;
controlsLayout->setSpacing(12);
// back button // back button
if (!edit) { auto serviceButton = edit ? nullptr : generateBackButton();
auto serviceButton = generateButton(QString("< Back"));
// Controls layout
connect(serviceButton, &QPushButton::clicked, [this] { auto controlsLayout = generateWizardButtonLayout(confirmButton, serviceButton, edit);
stackedWidget->setCurrentIndex(0);
resetOutputs();
});
controlsLayout->addWidget(serviceButton, 0);
controlsLayout->addStretch(1);
}
// confirm button (initialised above so we can set state) // confirm button (initialised above so we can set state)
connect(confirmButton, &QPushButton::clicked, [this] { connect(confirmButton, &QPushButton::clicked, [this] {
acceptOutputs(); acceptOutputs();
}); });
controlsLayout->addWidget(confirmButton, 0);
// Hook it all together // Hook it all together
pageLayout->addLayout(controlsLayout); pageLayout->addLayout(controlsLayout, 1);
page->setLayout(pageLayout); page->setLayout(pageLayout);
// Defaults for when we're changed to // Defaults for when we're changed to
@ -1144,12 +1034,5 @@ QWidget *OutputDialog::WizardInfoFacebook(bool edit) {
}); });
} }
// Edit changes
if (edit) {
outputNameField->setText(outputName);
serverSelection->setText(outputServer);
outputKeyField->setText(outputKey);
}
return page; return page;
} }

View File

@ -6,6 +6,7 @@
#include <QToolButton> #include <QToolButton>
#include <QComboBox> #include <QComboBox>
#include <QPushButton> #include <QPushButton>
#include <QHBoxLayout>
#include <QLineEdit> #include <QLineEdit>
#include <QString> #include <QString>
#include "obs-data.h" #include "obs-data.h"
@ -43,11 +44,13 @@ private:
void validateOutputs(QPushButton *confirmButton); void validateOutputs(QPushButton *confirmButton);
// Generators // Generators
QLineEdit *generateOutputNameField(std::string text, QPushButton *confirmButton); QLineEdit *generateOutputNameField(std::string text, QPushButton *confirmButton, bool edit = false);
QLineEdit *generateOutputServerField(QPushButton *confirmButton, bool locked); QLineEdit *generateOutputServerField(QPushButton *confirmButton, bool locked, bool edit = false);
QComboBox *generateOutputServerCombo(std::string service, QPushButton *confirmButton, bool edit = false); QComboBox *generateOutputServerCombo(std::string service, QPushButton *confirmButton, bool edit = false);
QLineEdit *generateOutputKeyField(QPushButton *confirmButton); QLineEdit *generateOutputKeyField(QPushButton *confirmButton, bool edit = false);
QHBoxLayout *generateWizardButtonLayout(QPushButton *confirmButton, QPushButton *serviceButton, bool edit);
QPushButton *generateBackButton();
obs_data_t *getService(std::string serviceName); obs_data_t *getService(std::string serviceName);
QStackedWidget *stackedWidget; QStackedWidget *stackedWidget;