comunicmessages/widgets/loginwidget.cpp

119 lines
2.7 KiB
C++
Raw Normal View History

2018-11-28 20:33:27 +00:00
#include <QMessageBox>
2018-11-27 18:15:54 +00:00
#include "loginwidget.h"
#include "ui_loginwidget.h"
2018-11-29 16:35:27 +00:00
#include "../controllers/initcontroller.h"
2018-11-28 20:33:27 +00:00
#include "../utils/accountutils.h"
#include "../helpers/accounthelper.h"
2018-11-27 18:15:54 +00:00
LoginWidget::LoginWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::LoginWidget)
{
ui->setupUi(this);
2018-11-28 20:33:27 +00:00
mAccountHelper = new AccountHelper(this);
connect(mAccountHelper, &AccountHelper::loginResult, this, &LoginWidget::loginResult);
2018-11-27 18:15:54 +00:00
}
LoginWidget::~LoginWidget()
{
delete ui;
}
2018-11-28 20:33:27 +00:00
void LoginWidget::loginResult(LoginResult result)
{
//Check if login is successfull
if(result == LoginResult::LOGIN_SUCCESS){
qDebug("User successfully signed in.");
2018-11-29 16:35:27 +00:00
//Restart application
(new InitController())->init();
2018-11-29 14:53:54 +00:00
2018-11-28 20:33:27 +00:00
close();
return;
}
//Release login button
ui->loginButton->setEnabled(true);
//Display appropriate error
switch (result) {
case LoginResult::INVALID_CREDENTIALS:
showError(tr("The email and / or the password was rejected by the server!"));
break;
case LoginResult::NETWORK_ERROR:
showError(tr("A network occurred. Please check your Internet connection..."));
break;
case LoginResult::TOO_MANY_REQUEST:
showError(tr("Too many login attempts from your computer. Please try again later..."));
break;
2018-11-29 14:53:54 +00:00
case LoginResult::INVALID_SERVER_RESPONSE:
showError(tr("Could not understand server response!"));
break;
2018-11-28 20:33:27 +00:00
case LoginResult::OTHER_ERROR:
default:
showError(tr("Login attempt did not succeed."));
break;
}
}
void LoginWidget::on_loginButton_clicked()
{
submitForm();
}
void LoginWidget::on_emailEdit_returnPressed()
{
submitForm();
}
void LoginWidget::on_passwordEdit_returnPressed()
{
submitForm();
}
void LoginWidget::submitForm()
{
showError("");
QString emailAddress = ui->emailEdit->text();
QString password = ui->passwordEdit->text();
//Check input
if(emailAddress.length() < 5){
showError(tr("Please specify an email address!"));
return;
}
if(password.length() < 3){
showError(tr("Please specify a valid password!"));
return;
}
if(!AccountUtils::CheckEmailAddress(emailAddress)){
showError(("Please specify a valid email address!"));
return;
}
//Block login button
ui->loginButton->setEnabled(false);
//Try to sign in user
AccountLoginRequest request;
request.setEmailAddress(emailAddress);
request.setPassword(password);
mAccountHelper->login(request);
}
void LoginWidget::showError(const QString &msg)
{
ui->errorLabel->setText(msg);
}