diff options
Diffstat (limited to 'src/loginform.cpp')
-rw-r--r-- | src/loginform.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/loginform.cpp b/src/loginform.cpp index a47767a..9016d41 100644 --- a/src/loginform.cpp +++ b/src/loginform.cpp @@ -105,11 +105,53 @@ void LoginForm::initialize() connect(Global::greeter(), &QLightDM::Greeter::showPrompt, this, &LoginForm::onPrompt); connect(Global::greeter(), &QLightDM::Greeter::showMessage, this, &LoginForm::onMessage); connect(Global::greeter(), &QLightDM::Greeter::authenticationComplete, this, &LoginForm::onAuthenticationComplete); + + if (Settings::guestSessionEnabled()) { + if (!Settings::guestSessionButtonText().isEmpty()) { + ui->guestButton->setText(Settings::guestSessionButtonText()); + } + if (!Settings::userSessionButtonText().isEmpty()) { + ui->loginButton->setText(Settings::userSessionButtonText()); + } + if (!Settings::guestSessionStartText().isEmpty()) { + ui->guestStartText->setText(Settings::guestSessionStartText()); + } + if (!Settings::guestSessionStartButtonText().isEmpty()) { + ui->guestStartButton->setText(Settings::guestSessionStartButtonText()); + } + connect(ui->loginButton, &QAbstractButton::released, this, [this]() { + ui->loginChooser->setCurrentWidget(ui->loginPage); + ui->userInput->setFocus(); + }); + connect(ui->guestButton, &QAbstractButton::released, this, [this]() { + ui->loginChooser->setCurrentWidget(ui->guestPage); + }); + connect(ui->backButton, &QAbstractButton::released, this, [this]() { + resetLoginChooser(); + }); + connect(ui->loginChooser, &QStackedWidget::currentChanged, this, [this]() { + if (ui->loginChooser->currentWidget() == ui->welcomePage) { + ui->backButton->hide(); + } else { + ui->backButton->show(); + } + }); + connect(ui->guestStartButton, &QAbstractButton::released, this, []() { + if (!Global::autoLoginGuest()) { + std::cerr << "Guest login failed..." << std::endl; + // TODO warn user about it + } + }); + ui->loginChooser->setCurrentWidget(ui->welcomePage); + } else { + ui->loginChooser->setCurrentWidget(ui->loginPage); + } } // 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); @@ -268,10 +310,20 @@ void LoginForm::keyPressEvent(QKeyEvent *event) return; } } + if (Settings::guestSessionEnabled() && event->key() == Qt::Key_Escape) { + resetLoginChooser(); + } // Fallback: Passthrough QWidget::keyPressEvent(event); } +void LoginForm::resetLoginChooser() +{ + ui->loginChooser->setCurrentWidget(ui->welcomePage); + ui->userInput->clear(); + ui->passwordInput->clear(); +} + bool LoginForm::eventFilter(QObject *object, QEvent *event) { if (event->type() == QEvent::KeyRelease) { |