#include "frmLogin.h"
#include "ui_frmLogin.h"
//#include "Controls/PdfiumViewer.h"
frmLogin::frmLogin(QWidget *parent) :
QDialog(parent),
ui(new Ui::frmLogin),
m_buttonGroup(new QButtonGroup(this))
{
ui->setupUi(this);
setWindowFlags(Qt::Window | Qt::CustomizeWindowHint);
initControls();
}
frmLogin::~frmLogin()
{
delete ui;
}
void frmLogin::initControls()
{
//ui->labAppName->setText(App::Name);
ui->leUserName->clear();
ui->leUserName->setPlaceholderText("请输入账号");
ui->leUserName->setStyleSheet(
"QLineEdit {"
" background-color: rgb(255,255,255);"
" border-radius: 0px;"
" color:black;"
" border: 1px solid rgb(224, 231, 241) !important;"
"}"
"QLineEdit[text=\"\"] {"
" background-color: rgb(255,255,255);"
" border-radius: 0px;"
" color:rgb(224,231,241);"
" border: 1px solid rgb(224, 231, 241) !important;"
"}"
);
ui->lePassWord->clear();
ui->lePassWord->setPlaceholderText("请输入密码");
ui->lePassWord->setEchoMode(QLineEdit::Password);
ui->lePassWord->setStyleSheet(
"QLineEdit {"
" background-color: rgb(255,255,255);"
" border-radius: 0px;"
" color: black;" // 输入文本颜色为黑色
" border: 1px solid rgb(224, 231, 241) !important;"
"}"
"QLineEdit[text=\"\"] {"
" background-color: rgb(255,255,255);"
" border-radius: 0px;"
" color: rgb(224,231,241);" // 无文本时显示灰色(占位文本)
" border: 1px solid rgb(224, 231, 241) !important;"
"}"
);
// 创建用户名图标标签
QLabel *userIconLabel = new QLabel(ui->leUserName); // 修改父控件
userIconLabel->setPixmap(QPixmap(":/PkuCfws_AI/resource/frmLogin_user.png").scaled(18, 21, Qt::KeepAspectRatio));
userIconLabel->setAlignment(Qt::AlignCenter);
userIconLabel->setFixedSize(50, ui->leUserName->height());
userIconLabel->setStyleSheet("background: transparent;");
ui->leUserName->setTextMargins(userIconLabel->width() + 5, 0, 0, 0);
userIconLabel->move(5,8);
// 创建密码图标标签
QLabel *pwdIconLabel = new QLabel(ui->lePassWord); // 修改父控件
pwdIconLabel->setPixmap(QPixmap(":/PkuCfws_AI/resource/frmLogin_userPassword.png").scaled(20, 20, Qt::KeepAspectRatio));
pwdIconLabel->setAlignment(Qt::AlignCenter);
pwdIconLabel->setFixedSize(50, ui->lePassWord->height());
pwdIconLabel->setStyleSheet("background: transparent;");
ui->lePassWord->setTextMargins(pwdIconLabel->width() + 5, 0, 0, 0);
pwdIconLabel->move(5,8);
ui->lePassWord->setEchoMode(QLineEdit::Password); // 初始设置为密码模式
// 创建密码框右侧的按钮
QPushButton *rightButton = new QPushButton(ui->lePassWord);
rightButton->setIcon(QIcon(":/PkuCfws_AI/resource/frmLogin_password2.png"));
rightButton->setFixedSize(30, ui->lePassWord->height());
rightButton->setIconSize(QSize(27, 21));
rightButton->setFlat(true);
rightButton->setStyleSheet("background: transparent;");
rightButton->move(478,8);
connect(rightButton, &QPushButton::clicked, this, [this, rightButton]() {
if (ui->lePassWord->echoMode() == QLineEdit::Password)
{
ui->lePassWord->setEchoMode(QLineEdit::Normal);
rightButton->setIcon(QIcon(":/PkuCfws_AI/resource/frmLogin_password.png"));
}
else
{
ui->lePassWord->setEchoMode(QLineEdit::Password);
rightButton->setIcon(QIcon(":/PkuCfws_AI/resource/frmLogin_password2.png"));
}
ui->lePassWord->setFocus();
});
//设置按钮的初始化样式
ui->pbn_frmLogin->setIcon(QIcon(":/PkuCfws_AI/resource/frmLogin_LogIn2.png"));
ui->pbn_frmPKILogin->setIcon(QIcon(":/PkuCfws_AI/resource/frmLogin_KPI.png"));
ui->pbn_frmLogin->setIconSize(QSize(27, 21));
ui->pbn_frmPKILogin->setIconSize(QSize(16, 24));
//初始化将两个按钮设置为互斥(状态一个按下一个弹起)
m_buttonGroup->addButton(ui->pbn_frmLogin,0);
m_buttonGroup->addButton(ui->pbn_frmPKILogin,1);
m_buttonGroup->setExclusive(true);//将按钮组内部的按钮设置为互斥
// 设置默认状态
ui->pbn_frmLogin->setChecked(true);
ui->pbn_frmPKILogin->setChecked(false);
XmlHandle xml;
QString strLastLogin = "";
int intReturn = xml.domGetPropertyValue(QString("Configuration/%1").arg(App_Const::LocalCFG::NodeName().LastLogin), App_Const::LocalCFG::AttribName().Value, strLastLogin);
if (SysDefine::FAILED == intReturn)
{
App::writeLog(QString("[frmLogin][initControls][获取LastLogin节点的Value属性值失败:%1]").arg(xml.getErrorText()));
}
if (!strLastLogin.isEmpty())
{
ui->leUserName->setText(strLastLogin);
}
//on_pbHidePassword_clicked();
ui->pbLogin->setFocusPolicy(Qt::NoFocus);
ui->pbClose->setFocusPolicy(Qt::NoFocus);
// ui->pbDisplayPassword->setFocusPolicy(Qt::NoFocus);
// ui->pbHidePassword->setFocusPolicy(Qt::NoFocus);
ui->pbClose->setFocusPolicy(Qt::NoFocus);
ui->leUserName->setFocus();
// ui->pbLogin->setStyleSheet(
// "QPushButton {"
// " border-image: url(:/APP/resource/frmLogin_Login_N.png);"
// " background: transparent;"
// " color: rgb(255, 255, 255);"
// "}"
// "QPushButton:pressed {"
// " border-image: url(:/APP/resource/frmLogin_Login_D.png);"
// " background: transparent;"
// " color: rgb(255, 255, 255);"
// "}"
// );
ui->pbClose->setStyleSheet(
"QPushButton {"
" background: transparent;"
" border-image: url(:/APP/resource/frmLogin_Close_N.png);"
"}"
"QPushButton:pressed {"
" background: transparent;"
" border-image: url(:/APP/resource/frmLogin_Close_D.png);"
"}"
);
ui->leUserName->installEventFilter(this);
ui->lePassWord->installEventFilter(this);
this->installEventFilter(this);
//ui->scrollArea->loadPdf("/home/ZHL/SVN/CFWS2/03.SourceCode/linux_x64_debug/MakeDocumentSignFile/FinishPreView.pdf");
connect(ui->pbn_frmLogin,&QPushButton::clicked,this,&frmLogin::on_pb_frmLogin_clicked);
connect(ui->pbn_frmPKILogin,&QPushButton::clicked,this,&frmLogin::on_pb_frmPKILogin_clicked);
}
bool frmLogin::eventFilter(QObject *obj, QEvent *event)
{
if (obj == ui->leUserName)
{
if (event->type() == QEvent::FocusIn)
{
ui->leUserName->setStyleSheet(
"QLineEdit {"
" background-color: rgb(255,255,255);"
" border-radius: 0px;"
" color:rgb(224,231,241);"
" border: 1px solid rgb(224, 231, 241) !important;"
"}"
);
if (ui->leUserName->text() == "请输入账号")
{
ui->leUserName->setText("");
}
}
else if (event->type() == QEvent::FocusOut)
{
if (ui->leUserName->text().isEmpty())
{
ui->leUserName->setStyleSheet(
"QLineEdit {"
" background-color: rgb(255,255,255);"
" border-radius: 0px;"
" color:rgb(224,231,241);"
" border: 1px solid rgb(224, 231, 241) !important;"
"}"
);
ui->leUserName->setPlaceholderText("请输入账号");
}
}
}
else if (obj == ui->lePassWord)
{
if (event->type() == QEvent::FocusIn)
{
ui->lePassWord->setStyleSheet(
"QLineEdit {"
" background-color: rgb(255,255,255);"
" border-radius: 0px;"
" color:rgb(224,231,241);"
" border: 1px solid rgb(224, 231, 241) !important;"
"}"
);
// if (ui->lePassWord->text() == "请输入密码")
// {
// ui->lePassWord->setText("");
// if (ui->pbDisplayPassword->isVisible())
// {
// ui->lePassWord->setEchoMode(QLineEdit::Password);
// }
// }
}
else if (event->type() == QEvent::FocusOut)
{
if (ui->lePassWord->text().isEmpty())
{
ui->lePassWord->setStyleSheet(
"QLineEdit {"
" background-color: rgb(255,255,255);"
" border-radius: 0px;"
" color:rgb(224,231,241);"
" border: 1px solid rgb(224, 231, 241) !important;"
"}"
);
ui->lePassWord->setEchoMode(QLineEdit::Normal);
ui->lePassWord->setPlaceholderText("请输入密码");
}
}
else if (event->type() == QEvent::KeyPress)
{
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
if (keyEvent->key() == Qt::Key_Enter || keyEvent->key() == Qt::Key_Return)
{
on_pbLogin_clicked();
}
}
}
else if (obj == this)
{
if (event->type() == QEvent::KeyPress)
{
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
if (keyEvent->key() == Qt::Key_Escape || keyEvent->key() == Qt::Key_Enter || keyEvent->key() == Qt::Key_Return)
{
event->ignore();
return true;
}
}
}
return QWidget::eventFilter(obj, event);
}
void frmLogin::on_pbLogin_clicked()
{
this->setCursor(QCursor(Qt::WaitCursor));
if (ui->leUserName->text().isEmpty())
{
this->setCursor(QCursor(Qt::ArrowCursor));
Msg::Show(this, "请输入账号!");
ui->leUserName->setFocus();
return;
}
if (ui->lePassWord->text().isEmpty())
{
this->setCursor(QCursor(Qt::ArrowCursor));
Msg::Show(this, "请输入密码!");
ui->lePassWord->setFocus();
return;
}
int intReturn = SysDefine::NOTHING;
QString strLoginName = ui->leUserName->text();
QString strLoginPassword = ui->lePassWord->text();
PkuApp::inst().CurrUser.Login_Name = strLoginName;
PkuApp::inst().CurrUser.Password = strLoginPassword;
// 根据账号密码获取token信息
BLLUser bllUser(PkuApp::inst().StrConnectionPath);
intReturn = bllUser.getToken(strLoginName, strLoginPassword, PkuApp::inst().Token);
if (SysDefine::FAILED == intReturn)
{
this->setCursor(QCursor(Qt::ArrowCursor));
if (bllUser.getErrorText() == "获取token失败")
{
Msg::Show(this, "账号或密码错误!");
}
else
{
Msg::Show(this, bllUser.getErrorText());
}
return;
}
if (PkuApp::inst().Token.isEmpty())
{
this->setCursor(QCursor(Qt::ArrowCursor));
Msg::Show(this, "未获取到Token信息!");
ui->leUserName->setFocus();
return;
}
App::writeLog(QString("[frmLogin][on_pbLogin_clicked][已获取到token信息,账号:%1,密码:%2]").arg(strLoginName).arg(strLoginPassword));
// 根据token获取用户信息
intReturn = bllUser.getUserByToken(PkuApp::inst().Token, PkuApp::inst().CurrUser);
if (SysDefine::FAILED == intReturn)
{
this->setCursor(QCursor(Qt::ArrowCursor));
Msg::Show(this, bllUser.getErrorText());
return;
}
if (PkuApp::inst().CurrUser.isEmpty())
{
this->setCursor(QCursor(Qt::ArrowCursor));
Msg::Show(this, QString("用户%1的信息不存在!").arg(strLoginName));
return;
}
App::writeLog(QString("[frmLogin][on_pbLogin_clicked][已获取到用户信息]"));
intReturn = bllUser.getDeptByToken(PkuApp::inst().Token, PkuApp::inst().CurrDept);
if (SysDefine::FAILED == intReturn)
{
this->setCursor(QCursor(Qt::ArrowCursor));
Msg::Show(this, bllUser.getErrorText());
return;
}
if (PkuApp::inst().CurrDept.isEmpty())
{
this->setCursor(QCursor(Qt::ArrowCursor));
Msg::Show(this, QString("用户%1的单位信息不存在!").arg(strLoginName));
return;
}
App::writeLog(QString("[frmLogin][on_pbLogin_clicked][已获取到用户单位信息]"));
Sys_OwnerDept sysod;
intReturn = bllUser.getDeptInfoById(PkuApp::inst().CurrDept.Dept_ID, sysod);
if (SysDefine::FAILED == intReturn)
{
this->setCursor(QCursor(Qt::ArrowCursor));
Msg::Show(this, bllUser.getErrorText());
return;
}
if (!sysod.isEmpty())
{
PkuApp::inst().CurrDept.CUnitID = sysod.dataOwnerDept.ownerDept2;
PkuApp::inst().CurrDept.SUnitID = sysod.dataOwnerDept.ownerDept3;
PkuApp::inst().CurrDept.TUnitID = sysod.dataOwnerDept.ownerDept4;
PkuApp::inst().CurrDept.Data_CUnitID = sysod.dataOwnerDept.ownerDept2;
PkuApp::inst().CurrDept.Data_SUnitID = sysod.dataOwnerDept.ownerDept3;
PkuApp::inst().CurrDept.Data_TUnitID = sysod.dataOwnerDept.ownerDept4;
}
PkuApp::inst().CurrUser.Enter_Time = QDateTime::fromString(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"), "yyyy-MM-dd HH:mm:ss");
if (PkuApp::inst().CurrUser.Dept_Name.isEmpty())
{
PkuApp::inst().CurrUser.Dept_Name = PkuApp::inst().CurrDept.Dept_Name;
}
XmlHandle xml;
intReturn = xml.domSetPropertyValue(QString("Configuration/%1").arg(App_Const::LocalCFG::NodeName().LastLogin), App_Const::LocalCFG::AttribName().Value, strLoginName);
if (SysDefine::FAILED == intReturn)
{
App::writeLog(QString("[frmLogin][on_pbLogin_clicked][设置LastLogin节点的Value属性值失败:%1]").arg(xml.getErrorText()));
return;
}
// frmIDCheck *frmIDC = new frmIDCheck();
// frmIDC->showFullScreen();
ucAHInfoListWidget* frmANInfo = new ucAHInfoListWidget();
frmANInfo->showFullScreen();
this->setCursor(QCursor(Qt::ArrowCursor));
this->close();
}
void frmLogin::on_pbClose_clicked()
{
this->close();
}
//void frmLogin::on_pbDisplayPassword_clicked()
//{
// //ui->pbDisplayPassword->setVisible(false);
// ui->lePassWord->setEchoMode(QLineEdit::Normal);
// //ui->pbHidePassword->setVisible(true);
//}
//void frmLogin::on_pbHidePassword_clicked()
//{
// //ui->pbHidePassword->setVisible(false);
// if (ui->lePassWord->text() != "请输入密码")
// {
// ui->lePassWord->setEchoMode(QLineEdit::Password);
// }
// //ui->pbDisplayPassword->setVisible(true);
//}
void frmLogin::on_pb_frmLogin_clicked()
{
}
void frmLogin::on_pb_frmPKILogin_clicked()
{
}
初始化的时候,lePassWord的初始化状态字体颜色为黑色,需要将lePassWord的初始化状态字体颜色为rgb(224,231,241)
最新发布