summaryrefslogtreecommitdiffstats
path: root/src/loginform.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/loginform.cpp')
-rw-r--r--src/loginform.cpp52
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)