diff options
-rw-r--r-- | src/loginform.cpp | 56 | ||||
-rw-r--r-- | src/loginform.h | 3 |
2 files changed, 37 insertions, 22 deletions
diff --git a/src/loginform.cpp b/src/loginform.cpp index 07d4094..ced5f1e 100644 --- a/src/loginform.cpp +++ b/src/loginform.cpp @@ -1,32 +1,23 @@ /* * Copyright (c) 2012-2015 Christian Surlykke +* 2017 bwLehrpool project * -* This file is part of qt-lightdm-greeter +* Based on qt-lightdm-greeter, stripped down to fit +* our specific needs. * It is distributed under the LGPL 2.1 or later license. * Please refer to the LICENSE file for a copy of the license. */ #include <QDebug> -#include <QCompleter> #include <QAbstractListModel> #include <QModelIndex> -#include <QFile> -#include <QTextStream> -#include <QStringList> #include <QPixmap> #include <QMessageBox> #include <QMenu> -#include <QProcess> -#include <QLightDM/UsersModel> -#include <QMetaMethod> #include "loginform.h" #include "ui_loginform.h" #include "settings.h" -int rows(QAbstractItemModel& model) { - return model.rowCount(QModelIndex()); -} - LoginForm::LoginForm(QWidget *parent) : QWidget(parent), ui(new Ui::LoginForm), @@ -75,6 +66,10 @@ void LoginForm::initialize() cancelLoginTimer.setSingleShot(true); connect(&cancelLoginTimer, SIGNAL(timeout()), this, SLOT(cancelLogin())); + hideMessageTimer.setInterval(10000); + hideMessageTimer.setSingleShot(true); + connect(&hideMessageTimer, SIGNAL(timeout()), this, SLOT(hideMessage())); + //connect(ui->userInput, SIGNAL(editingFinished()), this, SLOT(userChanged())); connect(ui->leaveComboBox, SIGNAL(activated(int)), this, SLOT(leaveDropDownActivated(int))); connect(&m_Greeter, SIGNAL(showPrompt(QString, QLightDM::Greeter::PromptType)), this, SLOT(onPrompt(QString, QLightDM::Greeter::PromptType))); @@ -86,9 +81,6 @@ void LoginForm::initialize() void LoginForm::startAuthentication() { - qDebug() << "Start auth"; - //setCurrentSession(Cache().getLastSession(ui->userInput->text())); - if (m_Greeter.inAuthentication()) { m_Greeter.cancelAuthentication(); } @@ -101,7 +93,7 @@ void LoginForm::startAuthentication() return; } - ui->messageLabel->setText(tr("Logging in...")); + showMessage(tr("Logging in..."), false); clearMsg = false; ui->userInput->setEnabled(false); ui->passwordInput->setEnabled(false); @@ -128,7 +120,7 @@ void LoginForm::leaveDropDownActivated(int index) void LoginForm::onMessage(QString message, QLightDM::Greeter::MessageType type) { qDebug() << "Message: " << message; - ui->messageLabel->setText(message); + showMessage(message, false); clearMsg = true; } @@ -143,16 +135,16 @@ void LoginForm::onAuthenticationComplete() { if (m_Greeter.isAuthenticated()) { qDebug() << "Auth complete, start session"; - ui->messageLabel->setText(tr("Starting session...")); + showMessage(tr("Starting session..."), false); QModelIndex i = sessionsModel.index(0, 0); if (m_Greeter.startSessionSync(sessionsModel.data(i, QLightDM::SessionsModel::KeyRole).toString())) { cancelLoginTimer.stop(); } else { - ui->messageLabel->setText(tr("Cannot open session")); + showMessage(tr("Cannot open session"), true); clearMsg = true; } } else { - qDebug() << "Auth failed, cancelling..."; + qDebug() << "Auth failed, canceling..."; cancelLogin(); } } @@ -169,18 +161,38 @@ void LoginForm::cancelLogin() ui->userInput->setEnabled(true); ui->passwordInput->setEnabled(true); if (!clearMsg) { - ui->messageLabel->setText(tr("Login failed")); + showMessage(tr("Login failed"), true); + } else { + ui->messageLabel->setStyleSheet("color:red"); } ui->userInput->setFocus(); ui->userInput->selectAll(); clearMsg = true; } +void LoginForm::showMessage(QString message, bool error) +{ + hideMessageTimer.stop(); + ui->messageLabel->setText(message); + if (error) { + ui->messageLabel->setStyleSheet("color:red"); + hideMessageTimer.start(); + } else { + ui->messageLabel->setStyleSheet(""); + } +} + +void LoginForm::hideMessage() +{ + hideMessageTimer.stop(); + ui->messageLabel->clear(); +} + void LoginForm::keyPressEvent(QKeyEvent *event) { if (clearMsg) { clearMsg = false; - ui->messageLabel->clear(); + hideMessage(); } if (event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter) { if (!ui->userInput->isEnabled()) { diff --git a/src/loginform.h b/src/loginform.h index 6dfc390..b4dde7c 100644 --- a/src/loginform.h +++ b/src/loginform.h @@ -44,6 +44,7 @@ public slots: void onMessage(QString prompt, QLightDM::Greeter::MessageType messageType); void onAuthenticationComplete(); void cancelLogin(); + void hideMessage(); protected: virtual void keyPressEvent(QKeyEvent *event); @@ -53,6 +54,7 @@ private: void addLeaveEntry(bool canDo, QString iconName, QString text, QString actionName); QString currentSession(); void setCurrentSession(QString session); + void showMessage(QString message, bool error); Ui::LoginForm *ui; @@ -63,6 +65,7 @@ private: QMap<int, void (QLightDM::PowerInterface::*)()> powerSlots; QTimer cancelLoginTimer; + QTimer hideMessageTimer; bool clearMsg; }; |