LoginView.cpp 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. #include "LoginView.h"
  2. #include "LoginWidget.h"
  3. #include "RegisterWidget.h"
  4. #include "QFDConfig.h"
  5. #include "QFDAlert.h"
  6. #include <dbService/ClassSet.h>
  7. #include <Widgets/InfoBar.h>
  8. #include <QPainter>
  9. #include <QBoxLayout>
  10. #include <QStackedWidget>
  11. #include <QDebug>
  12. LoginView::LoginView(QWidget *parent) : QWidget(parent)
  13. {
  14. initialize();
  15. initLayout();
  16. setStackIndex(0);
  17. connectSignalsAndSlots();
  18. }
  19. void LoginView::paintEvent(QPaintEvent *event)
  20. {
  21. QWidget::paintEvent(event);
  22. QPainter painter(this);
  23. QPixmap pixmap(":/resource/background/8.jpg");
  24. painter.drawPixmap(0, 0,
  25. pixmap.scaled(width(), height(), Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation));
  26. }
  27. void LoginView::setStackIndex(int index)
  28. {
  29. m_stackedWidget->setCurrentIndex(index % m_stackedWidget->count());
  30. }
  31. void LoginView::initialize()
  32. {
  33. m_vBoxLayout = new QVBoxLayout();
  34. m_stackedWidget = new QStackedWidget(this);
  35. m_loginWidget = new LoginWidget(this);
  36. m_registerWidget = new RegisterWidget(this);
  37. }
  38. void LoginView::initLayout()
  39. {
  40. setLayout(m_vBoxLayout);
  41. m_vBoxLayout->setAlignment(Qt::AlignCenter);
  42. m_vBoxLayout->addWidget(m_stackedWidget);
  43. m_stackedWidget->addWidget(m_loginWidget);
  44. m_stackedWidget->addWidget(m_registerWidget);
  45. }
  46. void LoginView::connectSignalsAndSlots()
  47. {
  48. connect(m_loginWidget, &LoginWidget::signalLogin, this, &LoginView::slotLogin);
  49. connect(m_loginWidget, &LoginWidget::signalCancel, this, &LoginView::slotCancelLogin);
  50. connect(m_registerWidget, &RegisterWidget::signalConfirm, this, &LoginView::slotConfirmAccount);
  51. connect(m_registerWidget, &RegisterWidget::signalCancel, this, &LoginView::slotCancelAccount);
  52. connect(m_stackedWidget, &QStackedWidget::currentChanged, this, &LoginView::slotStackIndexChanged);
  53. }
  54. // admin "21232f297a57a5a743894a0e4a801fc3"
  55. void LoginView::slotLogin()
  56. {
  57. QString account = m_loginWidget->account();
  58. QString password = m_loginWidget->password();
  59. QFUser user(m_loginWidget->account(), m_loginWidget->password());
  60. int code = user.login();
  61. qDebug() << __FUNCTION__ << __LINE__ << account << password << "login code:" << code;
  62. if ((code == QF_CODE_SUCCEEDED || code == QF_CODE_ALREADY_LOGIN) && QFUser::currentUser() != nullptr) {
  63. m_loginWidget->saveAccountConfig(); // 登录成功后存储登录设置
  64. if (QFDConfig::roleType() == QFUser::SuperAdmin) {
  65. if (account == "admin" && password == "admin") {
  66. m_registerWidget->clearInputs();
  67. setStackIndex(m_stackedWidget->currentIndex() + 1);
  68. } else {
  69. emit signalLogin();
  70. }
  71. }
  72. } else {
  73. QFDAlert::showAlertWithCode(code, this);
  74. }
  75. }
  76. void LoginView::slotCancelLogin()
  77. {
  78. emit signalCancelLogin();
  79. }
  80. void LoginView::slotConfirmAccount()
  81. {
  82. QString account = m_registerWidget->account();
  83. QString password = m_registerWidget->password();
  84. QString repeatPassword = m_registerWidget->repeatPassword();
  85. QFUser *user = QFUser::currentUser();
  86. int code = user->resetAdmin(account, password, repeatPassword);
  87. qDebug() << __FUNCTION__ << __LINE__ << "reset code:" << code;
  88. if (code == QF_CODE_SUCCEEDED) {
  89. emit signalLogin();
  90. QFDConfig::setPasswordModified(true);
  91. setStackIndex(m_stackedWidget->currentIndex() + 1);
  92. } else {
  93. QFDAlert::showAlertWithCode(code, this);
  94. }
  95. }
  96. void LoginView::slotCancelAccount()
  97. {
  98. setStackIndex(m_stackedWidget->currentIndex() + 1);
  99. }
  100. void LoginView::slotStackIndexChanged()
  101. {
  102. qDebug() << __FUNCTION__ << __LINE__;
  103. }