EXLoginWidget.cpp 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. #include "EXLoginWidget.h"
  2. #include "EXConfig.h"
  3. #include <dbService/ClassSet.h>
  4. #include <Widgets/LineEdit.h>
  5. #include <Widgets/CheckBox.h>
  6. #include <Widgets/Button.h>
  7. #include <QBoxLayout>
  8. #include <QLabel>
  9. #include <QPainter>
  10. #include <QDebug>
  11. #include "MainWindow.h"
  12. EXLoginWidget::EXLoginWidget(QWidget *parent) : QWidget(parent)
  13. {
  14. initialize();
  15. initLayout();
  16. connectSignalsAndSlots();
  17. loadAccount();
  18. resize(500, 500);
  19. }
  20. void EXLoginWidget::paintEvent(QPaintEvent *event)
  21. {
  22. QWidget::paintEvent(event);
  23. QPainter painter(this);
  24. QPixmap pixmap(":/resource/background/8.jpg");
  25. painter.drawPixmap(0, 0,
  26. pixmap.scaled(width(), height(), Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation));
  27. }
  28. void EXLoginWidget::setTitle(const QString title)
  29. {
  30. m_titleLabel->setText(title);
  31. }
  32. const QString EXLoginWidget::account() const
  33. {
  34. return m_accLineEdit->text();
  35. }
  36. const QString EXLoginWidget::password() const
  37. {
  38. return m_pwLineEdit->text();
  39. }
  40. bool EXLoginWidget::rememberPassword() const
  41. {
  42. return m_remCheckBox->isChecked();
  43. }
  44. void EXLoginWidget::saveAccountConfig() const
  45. {
  46. bool rem = m_remCheckBox->isChecked();
  47. EXConfig::setRememberPassword(rem);
  48. if (rem) {
  49. EXConfig::setUsername(m_accLineEdit->text());
  50. EXConfig::setPassword(m_pwLineEdit->text());
  51. }
  52. }
  53. void EXLoginWidget::initialize()
  54. {
  55. m_vBoxLayout = new QVBoxLayout(this);
  56. m_titleLabel = new QLabel(this);
  57. m_titleLabel->setStyleSheet("color:#ffffff;");
  58. QFont ft;
  59. ft.setPointSize(15);
  60. ft.setBold(true);
  61. m_titleLabel->setFont(ft);
  62. m_accLineEdit = new LineEdit(this);
  63. m_accLineEdit->setIsClearButtonEnabled(true);
  64. m_accLineEdit->setPlaceholderText("请输入账号");
  65. m_accLineEdit->setFixedWidth(250);
  66. m_pwLineEdit = new PasswordLineEdit(this);
  67. m_pwLineEdit->setPlaceholderText("请输入密码");
  68. m_pwLineEdit->setFixedWidth(250);
  69. m_remLayout = new QHBoxLayout();
  70. m_remCheckBox = new CheckBox("记住密码", this);
  71. m_remCheckBox->setHidden(true);
  72. const QString &s = m_remCheckBox->styleSheet() + "CheckBox {color:white}";
  73. m_remCheckBox->setStyleSheet(s);
  74. m_buttonLayout = new QHBoxLayout();
  75. m_loginButton = new PushButton("登录", this);
  76. m_cancelButton = new PushButton("取消", this);
  77. m_adminTips = new QLabel(this);
  78. m_adminTips->setText("默认管理员账号密码是admin/admin");
  79. m_adminTips->setStyleSheet("color:#dddddd");
  80. }
  81. void EXLoginWidget::initLayout()
  82. {
  83. setLayout(m_vBoxLayout);
  84. m_vBoxLayout->setAlignment(Qt::AlignCenter);
  85. m_vBoxLayout->addWidget(m_titleLabel);
  86. m_vBoxLayout->addSpacing(20);
  87. m_vBoxLayout->addWidget(m_accLineEdit);
  88. m_vBoxLayout->addSpacing(20);
  89. m_vBoxLayout->addWidget(m_pwLineEdit);
  90. m_vBoxLayout->addSpacing(20);
  91. m_vBoxLayout->addLayout(m_remLayout);
  92. m_remLayout->addWidget(m_remCheckBox);
  93. m_remLayout->addSpacing(30);
  94. m_vBoxLayout->addSpacing(40);
  95. m_vBoxLayout->addLayout(m_buttonLayout);
  96. m_buttonLayout->addWidget(m_loginButton);
  97. m_buttonLayout->addSpacing(20);
  98. m_buttonLayout->addWidget(m_cancelButton);
  99. m_vBoxLayout->addSpacing(10);
  100. m_vBoxLayout->addWidget(m_adminTips);
  101. }
  102. void EXLoginWidget::connectSignalsAndSlots()
  103. {
  104. connect(m_loginButton, &PushButton::clicked, this, &EXLoginWidget::slotLogin);
  105. connect(m_cancelButton, &PushButton::clicked, this, &EXLoginWidget::slotCancelLogin);
  106. }
  107. void EXLoginWidget::loadAccount()
  108. {
  109. int roleType = EXConfig::roleType();
  110. if (roleType == QFUser::SuperAdmin) {
  111. setTitle("管理员登录");
  112. } else {
  113. setTitle("专家登录");
  114. }
  115. // bool rem = EXConfig::rememberPassword();
  116. // m_remCheckBox->setChecked(rem);
  117. // if (rem) {
  118. // m_accLineEdit->setText(EXConfig::username());
  119. // m_pwLineEdit->setText(EXConfig::password());
  120. // }
  121. m_adminTips->setHidden(EXConfig::passwordModified());
  122. }
  123. void EXLoginWidget::slotCancelLogin()
  124. {
  125. exit(0);
  126. }
  127. void EXLoginWidget::slotLogin()
  128. {
  129. QString account = m_accLineEdit->text();
  130. QString password = m_pwLineEdit->text();
  131. QFUser user(account, password);
  132. int code = user.login();
  133. qDebug() << __FUNCTION__ << __LINE__ << "login code:" << account << password << code;
  134. if ((code == QF_CODE_SUCCEEDED || code == QF_CODE_ALREADY_LOGIN) && QFUser::currentUser() != nullptr) {
  135. MainWindow *m = new MainWindow(user.projectId.toInt(), nullptr);
  136. m->setAttribute(Qt::WA_DeleteOnClose);
  137. m->show();
  138. this->close();
  139. // this->close();
  140. } else {
  141. qDebug() << "-----------失败";
  142. // QFDAlert::showAlertWithCode(code, this);
  143. }
  144. }