From c61dc5ccbe7df38a53f322933022a3700d5be58e Mon Sep 17 00:00:00 2001 From: Krad Date: Fri, 14 Jan 2022 14:24:07 +0800 Subject: [PATCH] AccountFormDialog button style and layout change. --- src/AccountFormDialog.cpp | 302 ++++++++++++++++++-------------------- src/AccountFormDialog.h | 6 +- 2 files changed, 142 insertions(+), 166 deletions(-) diff --git a/src/AccountFormDialog.cpp b/src/AccountFormDialog.cpp index abd2180..3ea6752 100644 --- a/src/AccountFormDialog.cpp +++ b/src/AccountFormDialog.cpp @@ -19,172 +19,152 @@ #include "AlertDialog.h" AccountFormDialog::AccountFormDialog(QWidget* parent, AccountEditMode mode, Qt::WindowFlags f) : GUIFormBaseDialog(parent, f) { - m_mode = mode; - QVBoxLayout* layout = new QVBoxLayout(formWidget); - layout->setSpacing(10); - // add title - QLabel* lbl_title = new QLabel(this); - lbl_title->setAlignment(Qt::AlignCenter); - lbl_title->setText(tr("Account")); - lbl_title->setObjectName("title"); - layout->addWidget(lbl_title); + m_mode = mode; + QVBoxLayout *layout = new QVBoxLayout(formWidget); + layout->setSpacing(10); + // add title + QLabel *lbl_title = new QLabel(this); + lbl_title->setAlignment(Qt::AlignCenter); + lbl_title->setText(tr("Account")); + lbl_title->setObjectName("title"); + layout->addWidget(lbl_title); - //add usercode - QLabel* lbl_UserCode = new QLabel(this); - lbl_UserCode->setText(tr("User ID")); - le_UserCode = new QLineEdit(this); - le_UserCode->setPlaceholderText(tr("Input User ID")); - if (m_mode != New)le_UserCode->setEnabled(false); - layout->addWidget(lbl_UserCode); - layout->addWidget(le_UserCode); - QLabel* lbl_endline1 = new QLabel(this); - lbl_endline1->setObjectName("endline"); - layout->addWidget(lbl_endline1); + //add usercode + QLabel *lbl_UserCode = new QLabel(this); + lbl_UserCode->setText(tr("User ID")); + le_UserCode = new QLineEdit(this); + le_UserCode->setPlaceholderText(tr("Input User ID")); + if (m_mode != New)le_UserCode->setEnabled(false); + layout->addWidget(lbl_UserCode); + layout->addWidget(le_UserCode); + QLabel *lbl_endline1 = new QLabel(this); + lbl_endline1->setObjectName("endline"); + layout->addWidget(lbl_endline1); - //add username - QLabel* lbl_UserName = new QLabel(this); - lbl_UserName->setText(tr("Name")); - le_UserName = new QLineEdit(this); - le_UserName->setPlaceholderText(tr("Input User name")); - layout->addWidget(lbl_UserName); - layout->addWidget(le_UserName); - QLabel* lbl_endline2 = new QLabel(this); - lbl_endline2->setObjectName("endline"); - layout->addWidget(lbl_endline2); + //add username + QLabel *lbl_UserName = new QLabel(this); + lbl_UserName->setText(tr("Name")); + le_UserName = new QLineEdit(this); + le_UserName->setPlaceholderText(tr("Input User name")); + layout->addWidget(lbl_UserName); + layout->addWidget(le_UserName); + QLabel *lbl_endline2 = new QLabel(this); + lbl_endline2->setObjectName("endline"); + layout->addWidget(lbl_endline2); - //add password - QLabel* lbl_Pwd = new QLabel(this); - lbl_Pwd->setText(tr("Password")); - layout->addWidget(lbl_Pwd); + // add new mode + if (m_mode == New) { + //add password + 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 - if (m_mode == New) - { - 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); + QLabel *lbl_endline3 = new QLabel(this); + lbl_endline3->setObjectName("endline"); + layout->addWidget(lbl_endline3); - if (m_mode == Self) - { - //add logout - QLabel* lbl_Logout = new QLabel(this); - lbl_Logout->setText(tr("Logout")); - QPushButton* btn_Logout = new QPushButton(this); - btn_Logout->setText(tr("Logout")); - layout->addWidget(lbl_Logout); - layout->addWidget(btn_Logout); - 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 + QLabel *lbl_Comment = new QLabel(this); + lbl_Comment->setText(tr("Comment")); + le_Comment = new QLineEdit(this); + layout->addWidget(lbl_Comment); + layout->addWidget(le_Comment); + QLabel *lbl_endline0 = new QLabel(this); + lbl_endline0->setObjectName("endline"); + layout->addWidget(lbl_endline0); - //add Comment - QLabel* lbl_Comment = new QLabel(this); - lbl_Comment->setText(tr("Comment")); - le_Comment = new QLineEdit(this); - 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"); + lbl_error->setVisible(false); + layout->addWidget(lbl_error); - lbl_error = new QLabel(this); - lbl_error->setObjectName("warn"); - lbl_error->setVisible(false); - layout->addWidget(lbl_error); - connect(le_Comment, &QLineEdit::textChanged, [=](const QString& text) { - commentChanged = true; - }); - connect(le_UserName, &QLineEdit::textChanged, [=](const QString& text) { - m_NewUserName = text; - userNameChanged = true; - }); + + QHBoxLayout* hlayout = new QHBoxLayout; + layout->addLayout(hlayout); + + //add logout +// QLabel *lbl_Logout = new QLabel(this); +// lbl_Logout->setText(tr("Logout")); + if (m_mode == Self) + { + 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() { @@ -300,10 +280,6 @@ void AccountFormDialog::setAccountInformation(const QMap& val le_Comment->setText(values["Comment"].toString()); m_UserID = values["UserID"].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) { diff --git a/src/AccountFormDialog.h b/src/AccountFormDialog.h index a8fa097..39f2726 100644 --- a/src/AccountFormDialog.h +++ b/src/AccountFormDialog.h @@ -6,7 +6,7 @@ #define GUI_ACCOUNTFORMDIALOG_H class QLabel; class QLineEdit; -class QPushButton; +class QToolButton; class QSqlTableModel; #include "GUIFormBaseDialog.h" @@ -39,8 +39,8 @@ private: QLineEdit* le_UserName = nullptr; QLineEdit* le_Comment = nullptr; QLineEdit* le_Pwd = nullptr; - QPushButton* btn_Pwd = nullptr; - QPushButton* btn_Role = nullptr; + QToolButton* btn_Pwd = nullptr; + QLabel* lbl_error = nullptr; QSqlTableModel* refmodel = nullptr; };