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, 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) {