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