#include "LoginDialog.h" #include #include #include #include #include #include "event/EventCenter.h" #include "dialogs/DialogManager.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)) , mTurnoffFrame(new QFrame(this)) , mDialogContentsLayout(new QVBoxLayout(mDialogFrame)) , mAccountEdit(new ULineEdit(mDialogFrame)) , mPasswordEdit(new ULineEdit(mDialogFrame)) , mLoginButton(nullptr) , mErrorMessage(new QLabel(this)) , mIsRunning(false) { 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)); mTurnoffFrame->setObjectName("TurnoffFrame"); mVMainLayout->addWidget(mTurnoffFrame, 0, Qt::AlignRight); QHBoxLayout * hLayout = new QHBoxLayout(mTurnoffFrame); hLayout->setDirection(QBoxLayout::RightToLeft); QToolButton * turnOffBtn = new QToolButton(mTurnoffFrame); turnOffBtn->setObjectName("TurnoffBtn"); hLayout->addWidget(turnOffBtn); connect(turnOffBtn, &QToolButton::clicked, []() { if(DialogManager::Default()->requestAlertMessage(QString(tr("Shut down now ?")), DialogButtonMode::OkAndCancel,tr("Shut Down")) == QDialog::Accepted) { LOG_USER_OPERATION("Shut Down") EventCenter::Default()->triggerEvent(GUIEvents::RequestShutdown, nullptr, nullptr); } }); 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 Sucessful"); JsonObject::Instance()->setDefaultUser(strUserCode); } else { LOG_USER_OPERATION(QString("Login Failed, User Name: %1").arg(strUserCode)); mErrorMessage->setVisible(true); } } void LoginDialog::accept() { QDialog::accept(); clearInputData(); mIsRunning = false; } int LoginDialog::exec() { mIsRunning = true; return QDialog::exec(); } bool LoginDialog::isRunning() { return mIsRunning; } void LoginDialog::showEvent(QShowEvent* event) { QDialog::showEvent(event); emit loginDialogShown(); }