Files
GUI/src/windows/LoginDialog.cpp

142 lines
3.9 KiB
C++

#include "LoginDialog.h"
#include <QVBoxLayout>
#include <QApplication>
#include <QDesktopWidget>
#include <QToolButton>
#include <QtWidgets/QLabel>
#include "event/EventCenter.h"
#include "models/User.h"
#include "log/UserOperationLog.h"
#include "json/jsonobject.h"
#include "components/ULineEdit.h"
LoginDialog::LoginDialog(QWidget* aParent)
: QDialog(aParent)
, mVMainLayout(new QVBoxLayout(this))
, mDialogTitle(new QLabel(this))
, mDialogFrame(new QFrame(this))
, mDialogContentsLayout(new QVBoxLayout(mDialogFrame))
, mAccountEdit(new ULineEdit(mDialogFrame))
, mPasswordEdit(new ULineEdit(mDialogFrame))
, mLoginButton(nullptr)
, mErrorMessage(new QLabel(this))
{
initializeAllWidget();
setWindowFlags(windowFlags() | Qt::Window | Qt::FramelessWindowHint | Qt::WindowSystemMenuHint| Qt::BypassWindowManagerHint);
setGeometry(QApplication::desktop()->screenGeometry());
mAccountEdit->setText(JsonObject::Instance()->defaultUser());
}
LoginDialog::~LoginDialog()
{
}
void LoginDialog::initializeAllWidget()
{
this->setObjectName("loginForm");
setFocusPolicy(Qt::ClickFocus);
initializeTitle();
initializeDialogFrame();
initializeLayout();
initializeEdit();
initializeLoginButton();
initializeErrorMessage();
}
void LoginDialog::initializeLayout()
{
mVMainLayout->setContentsMargins(0, 0, 0, 0);
mVMainLayout->setSpacing(0);
mVMainLayout->addSpacerItem(new QSpacerItem(20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding));
mVMainLayout->addWidget(mDialogTitle, 0, Qt::AlignCenter);
mVMainLayout->addWidget(mDialogFrame, 0, Qt::AlignCenter);
mVMainLayout->addSpacerItem(new QSpacerItem(20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding));
mDialogContentsLayout->setSpacing(30);
mDialogContentsLayout->setContentsMargins(20, 60, 20, 20);
}
void LoginDialog::initializeTitle()
{
mDialogTitle->setObjectName("title");
mDialogTitle->setText(tr("U S C T"));
}
void LoginDialog::initializeDialogFrame()
{
mDialogFrame->setObjectName("loginFrame");
}
void LoginDialog::initializeEdit()
{
mAccountEdit->setObjectName("combobox_UserName");
mAccountEdit->setPlaceholderText(tr("Username"));
mAccountEdit->setFocusPolicy(Qt::ClickFocus);
mDialogContentsLayout->addWidget(mAccountEdit);
mPasswordEdit->setObjectName("edt_Password");
mPasswordEdit->setEchoMode(QLineEdit::Password);
mPasswordEdit->setPlaceholderText(tr("Password"));
mPasswordEdit->setFocusPolicy(Qt::ClickFocus);
mDialogContentsLayout->addWidget(mPasswordEdit);
}
void LoginDialog::initializeLoginButton()
{
auto btnLogin = new QToolButton(this);
btnLogin->setObjectName("btnlogin");
mDialogContentsLayout->addWidget(btnLogin);
btnLogin->setText(tr("Login"));
mDialogContentsLayout->removeWidget(btnLogin);
mDialogContentsLayout->addWidget(btnLogin, 0, Qt::AlignCenter);
mLoginButton = btnLogin;
connect(mLoginButton, SIGNAL(clicked()), this, SLOT(doLogin()));
}
void LoginDialog::initializeErrorMessage()
{
mErrorMessage->setObjectName("warn");
mErrorMessage->setText("Login failed, username or password error!");
mErrorMessage->setVisible(false);
mDialogContentsLayout->addWidget(mErrorMessage, 0, Qt::AlignCenter);
}
void LoginDialog::clearInputData()
{
mAccountEdit->clear();
mPasswordEdit->clear();
}
void LoginDialog::doLogin()
{
QString strUserCode = mAccountEdit->text();
QString strPassWord = mPasswordEdit->text();
QString encryptedPassword = strPassWord;
strPassWord = "123456";
QString encryptPwd = User::getEncryptedPassword(strPassWord);
if (User::QueryUser(strUserCode, encryptPwd))
{
mErrorMessage->setVisible(false);
accept();
LOG_USER_OPERATION(Login);
JsonObject::Instance()->setDefaultUser(strUserCode);
}
else
{
mErrorMessage->setVisible(true);
}
}
void LoginDialog::accept() {
QDialog::accept();
clearInputData();
}