142 lines
3.9 KiB
C++
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();
|
|
}
|
|
|
|
|