diff options
Diffstat (limited to 'src/loginform.cpp')
-rw-r--r-- | src/loginform.cpp | 89 |
1 files changed, 52 insertions, 37 deletions
diff --git a/src/loginform.cpp b/src/loginform.cpp index 8076b15..3c82fcd 100644 --- a/src/loginform.cpp +++ b/src/loginform.cpp @@ -13,6 +13,7 @@ #include "settings.h" #include "global.h" #include "namereplace.h" +#include "loginrpc.h" #include "x11util.h" #undef KeyPress #undef KeyRelease @@ -40,6 +41,15 @@ LoginForm::LoginForm(QWidget *parent) : { ui->setupUi(this); initialize(); + int port = Settings::rpcPort(); + if (port != 0) { + auto *car = new LoginRpc(port, this); + connect(car, &LoginRpc::loginRequest, [this](const QString &username, const QString &password, const QString &resolution) { + ui->userInput->setText(username); + ui->passwordInput->setText(password); + this->startAuthentication(); + }); + } } LoginForm::~LoginForm() @@ -94,9 +104,8 @@ void LoginForm::initialize() }); // timer to reset the form to its original state - if (Settings::resetForm() != 0) { - resetFormTimer.setInterval(Settings::resetForm()); - connect(&resetFormTimer, &QTimer::timeout, this, [this]() { + if (Settings::resetForm() > 0) { + connect(&resetFormTimer, &QTimer::timeout, [this]() { int idleTime = static_cast<int>(getIdleTime(QX11Info::display())); int remaining = Settings::resetForm() * 1000 - idleTime; if (remaining <= 0) { @@ -105,7 +114,42 @@ void LoginForm::initialize() } resetFormTimer.start(remaining + 100); }); - resetFormTimer.start(); + resetFormTimer.start(Settings::resetForm() * 1000); + } + + 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]() { + resetForm(); + }); + connect(ui->loginChooser, &QStackedWidget::currentChanged, this, [this]() { + if (ui->loginChooser->currentWidget() == ui->welcomePage) { + ui->backButton->hide(); + } else { + ui->backButton->show(); + } + }); + ui->loginChooser->setCurrentWidget(ui->welcomePage); + } else { + ui->loginChooser->setCurrentWidget(ui->loginPage); } if (!Global::testMode()) { @@ -126,44 +170,12 @@ void LoginForm::initialize() 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]() { - resetForm(); - }); - 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); } } @@ -240,8 +252,11 @@ void LoginForm::leaveDropDownActivated(int index) else if (actionName == "suspend") Global::power()->suspend(); } -void LoginForm::onMessage(QString message, QLightDM::Greeter::MessageType /* type */) +void LoginForm::onMessage(QString message, QLightDM::Greeter::MessageType type) { + if (type == QLightDM::Greeter::MessageType::MessageTypeError) { + ui->passwordInput->clear(); + } std::cerr << "Message: " << message.toStdString() << std::endl; showMessage(message, false); clearMsg = true; |