summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2017-08-14 15:19:59 +0200
committerSimon Rettberg2017-08-14 15:19:59 +0200
commit9c6d3bf474bcc89c958e799bc9c4c37af9935862 (patch)
tree60bafbbeec9bafb539d4bd398811bb06f364eddc
parentStrip unneeded stuff, simplify pam dialog handling, add safety timeout of 10 ... (diff)
downloadslxgreeter-9c6d3bf474bcc89c958e799bc9c4c37af9935862.tar.gz
slxgreeter-9c6d3bf474bcc89c958e799bc9c4c37af9935862.tar.xz
slxgreeter-9c6d3bf474bcc89c958e799bc9c4c37af9935862.zip
Remove more cruft, show error in red
-rw-r--r--src/loginform.cpp56
-rw-r--r--src/loginform.h3
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;
};