diff options
Diffstat (limited to 'src/loginform.cpp')
-rw-r--r-- | src/loginform.cpp | 52 |
1 files changed, 32 insertions, 20 deletions
diff --git a/src/loginform.cpp b/src/loginform.cpp index 769c104..50bd08e 100644 --- a/src/loginform.cpp +++ b/src/loginform.cpp @@ -43,7 +43,8 @@ LoginForm::LoginForm(QWidget *parent) : ui(new Ui::LoginForm), browser(nullptr), clearMsg(false), - capsOn(-1) + capsOn(-1), + pageCount(0) { ui->setupUi(this); origSize = shibSize = sizeHint(); @@ -166,8 +167,8 @@ void LoginForm::initialize() }); resetFormTimer.start(Settings::resetForm() * 1000); } + ui->backButton->hide(); - int pageCount = 0; if (Settings::guestSessionEnabled()) { pageCount++; if (!Settings::guestSessionButtonText().isEmpty()) { @@ -194,19 +195,7 @@ void LoginForm::initialize() if (!Settings::shibSessionButtonText().isEmpty()) { ui->shibButton->setText(Settings::shibSessionButtonText()); } - connect(ui->shibButton, &QAbstractButton::released, this, [this]() { - if (browser == nullptr) { - browser = new WebView(ui->shibPage); - ui->verticalLayout_5->addWidget(browser); - connect(browser, &WebView::triggerReset, [this](const QString &message) { - this->showMessage(message, true); - ui->loginChooser->setCurrentWidget(ui->welcomePage); - }); - connect(browser, &WebView::startAuthentication, this, &LoginForm::startAuthAs); - } - browser->reset(Settings::shibUrl()); - ui->loginChooser->setCurrentWidget(ui->shibPage); - }); + connect(ui->shibButton, &QAbstractButton::released, this, &LoginForm::showShibWindow); // Reduce minimum size of hostname/icon bar ui->frame->setMinimumSize(10, 30); ui->frame->setMaximumSize(99999, ui->iconLabel->height()); @@ -223,10 +212,10 @@ void LoginForm::initialize() } if (pageCount > 1) { - ui->loginChooser->setCurrentWidget(ui->welcomePage); connect(ui->backButton, &QAbstractButton::released, this, [this]() { resetForm(); }); + ui->loginChooser->setCurrentWidget(ui->welcomePage); connect(ui->loginChooser, &QStackedWidget::currentChanged, this, [this]() { if (ui->loginChooser->currentWidget() == ui->welcomePage) { ui->backButton->hide(); @@ -239,7 +228,7 @@ void LoginForm::initialize() ui->userInput->setFocus(); }); } else if (Settings::shibSessionEnabled()) { - ui->loginChooser->setCurrentWidget(ui->shibPage); + this->showShibWindow(); } else if (Settings::guestSessionEnabled()) { ui->loginChooser->setCurrentWidget(ui->guestPage); } else { @@ -276,7 +265,6 @@ void LoginForm::initialize() // Load regexp for name substitution NameReplace::loadSubs(); - ui->backButton->hide(); ui->leaveComboBox->setDisabled(ui->leaveComboBox->count() <= 1); ui->passwordInput->clear(); this->layout()->setSizeConstraint(QLayout::SetFixedSize); @@ -284,6 +272,25 @@ void LoginForm::initialize() checkCaps(); } +void LoginForm::showShibWindow() { + if (browser == nullptr) { + browser = new WebView(ui->shibPage); + ui->verticalLayout_5->addWidget(browser); + connect(browser, &WebView::triggerReset, [this](const QString &message) { + this->showMessage(message, true); + if (pageCount == 1) { + showShibWindow(); + } else { + ui->loginChooser->setCurrentWidget(ui->welcomePage); + } + }); + connect(browser, &WebView::startAuthentication, this, &LoginForm::startAuthAs); + } + browser->reset(Settings::shibUrl()); + ui->loginChooser->setCurrentWidget(ui->shibPage); + setBrowserSize(); +} + void LoginForm::checkCaps() { unsigned int mask = getKeyMask(QX11Info::display()); @@ -465,12 +472,17 @@ void LoginForm::keyPressEvent(QKeyEvent *event) void LoginForm::resetForm() { - if (Settings::guestSessionEnabled() || Settings::shibSessionEnabled()) { + std::cerr << "PageCount: " << pageCount; + if (pageCount > 1) { ui->loginChooser->setCurrentWidget(ui->welcomePage); } ui->passwordInput->clear(); ui->userInput->clear(); - ui->userInput->setFocus(); + if (pageCount == 1) { + if (Settings::userSessionEnabled()) { + ui->userInput->setFocus(); + } + } } bool LoginForm::eventFilter(QObject *object, QEvent *event) |