This commit is contained in:
Krad
2021-12-21 16:11:14 +08:00
parent 7c0f8ed8fd
commit ba5d651f54
4 changed files with 74 additions and 58 deletions

View File

@@ -126,10 +126,7 @@ void LoginWindow::doLogin()
QString strPassWord = m_pPassWordEdit->text(); QString strPassWord = m_pPassWordEdit->text();
QString encryptedPassword = strPassWord; QString encryptedPassword = strPassWord;
strPassWord = "12345678"; strPassWord = "123456";
QString encryptPwd = User::getEncryptedPassword(strPassWord); QString encryptPwd = User::getEncryptedPassword(strPassWord);
QString sql = QString("select UserCode from Account where UserCode='%1' and Password='%2'") QString sql = QString("select UserCode from Account where UserCode='%1' and Password='%2'")

View File

@@ -82,14 +82,14 @@ MainWindow::MainWindow(QWidget* parent) :
"QComboBox QAbstractItemView::item {min-height:60px;max-height:60px; border:1px solid white;}" "QComboBox QAbstractItemView::item {min-height:60px;max-height:60px; border:1px solid white;}"
//"QScrollBar:vertical {min-width: 50px;}" //"QScrollBar:vertical {min-width: 50px;}"
"QLabel{color:white; font-weight:bold; font-size:16px;}\n" "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#topbarWidget{min-height:36px;max-height:36px;}\n"
"QWidget#contentWidget{border-top:1px solid #515151;}\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" "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#logo{min-width:30px;max-width:30px}\n"
"QLabel#company{min-width:150px;max-width:150px; }\n" "QLabel#company{min-width:150px;max-width:150px; }\n"
"QLabel#systemMsgBar{min-width:500px;}" "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 QWidget#statusBarWidget{min-width:300px;}\n"
"QWidget QToolButton{border:none;border-radius:10%;font-size:26px; font-weight:Bold;padding:5px;}\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" "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," "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);" "stop: 0.0 darkgray, stop: 0.5 lightgray, stop: 1.0 darkgray);"
"border-radius:20px;border:5px solid #0078d8; }" "border-radius:20px;border:5px solid #0078d8; }"
"QDialog#MessageDialog QWidget QWidget{ background:transparent;color:#3078d8}" "QDialog#MessageDialog QWidget QWidget{ background:transparent;color:#3078d8}"
"QDialog#MessageDialog QWidget QWidget QLabel{ font-size:30px}" "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;}" "#spacer_1, #spacer_2{min-width:2px;max-width:2px;margin-top:6px;margin-bottom:6px;border-right:1px solid #0078d8;}"
//FormDialog //FormDialog
"QPushButton{border:1px solid silver ;padding-left:50px;padding-right:50px; border-radius:5px; min-height:28px; max-height:28px; background:#4c5052}" "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); tab->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
QVBoxLayout* layout = new QVBoxLayout(this); QVBoxLayout* layout = new QVBoxLayout(this);
layout->setMargin(0); layout->setMargin(0);
layout->setSpacing(0);
QWidget * top = new TopBarWidget(this);
top->setObjectName("topbarWidget");
layout->addWidget(top);
layout->addWidget(tab); layout->addWidget(tab);
ui->centralWidget->setLayout(layout); ui->centralWidget->setLayout(layout);
@@ -171,11 +175,11 @@ MainWindow::MainWindow(QWidget* parent) :
} }
}); });
connect(EventCenter::Default(), &EventCenter::InvokeOperationStart, [=](QObject*, QObject* msg) { connect(EventCenter::Default(), &EventCenter::InvokeOperationStart, [=](QObject*, QObject* msg) {
if (msgDialog) { if (msgDialog){
msgDialog->hide(); msgDialog->hide();
delete msgDialog; delete msgDialog;
} }
msgDialog = new GUIMessageDialog(this); msgDialog = new GUIMessageDialog(this);
if (msg) if (msg)
{ {
QString* str = (QString*)msg; QString* str = (QString*)msg;
@@ -187,11 +191,11 @@ MainWindow::MainWindow(QWidget* parent) :
msgDialog->hideExitButton(); msgDialog->hideExitButton();
msgDialog->startLoading(); msgDialog->startLoading();
AppGlobalValues::setInProcessing(true); AppGlobalValues::setInProcessing(true);
// msgDialog->showFullScreen(); // msgDialog->showFullScreen();
if (msgDialog->isHidden()) { if (msgDialog->isHidden()){
msgDialog->show(); msgDialog->show();
} }
}); });
connect(EventCenter::Default(), &EventCenter::InvokeOperationProgress, [=](QObject*, QObject* msg) { connect(EventCenter::Default(), &EventCenter::InvokeOperationProgress, [=](QObject*, QObject* msg) {
if (!msgDialog) msgDialog = new GUIMessageDialog(this); if (!msgDialog) msgDialog = new GUIMessageDialog(this);
if (msg) if (msg)
@@ -202,8 +206,8 @@ MainWindow::MainWindow(QWidget* parent) :
else { else {
msgDialog->hideMessage(); msgDialog->hideMessage();
} }
// msgDialog->showFullScreen(); // msgDialog->showFullScreen();
if (msgDialog->isHidden())msgDialog->show(); if (msgDialog->isHidden())msgDialog->show();
}); });
connect(EventCenter::Default(), &EventCenter::InvokeOperationEnd, [=]() { connect(EventCenter::Default(), &EventCenter::InvokeOperationEnd, [=]() {
if (!msgDialog) return; if (!msgDialog) return;
@@ -215,6 +219,23 @@ MainWindow::MainWindow(QWidget* parent) :
connect(EventCenter::Default(), &EventCenter::RequestLogin, [=](QObject*, QObject* msg) { connect(EventCenter::Default(), &EventCenter::RequestLogin, [=](QObject*, QObject* msg) {
this->requestLogin(); 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(); GUIErrorHandle::Default()->init();
DeviceManager::Default()->initDevice(); DeviceManager::Default()->initDevice();
@@ -255,25 +276,11 @@ void MainWindow::changeEvent(QEvent* event)
} }
void MainWindow::centerWidgetHide() { void MainWindow::centerWidgetHide() {
ui->centralWidget->setVisible(false); ui->centralWidget->setVisible(false);
} }
void MainWindow::centerWidgetShow() { 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); ui->centralWidget->setVisible(true);
} }
@@ -284,19 +291,19 @@ QTextEdit* MainWindow::getEdit()
} }
void MainWindow::requestLogin() { void MainWindow::requestLogin() {
LoginWindow l(this); LoginWindow l(this);
l.setWindowModality(Qt::WindowModal); l.setWindowModality(Qt::WindowModal);
l.showFullScreen(); l.showFullScreen();
this->centerWidgetHide(); this->centerWidgetHide();
while (l.result() != QDialog::Accepted) while(l.result() != QDialog::Accepted)
{ {
l.exec(); l.exec();
} }
this->centerWidgetShow(); this->centerWidgetShow();
} }
void MainWindow::debugConsoleOn() { void MainWindow::debugConsoleOn() {
QTextEdit* text_edit = new QTextEdit(this); QTextEdit* text_edit = new QTextEdit(this);
ui->centralWidget->layout()->addWidget(text_edit); ui->centralWidget->layout()->addWidget(text_edit);
const QString edit_style = const QString edit_style =
"QScrollBar:vertical{border: 0px solid grey; background:#2d2d2d; width: 15px; margin: 0px 0 0px 0; }" "QScrollBar:vertical{border: 0px solid grey; background:#2d2d2d; width: 15px; margin: 0px 0 0px 0; }"

View File

@@ -5,6 +5,7 @@
#include "User.h" #include "User.h"
#include "db/SQLHelper.h" #include "db/SQLHelper.h"
#include <QMetaProperty> #include <QMetaProperty>
#include <event/EventCenter.h>
#include <QUuid> #include <QUuid>
#include <qdebug.h> #include <qdebug.h>
User* User::currentUser = nullptr; User* User::currentUser = nullptr;
@@ -57,14 +58,24 @@ bool User::QueryUser(QString userID, QString Pwd) {
SQLHelper::QueryFirst(sql, map, &params); SQLHelper::QueryFirst(sql, map, &params);
if(!map.isEmpty()) 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_READONLY_PROPERTY(name) currentUser->m_##name = map[#name].toString();
#define USER_PROPERTY(name) currentUser->mf_##name = false;\ #define USER_PROPERTY(name) currentUser->mf_##name = false;\
USER_READONLY_PROPERTY(name) USER_READONLY_PROPERTY(name)
USER_PROPERTIES_MACRO() USER_PROPERTIES_MACRO()
#undef USER_PROPERTY #undef USER_PROPERTY
#undef USER_READONLY_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 true;
} }
return false; return false;
@@ -99,15 +110,6 @@ bool User::getUser(QString userUID, User& user) {
return false; 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 bool LOAD_ALL_ROLE = false;
static QMap<QString,QString> roleCache; static QMap<QString,QString> roleCache;
@@ -180,5 +182,14 @@ bool User::resetPassword() {
} }
bool User::isAdmin() {
return roleName == "admin" ;
}
bool User::isEngineer() {
return roleName == "engineer";
}

View File

@@ -63,6 +63,7 @@ public:
} }
bool submitChange(); bool submitChange();
bool isAdmin(); bool isAdmin();
bool isEngineer();
bool resetPassword(); bool resetPassword();
static QString getRoleName(QString RoleID); static QString getRoleName(QString RoleID);
static QString getRoleID(QString RoleName); static QString getRoleID(QString RoleName);
@@ -77,7 +78,7 @@ private:
USER_PROPERTIES_MACRO() USER_PROPERTIES_MACRO()
#undef USER_PROPERTY #undef USER_PROPERTY
#undef USER_READONLY_PROPERTY #undef USER_READONLY_PROPERTY
int isAdminFlag = -1; QString roleName;
}; };