From ba5d651f54d5061c634fee40c7ee8589db342f1c Mon Sep 17 00:00:00 2001 From: Krad Date: Tue, 21 Dec 2021 16:11:14 +0800 Subject: [PATCH] Role --- src/loginwindow.cpp | 5 +-- src/mainwindow.cpp | 91 ++++++++++++++++++++++++--------------------- src/models/User.cpp | 33 ++++++++++------ src/models/User.h | 3 +- 4 files changed, 74 insertions(+), 58 deletions(-) diff --git a/src/loginwindow.cpp b/src/loginwindow.cpp index 9f059d6..e117b07 100644 --- a/src/loginwindow.cpp +++ b/src/loginwindow.cpp @@ -126,10 +126,7 @@ void LoginWindow::doLogin() QString strPassWord = m_pPassWordEdit->text(); QString encryptedPassword = strPassWord; - strPassWord = "12345678"; - - - + strPassWord = "123456"; QString encryptPwd = User::getEncryptedPassword(strPassWord); QString sql = QString("select UserCode from Account where UserCode='%1' and Password='%2'") diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 99adfe8..8e0461a 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -82,14 +82,14 @@ MainWindow::MainWindow(QWidget* parent) : "QComboBox QAbstractItemView::item {min-height:60px;max-height:60px; border:1px solid white;}" //"QScrollBar:vertical {min-width: 50px;}" "QLabel{color:white; font-weight:bold; font-size:16px;}\n" - "QLabel#sliderPickerLabel{color:silver;padding:0;background:#505050;font-weight:normal;font-size:50px;}\n" + "QLabel#sliderPickerLabel{color:silver;padding:0;background:#505050;font-weight:normal;font-size:50px;}\n" "QWidget#topbarWidget{min-height:36px;max-height:36px;}\n" "QWidget#contentWidget{border-top:1px solid #515151;}\n" "QWidget#commandWidget{min-height:123px;max-height:123px;border-top:1px solid #515151; border-bottom:1px solid #323232;}\n" "QLabel#logo{min-width:30px;max-width:30px}\n" "QLabel#company{min-width:150px;max-width:150px; }\n" "QLabel#systemMsgBar{min-width:500px;}" - "QLabel#warn{color:#CCCC00;background:transparent;font-size:20px;}" + "QLabel#warn{color:#CCCC00;background:transparent;font-size:20px;}" "QWidget QWidget#statusBarWidget{min-width:300px;}\n" "QWidget QToolButton{border:none;border-radius:10%;font-size:26px; font-weight:Bold;padding:5px;}\n" "QToolButton#btn_main{border:2px solid #0078d8;border-radius:10%;font-size:26px; font-weight:Bold;padding:5px;}\n" @@ -103,8 +103,8 @@ MainWindow::MainWindow(QWidget* parent) : "QDialog QWidget#innerWidget{ background:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1," "stop: 0.0 darkgray, stop: 0.5 lightgray, stop: 1.0 darkgray);" "border-radius:20px;border:5px solid #0078d8; }" - "QDialog#MessageDialog QWidget QWidget{ background:transparent;color:#3078d8}" - "QDialog#MessageDialog QWidget QWidget QLabel{ font-size:30px}" + "QDialog#MessageDialog QWidget QWidget{ background:transparent;color:#3078d8}" + "QDialog#MessageDialog QWidget QWidget QLabel{ font-size:30px}" "#spacer_1, #spacer_2{min-width:2px;max-width:2px;margin-top:6px;margin-bottom:6px;border-right:1px solid #0078d8;}" //FormDialog "QPushButton{border:1px solid silver ;padding-left:50px;padding-right:50px; border-radius:5px; min-height:28px; max-height:28px; background:#4c5052}" @@ -147,6 +147,10 @@ MainWindow::MainWindow(QWidget* parent) : tab->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); QVBoxLayout* layout = new QVBoxLayout(this); layout->setMargin(0); + layout->setSpacing(0); + QWidget * top = new TopBarWidget(this); + top->setObjectName("topbarWidget"); + layout->addWidget(top); layout->addWidget(tab); ui->centralWidget->setLayout(layout); @@ -171,11 +175,11 @@ MainWindow::MainWindow(QWidget* parent) : } }); connect(EventCenter::Default(), &EventCenter::InvokeOperationStart, [=](QObject*, QObject* msg) { - if (msgDialog) { - msgDialog->hide(); - delete msgDialog; - } - msgDialog = new GUIMessageDialog(this); + if (msgDialog){ + msgDialog->hide(); + delete msgDialog; + } + msgDialog = new GUIMessageDialog(this); if (msg) { QString* str = (QString*)msg; @@ -187,11 +191,11 @@ MainWindow::MainWindow(QWidget* parent) : msgDialog->hideExitButton(); msgDialog->startLoading(); AppGlobalValues::setInProcessing(true); - // msgDialog->showFullScreen(); - if (msgDialog->isHidden()) { - msgDialog->show(); - } - }); + // msgDialog->showFullScreen(); + if (msgDialog->isHidden()){ + msgDialog->show(); + } + }); connect(EventCenter::Default(), &EventCenter::InvokeOperationProgress, [=](QObject*, QObject* msg) { if (!msgDialog) msgDialog = new GUIMessageDialog(this); if (msg) @@ -202,8 +206,8 @@ MainWindow::MainWindow(QWidget* parent) : else { msgDialog->hideMessage(); } - // msgDialog->showFullScreen(); - if (msgDialog->isHidden())msgDialog->show(); + // msgDialog->showFullScreen(); + if (msgDialog->isHidden())msgDialog->show(); }); connect(EventCenter::Default(), &EventCenter::InvokeOperationEnd, [=]() { if (!msgDialog) return; @@ -215,6 +219,23 @@ MainWindow::MainWindow(QWidget* parent) : connect(EventCenter::Default(), &EventCenter::RequestLogin, [=](QObject*, QObject* msg) { this->requestLogin(); }); + connect(EventCenter::Default(), &EventCenter::LoginRoleChanged, [=](QObject*, QObject*) { + if (User::Current()->isAdmin() ) + { + if (admin_tab_index == -1) + { + AdminSettingForm * form = new AdminSettingForm(this); + admin_tab_index = tab->addTab(form,"Admin"); + } + } else{ + if (admin_tab_index != -1){ + tab->removeTab(admin_tab_index); + admin_tab_index = -1; + } + } + qApp->processEvents(); + }); + GUIErrorHandle::Default()->init(); DeviceManager::Default()->initDevice(); @@ -255,25 +276,11 @@ void MainWindow::changeEvent(QEvent* event) } void MainWindow::centerWidgetHide() { - ui->centralWidget->setVisible(false); + ui->centralWidget->setVisible(false); } void MainWindow::centerWidgetShow() { - if (User::Current()->isAdmin()) - { - if (admin_tab_index == -1) - { - AdminSettingForm* form = new AdminSettingForm(this); - admin_tab_index = tab->addTab(form, "Admin"); - } - } - else { - if (admin_tab_index != -1) { - tab->removeTab(admin_tab_index); - admin_tab_index = -1; - } - } - qApp->processEvents(); + ui->centralWidget->setVisible(true); } @@ -284,19 +291,19 @@ QTextEdit* MainWindow::getEdit() } void MainWindow::requestLogin() { - LoginWindow l(this); - l.setWindowModality(Qt::WindowModal); - l.showFullScreen(); - this->centerWidgetHide(); - while (l.result() != QDialog::Accepted) - { - l.exec(); - } - this->centerWidgetShow(); + LoginWindow l(this); + l.setWindowModality(Qt::WindowModal); + l.showFullScreen(); + this->centerWidgetHide(); + while(l.result() != QDialog::Accepted) + { + l.exec(); + } + this->centerWidgetShow(); } void MainWindow::debugConsoleOn() { - QTextEdit* text_edit = new QTextEdit(this); + QTextEdit* text_edit = new QTextEdit(this); ui->centralWidget->layout()->addWidget(text_edit); const QString edit_style = "QScrollBar:vertical{border: 0px solid grey; background:#2d2d2d; width: 15px; margin: 0px 0 0px 0; }" diff --git a/src/models/User.cpp b/src/models/User.cpp index 915e4e2..f78429f 100644 --- a/src/models/User.cpp +++ b/src/models/User.cpp @@ -5,6 +5,7 @@ #include "User.h" #include "db/SQLHelper.h" #include +#include #include #include User* User::currentUser = nullptr; @@ -57,14 +58,24 @@ bool User::QueryUser(QString userID, QString Pwd) { SQLHelper::QueryFirst(sql, map, ¶ms); if(!map.isEmpty()) { - if (!currentUser) currentUser = new User; + // first login + if (!currentUser) { + currentUser = new User; +// currentUser->roleName = getRoleName(map["RoleID"].toString()); + } + QString roleN = getRoleName(map["RoleID"].toString()); + #define USER_READONLY_PROPERTY(name) currentUser->m_##name = map[#name].toString(); #define USER_PROPERTY(name) currentUser->mf_##name = false;\ USER_READONLY_PROPERTY(name) USER_PROPERTIES_MACRO() #undef USER_PROPERTY #undef USER_READONLY_PROPERTY - currentUser->isAdminFlag = -1; + // trigger LoginRoleChanged event + if (roleN != currentUser->roleName){ + currentUser->roleName = roleN; + EventCenter::Default()->triggerEvent(LoginRoleChanged, nullptr, nullptr); + } return true; } return false; @@ -99,15 +110,6 @@ bool User::getUser(QString userUID, User& user) { return false; } -bool User::isAdmin() { - if (isAdminFlag<0) - { - auto RoleName = getRoleName(this->m_RoleID); - isAdminFlag = RoleName == "admin"?1:0 ; - } - return isAdminFlag; -} - static bool LOAD_ALL_ROLE = false; static QMap roleCache; @@ -180,5 +182,14 @@ bool User::resetPassword() { } +bool User::isAdmin() { + return roleName == "admin" ; +} + +bool User::isEngineer() { + return roleName == "engineer"; +} + + diff --git a/src/models/User.h b/src/models/User.h index 3acf782..d9941af 100644 --- a/src/models/User.h +++ b/src/models/User.h @@ -63,6 +63,7 @@ public: } bool submitChange(); bool isAdmin(); + bool isEngineer(); bool resetPassword(); static QString getRoleName(QString RoleID); static QString getRoleID(QString RoleName); @@ -77,7 +78,7 @@ private: USER_PROPERTIES_MACRO() #undef USER_PROPERTY #undef USER_READONLY_PROPERTY - int isAdminFlag = -1; + QString roleName; };