Make Default view controls use grid layout, make settings accept update view controls

This commit is contained in:
Gary Talent 2023-07-20 20:26:23 -05:00
parent 0a28e80455
commit 877f894511
2 changed files with 17 additions and 11 deletions

View File

@ -22,13 +22,13 @@ MainWindow::MainWindow(QWidget *parent): QMainWindow(parent) {
setWindowTitle(tr("Slide Controller 9000")); setWindowTitle(tr("Slide Controller 9000"));
setupMenu(); setupMenu();
const auto mainWidget = new QWidget(this); const auto mainWidget = new QWidget(this);
const auto rootLyt = new QVBoxLayout; m_rootLyt = new QVBoxLayout;
const auto controlsLayout = new QGridLayout; const auto controlsLayout = new QGridLayout;
m_slideView = new SlideView(this); m_slideView = new SlideView(this);
setCentralWidget(mainWidget); setCentralWidget(mainWidget);
mainWidget->setLayout(rootLyt); mainWidget->setLayout(m_rootLyt);
rootLyt->addWidget(m_slideView); m_rootLyt->addWidget(m_slideView);
rootLyt->addLayout(controlsLayout); m_rootLyt->addLayout(controlsLayout);
// setup slide controls // setup slide controls
const auto btnPrevSong = new QPushButton(tr("Previous Song (Left)"), this); const auto btnPrevSong = new QPushButton(tr("Previous Song (Left)"), this);
const auto btnPrevSlide = new QPushButton(tr("Previous Slide (Up)"), this); const auto btnPrevSlide = new QPushButton(tr("Previous Slide (Up)"), this);
@ -47,7 +47,7 @@ MainWindow::MainWindow(QWidget *parent): QMainWindow(parent) {
btnPrevSong->setFixedWidth(135); btnPrevSong->setFixedWidth(135);
btnNextSlide->setFixedWidth(135); btnNextSlide->setFixedWidth(135);
btnPrevSlide->setFixedWidth(135); btnPrevSlide->setFixedWidth(135);
setupViewControls(rootLyt); setupViewControls(m_rootLyt);
connect(btnNextSlide, &QPushButton::clicked, &m_openlpClient, &OpenLPClient::nextSlide); connect(btnNextSlide, &QPushButton::clicked, &m_openlpClient, &OpenLPClient::nextSlide);
connect(btnPrevSlide, &QPushButton::clicked, &m_openlpClient, &OpenLPClient::prevSlide); connect(btnPrevSlide, &QPushButton::clicked, &m_openlpClient, &OpenLPClient::prevSlide);
connect(btnNextSong, &QPushButton::clicked, &m_openlpClient, &OpenLPClient::nextSong); connect(btnNextSong, &QPushButton::clicked, &m_openlpClient, &OpenLPClient::nextSong);
@ -86,14 +86,14 @@ void MainWindow::setupMenu() {
fileMenu->addAction(quitAct); fileMenu->addAction(quitAct);
} }
void MainWindow::setupDefaultViewControls(QHBoxLayout *viewCtlLyt) { void MainWindow::setupDefaultViewControls(QGridLayout *viewCtlLyt) {
auto const mainWidget = viewCtlLyt->parentWidget(); auto const mainWidget = viewCtlLyt->parentWidget();
auto const btnHideSlides = new QPushButton(tr("1. Hide"), mainWidget); auto const btnHideSlides = new QPushButton(tr("1. Hide"), mainWidget);
auto const btnOpenLpShowSlides = new QPushButton(tr("2. Show in OpenLP Only"), mainWidget); auto const btnOpenLpShowSlides = new QPushButton(tr("2. Show in OpenLP Only"), mainWidget);
auto const btnShowSlides = new QPushButton(tr("3. Show"), mainWidget); auto const btnShowSlides = new QPushButton(tr("3. Show"), mainWidget);
viewCtlLyt->addWidget(btnHideSlides); viewCtlLyt->addWidget(btnHideSlides, 0, 0);
viewCtlLyt->addWidget(btnOpenLpShowSlides); viewCtlLyt->addWidget(btnOpenLpShowSlides, 0, 1);
viewCtlLyt->addWidget(btnShowSlides); viewCtlLyt->addWidget(btnShowSlides, 0, 2);
btnHideSlides->setShortcut(Qt::Key_1); btnHideSlides->setShortcut(Qt::Key_1);
btnOpenLpShowSlides->setShortcut(Qt::Key_2); btnOpenLpShowSlides->setShortcut(Qt::Key_2);
btnHideSlides->setToolTip(tr("Also hides slides in OBS")); btnHideSlides->setToolTip(tr("Also hides slides in OBS"));
@ -158,7 +158,11 @@ void MainWindow::setupViewControls(QVBoxLayout *rootLyt) {
.obsSlides = false, .obsSlides = false,
}); });
} }
setupCustomViewControls(views, viewCtlLyt); if (views.empty()) {
setupDefaultViewControls(viewCtlLyt);
} else {
setupCustomViewControls(views, viewCtlLyt);
}
} }
void MainWindow::openSettings() { void MainWindow::openSettings() {
@ -168,6 +172,7 @@ void MainWindow::openSettings() {
m_cameraClient.setBaseUrl(); m_cameraClient.setBaseUrl();
m_obsClient.setBaseUrl(); m_obsClient.setBaseUrl();
m_openlpClient.setBaseUrl(); m_openlpClient.setBaseUrl();
setupViewControls(m_rootLyt);
} }
} }

View File

@ -28,6 +28,7 @@ class MainWindow: public QMainWindow {
bool m_cameraConnected = false; bool m_cameraConnected = false;
bool m_openLpConnected = false; bool m_openLpConnected = false;
bool m_obsConnected = false; bool m_obsConnected = false;
class QVBoxLayout *m_rootLyt = nullptr;
class QHBoxLayout *m_viewControlsParentLyt = nullptr; class QHBoxLayout *m_viewControlsParentLyt = nullptr;
class QWidget *m_viewControlsParent = nullptr; class QWidget *m_viewControlsParent = nullptr;
class QWidget *m_viewControls = nullptr; class QWidget *m_viewControls = nullptr;
@ -39,7 +40,7 @@ class MainWindow: public QMainWindow {
private: private:
void setupMenu(); void setupMenu();
void setupDefaultViewControls(class QHBoxLayout *rootLyt); void setupDefaultViewControls(class QGridLayout *rootLyt);
void setupCustomViewControls(QVector<View> const&views, class QGridLayout *rootLyt); void setupCustomViewControls(QVector<View> const&views, class QGridLayout *rootLyt);