AccountFormDialog button style and layout change.

This commit is contained in:
Krad
2022-01-14 14:24:07 +08:00
parent 81d9bfee6e
commit c61dc5ccbe
2 changed files with 142 additions and 166 deletions

View File

@@ -19,172 +19,152 @@
#include "AlertDialog.h" #include "AlertDialog.h"
AccountFormDialog::AccountFormDialog(QWidget* parent, AccountEditMode mode, Qt::WindowFlags f) : GUIFormBaseDialog(parent, f) { AccountFormDialog::AccountFormDialog(QWidget* parent, AccountEditMode mode, Qt::WindowFlags f) : GUIFormBaseDialog(parent, f) {
m_mode = mode; m_mode = mode;
QVBoxLayout* layout = new QVBoxLayout(formWidget); QVBoxLayout *layout = new QVBoxLayout(formWidget);
layout->setSpacing(10); layout->setSpacing(10);
// add title // add title
QLabel* lbl_title = new QLabel(this); QLabel *lbl_title = new QLabel(this);
lbl_title->setAlignment(Qt::AlignCenter); lbl_title->setAlignment(Qt::AlignCenter);
lbl_title->setText(tr("Account")); lbl_title->setText(tr("Account"));
lbl_title->setObjectName("title"); lbl_title->setObjectName("title");
layout->addWidget(lbl_title); layout->addWidget(lbl_title);
//add usercode //add usercode
QLabel* lbl_UserCode = new QLabel(this); QLabel *lbl_UserCode = new QLabel(this);
lbl_UserCode->setText(tr("User ID")); lbl_UserCode->setText(tr("User ID"));
le_UserCode = new QLineEdit(this); le_UserCode = new QLineEdit(this);
le_UserCode->setPlaceholderText(tr("Input User ID")); le_UserCode->setPlaceholderText(tr("Input User ID"));
if (m_mode != New)le_UserCode->setEnabled(false); if (m_mode != New)le_UserCode->setEnabled(false);
layout->addWidget(lbl_UserCode); layout->addWidget(lbl_UserCode);
layout->addWidget(le_UserCode); layout->addWidget(le_UserCode);
QLabel* lbl_endline1 = new QLabel(this); QLabel *lbl_endline1 = new QLabel(this);
lbl_endline1->setObjectName("endline"); lbl_endline1->setObjectName("endline");
layout->addWidget(lbl_endline1); layout->addWidget(lbl_endline1);
//add username //add username
QLabel* lbl_UserName = new QLabel(this); QLabel *lbl_UserName = new QLabel(this);
lbl_UserName->setText(tr("Name")); lbl_UserName->setText(tr("Name"));
le_UserName = new QLineEdit(this); le_UserName = new QLineEdit(this);
le_UserName->setPlaceholderText(tr("Input User name")); le_UserName->setPlaceholderText(tr("Input User name"));
layout->addWidget(lbl_UserName); layout->addWidget(lbl_UserName);
layout->addWidget(le_UserName); layout->addWidget(le_UserName);
QLabel* lbl_endline2 = new QLabel(this); QLabel *lbl_endline2 = new QLabel(this);
lbl_endline2->setObjectName("endline"); lbl_endline2->setObjectName("endline");
layout->addWidget(lbl_endline2); layout->addWidget(lbl_endline2);
//add password // add new mode
QLabel* lbl_Pwd = new QLabel(this); if (m_mode == New) {
lbl_Pwd->setText(tr("Password")); //add password
layout->addWidget(lbl_Pwd); QLabel *lbl_Pwd = new QLabel(this);
lbl_Pwd->setText(tr("Password"));
layout->addWidget(lbl_Pwd);
le_Pwd = new QLineEdit(this);
le_Pwd->setPlaceholderText(tr("Input password"));
le_Pwd->setEchoMode(QLineEdit::Password);
layout->addWidget(le_Pwd);
m_RoleID = User::getRoleID("doctor");
}
// add new mode QLabel *lbl_endline3 = new QLabel(this);
if (m_mode == New) lbl_endline3->setObjectName("endline");
{ layout->addWidget(lbl_endline3);
le_Pwd = new QLineEdit(this);
le_Pwd->setPlaceholderText(tr("Input password"));
le_Pwd->setEchoMode(QLineEdit::Password);
layout->addWidget(le_Pwd);
}
else {//edit mode
btn_Pwd = new QPushButton(this);
btn_Pwd->setText(m_mode == Self ? tr("Change Password") : tr("Reset Password"));
layout->addWidget(btn_Pwd);
}
QLabel* lbl_endline3 = new QLabel(this);
lbl_endline3->setObjectName("endline");
layout->addWidget(lbl_endline3);
if (m_mode == Self) //add Comment
{ QLabel *lbl_Comment = new QLabel(this);
//add logout lbl_Comment->setText(tr("Comment"));
QLabel* lbl_Logout = new QLabel(this); le_Comment = new QLineEdit(this);
lbl_Logout->setText(tr("Logout")); layout->addWidget(lbl_Comment);
QPushButton* btn_Logout = new QPushButton(this); layout->addWidget(le_Comment);
btn_Logout->setText(tr("Logout")); QLabel *lbl_endline0 = new QLabel(this);
layout->addWidget(lbl_Logout); lbl_endline0->setObjectName("endline");
layout->addWidget(btn_Logout); layout->addWidget(lbl_endline0);
QLabel* lbl_endline0 = new QLabel(this);
lbl_endline0->setObjectName("endline");
layout->addWidget(lbl_endline0);
// load current user data
if (User::Current())
{
le_UserCode->setText(User::Current()->getUserCode());
le_UserName->setText(User::Current()->getUserName());
m_UserID = User::Current()->getUserID();
m_UserPwd = User::Current()->getPassword();
}
connect(btn_Pwd, &QPushButton::clicked, [t = this]() {
ChangePasswordFormDialog dia(t->parentWidget());
dia.setWindowModality(Qt::WindowModal);
dia.exec();
});
connect(btn_Logout, &QAbstractButton::clicked, [=]() {
this->accept();
LOG_USER_OPERATION(Logout);
EventCenter::Default()->triggerEvent(GUIEvents::RequestLogin, nullptr, nullptr);
});
}
else
{
//add change role
QLabel* lbl_Role = new QLabel(this);
lbl_Role->setText(tr("Change Role"));
btn_Role = new QPushButton(this);
layout->addWidget(lbl_Role);
layout->addWidget(btn_Role);
QLabel* lbl_endline0 = new QLabel(this);
lbl_endline0->setObjectName("endline");
layout->addWidget(lbl_endline0);
//set default value
if (m_mode == New) {
btn_Role->setText("doctor");
m_RoleID = User::getRoleID("doctor");
}
else {
connect(btn_Pwd, &QAbstractButton::clicked, [=]() {
AlertDialog dialog(this);
dialog.setButtonMode(OkAndCancel);
dialog.setWindowModality(Qt::WindowModal);
dialog.setAlertMessage(tr("Reset password to \"123456\" ?"));
if (dialog.exec() == Accepted)
{
User user;
dialog.setButtonMode(OkOnly);
if (!User::getUser(m_UserID, user)) {
dialog.setAlertMessage(tr("Inner error, can't find reference user!"));
dialog.exec();
return;
}
if (!user.resetPassword())
{
dialog.setAlertMessage(tr("Submit change to database fail!"));
dialog.exec();
}
}
});
}
connect(btn_Role, &QAbstractButton::clicked, [=]() {
SelectDialog selectDialog(this);
selectDialog.setAvailableDates(User::getAllRoleName());
selectDialog.setSelectedValue(btn_Role->text());
selectDialog.setWindowModality(Qt::WindowModal);
// submit change
if (selectDialog.exec() == Accepted)
{
if (selectDialog.getSelectedValue() != btn_Role->text())
{
QString newRoleID = User::getRoleID(selectDialog.getSelectedValue());
btn_Role->setText(selectDialog.getSelectedValue());
m_RoleID = newRoleID;
qDebug() << "new Role ID:" << newRoleID;
this->roleChanged = true;
}
}
});
}
//add Comment lbl_error = new QLabel(this);
QLabel* lbl_Comment = new QLabel(this); lbl_error->setObjectName("warn");
lbl_Comment->setText(tr("Comment")); lbl_error->setVisible(false);
le_Comment = new QLineEdit(this); layout->addWidget(lbl_error);
layout->addWidget(lbl_Comment);
layout->addWidget(le_Comment);
QLabel* lbl_endline0 = new QLabel(this);
lbl_endline0->setObjectName("endline");
layout->addWidget(lbl_endline0);
lbl_error = new QLabel(this);
lbl_error->setObjectName("warn"); QHBoxLayout* hlayout = new QHBoxLayout;
lbl_error->setVisible(false); layout->addLayout(hlayout);
layout->addWidget(lbl_error);
connect(le_Comment, &QLineEdit::textChanged, [=](const QString& text) { //add logout
commentChanged = true; // QLabel *lbl_Logout = new QLabel(this);
}); // lbl_Logout->setText(tr("Logout"));
connect(le_UserName, &QLineEdit::textChanged, [=](const QString& text) { if (m_mode == Self)
m_NewUserName = text; {
userNameChanged = true; QToolButton *btn_Logout = new QToolButton(this);
}); btn_Logout->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
btn_Logout->setIcon(QIcon(":/icons/logout.png"));
btn_Logout->setIconSize({30, 30});
btn_Logout->setText(tr("Logout"));
btn_Logout->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Fixed);
btn_Logout->setObjectName("editvalBtn");
hlayout->addWidget(btn_Logout);
connect(btn_Logout, &QAbstractButton::clicked, [=]() {
this->accept();
LOG_USER_OPERATION(Logout);
EventCenter::Default()->triggerEvent(GUIEvents::RequestLogin, nullptr, nullptr);
});
}
// load current user data
if (m_mode == Self && User::Current()) {
le_UserCode->setText(User::Current()->getUserCode());
le_UserName->setText(User::Current()->getUserName());
m_UserID = User::Current()->getUserID();
m_UserPwd = User::Current()->getPassword();
}
if (m_mode != New) {
btn_Pwd = new QToolButton(this);
btn_Pwd->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
btn_Pwd->setObjectName("editvalBtn");
btn_Pwd->setIcon(QIcon(":/icons/edit.png"));
btn_Pwd->setIconSize({30, 30});
btn_Pwd->setText(m_mode == Self ? tr("Change Password") : tr("Reset Password"));
btn_Pwd->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
hlayout->addWidget(btn_Pwd);
QLabel *lbl_endline9 = new QLabel(this);
lbl_endline9->setFixedHeight(2);
lbl_endline9->setObjectName("endline");
layout->addWidget(lbl_endline9);
if (m_mode == Self) {
connect(btn_Pwd, &QPushButton::clicked, [=]() {
ChangePasswordFormDialog dia(this->parentWidget());
dia.setWindowModality(Qt::WindowModal);
dia.exec();
});
} else {
connect(btn_Pwd, &QAbstractButton::clicked, [=]() {
AlertDialog dialog(this);
dialog.setButtonMode(OkAndCancel);
dialog.setWindowModality(Qt::WindowModal);
dialog.setAlertMessage(tr("Reset password to \"123456\" ?"));
if (dialog.exec() == Accepted) {
User user;
dialog.setButtonMode(OkOnly);
if (!User::getUser(m_UserID, user)) {
dialog.setAlertMessage(tr("Inner error, can't find reference user!"));
dialog.exec();
return;
}
if (!user.resetPassword()) {
dialog.setAlertMessage(tr("Submit change to database fail!"));
dialog.exec();
}
}
});
}
}
connect(le_Comment, &QLineEdit::textChanged, [=](const QString &text) {
commentChanged = true;
});
connect(le_UserName, &QLineEdit::textChanged, [=](const QString &text) {
m_NewUserName = text;
userNameChanged = true;
});
} }
AccountFormDialog::~AccountFormDialog() { AccountFormDialog::~AccountFormDialog() {
@@ -300,10 +280,6 @@ void AccountFormDialog::setAccountInformation(const QMap<QString, QVariant>& val
le_Comment->setText(values["Comment"].toString()); le_Comment->setText(values["Comment"].toString());
m_UserID = values["UserID"].toString(); m_UserID = values["UserID"].toString();
m_UserPwd = values["Password"].toString(); m_UserPwd = values["Password"].toString();
if (btn_Role) {
m_RoleID = values["RoleID"].toString();
btn_Role->setText(User::getRoleName(m_RoleID));
}
} }
void AccountFormDialog::warn(QString msg) { void AccountFormDialog::warn(QString msg) {

View File

@@ -6,7 +6,7 @@
#define GUI_ACCOUNTFORMDIALOG_H #define GUI_ACCOUNTFORMDIALOG_H
class QLabel; class QLabel;
class QLineEdit; class QLineEdit;
class QPushButton; class QToolButton;
class QSqlTableModel; class QSqlTableModel;
#include "GUIFormBaseDialog.h" #include "GUIFormBaseDialog.h"
@@ -39,8 +39,8 @@ private:
QLineEdit* le_UserName = nullptr; QLineEdit* le_UserName = nullptr;
QLineEdit* le_Comment = nullptr; QLineEdit* le_Comment = nullptr;
QLineEdit* le_Pwd = nullptr; QLineEdit* le_Pwd = nullptr;
QPushButton* btn_Pwd = nullptr; QToolButton* btn_Pwd = nullptr;
QPushButton* btn_Role = nullptr;
QLabel* lbl_error = nullptr; QLabel* lbl_error = nullptr;
QSqlTableModel* refmodel = nullptr; QSqlTableModel* refmodel = nullptr;
}; };