Files
GUI/src/windows/LoginDialog.cpp

160 lines
4.4 KiB
C++
Raw Normal View History

2022-06-08 17:06:38 +08:00
#include "LoginDialog.h"
#include <QVBoxLayout>
2022-07-20 16:45:33 +08:00
#include <QApplication>
2022-07-28 16:27:51 +08:00
#include <QDesktopWidget>
2022-06-08 17:06:38 +08:00
#include <QToolButton>
#include <QtWidgets/QLabel>
#include "event/EventCenter.h"
#include "models/User.h"
#include "log/UserOperationLog.h"
#include "json/jsonobject.h"
#include "dialogs/GUIMessageDialog.h"
#include "components/ULineEdit.h"
2022-06-08 17:06:38 +08:00
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))
2022-06-08 17:06:38 +08:00
, mLoginButton(nullptr)
, mErrorMessage(new QLabel(this))
{
initializeAllWidget();
2022-07-28 16:27:51 +08:00
setWindowFlags(windowFlags() | Qt::Window | Qt::FramelessWindowHint | Qt::WindowSystemMenuHint| Qt::BypassWindowManagerHint);
2022-07-20 16:45:33 +08:00
setGeometry(QApplication::desktop()->screenGeometry());
2022-06-08 17:06:38 +08:00
mAccountEdit->setText(JsonObject::Instance()->defaultUser());
}
LoginDialog::~LoginDialog()
{
}
void LoginDialog::initializeAllWidget()
{
2022-07-12 16:13:09 +08:00
this->setObjectName("loginForm");
2022-07-20 17:05:50 +08:00
setFocusPolicy(Qt::ClickFocus);
2022-06-08 17:06:38 +08:00
initializeTitle();
initializeDialogFrame();
initializeLayout();
initializeEdit();
initializeLoginButton();
initializeErrorMessage();
connect(EventCenter::Default(), &EventCenter::DeviceErrorRaise, [=](QObject* parent, QObject* msg) {
if (!this->isVisible()) return;
//默认旧模式
GUIMessageDialog msgDialog(this);
msgDialog.setOpacity(1.0);
if (msg)
{
QString* str = (QString*)msg;
msgDialog.showMessage(*str);
}
else
{
msgDialog.showMessage("Something went error!");
}
msgDialog.stopLoading();
msgDialog.showExitButton();
msgDialog.exec();
});
}
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()
{
2022-07-12 16:13:09 +08:00
mDialogFrame->setObjectName("loginFrame");
2022-06-08 17:06:38 +08:00
}
void LoginDialog::initializeEdit()
{
mAccountEdit->setObjectName("combobox_UserName");
mAccountEdit->setPlaceholderText(tr("Username"));
mDialogContentsLayout->addWidget(mAccountEdit);
mPasswordEdit->setObjectName("edt_Password");
mPasswordEdit->setEchoMode(QLineEdit::Password);
mPasswordEdit->setPlaceholderText(tr("Password"));
mDialogContentsLayout->addWidget(mPasswordEdit);
}
void LoginDialog::initializeLoginButton()
{
2022-07-14 16:59:30 +08:00
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;
2022-06-08 17:06:38 +08:00
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))
{
2022-07-14 16:59:30 +08:00
mErrorMessage->setVisible(false);
2022-06-08 17:06:38 +08:00
accept();
LOG_USER_OPERATION(Login);
JsonObject::Instance()->setDefaultUser(strUserCode);
2022-07-14 16:59:30 +08:00
2022-06-08 17:06:38 +08:00
}
else
{
mErrorMessage->setVisible(true);
}
}
2022-07-20 16:45:33 +08:00
void LoginDialog::accept() {
QDialog::accept();
clearInputData();
}
2022-06-08 17:06:38 +08:00