diff --git a/src/icons/eye.png b/src/icons/eye.png new file mode 100644 index 0000000..9a13c1b Binary files /dev/null and b/src/icons/eye.png differ diff --git a/src/stylesheet/Dark2.css b/src/stylesheet/Dark2.css index 900719c..2bcaa9a 100644 --- a/src/stylesheet/Dark2.css +++ b/src/stylesheet/Dark2.css @@ -332,10 +332,21 @@ QDialog#loginForm QLineEdit { font-size: 26px; } +QDialog#loginForm QWidget#LoginEditArea { + background: transparent; + min-height: 110px; + max-height: 110px; +} + QDialog#loginForm QLineEdit:enabled { background-color: #515151 } +QDialog#loginForm QToolButton#ShowPasswordButton{ + qproperty-icon:url(":/icons/eye.png"); + qproperty-iconSize:30px 30px; +} + QDialog#loginForm QToolButton#btnlogin { min-height: 100px; max-height: 100px; diff --git a/src/windows/LoginDialog.cpp b/src/windows/LoginDialog.cpp index 98b35aa..7df5bc1 100644 --- a/src/windows/LoginDialog.cpp +++ b/src/windows/LoginDialog.cpp @@ -34,6 +34,7 @@ LoginDialog::LoginDialog(QWidget* aParent) , mAccountEdit(new ULineEdit(mDialogFrame)) , mPasswordEdit(new ULineEdit(mDialogFrame)) , mLoginButton(nullptr) + , mShowPasswordButton(new QToolButton(this)) , mErrorMessage(new QLabel(this)) , mIsRunning(false) , mHideClickCount(0) @@ -122,15 +123,37 @@ void LoginDialog::initializeDialogFrame() void LoginDialog::initializeEdit() { + QWidget* accountEditArea = new QWidget(); + accountEditArea->setObjectName("LoginEditArea"); + QHBoxLayout* accountEditAreaLayout = new QHBoxLayout(accountEditArea); mAccountEdit->setObjectName("combobox_UserName"); mAccountEdit->setPlaceholderText(tr("Username")); mAccountEdit->setFocusPolicy(Qt::ClickFocus); - mDialogContentsLayout->addWidget(mAccountEdit); + accountEditAreaLayout->addWidget(mAccountEdit); + accountEditAreaLayout->addItem(new QSpacerItem(49,20,QSizePolicy::Fixed)); + mDialogContentsLayout->addWidget(accountEditArea); + + QWidget* passwordEditArea = new QWidget(this); + passwordEditArea->setObjectName("LoginEditArea"); + QHBoxLayout* passwordEditAreaLayout = new QHBoxLayout(passwordEditArea); mPasswordEdit->setObjectName("edt_Password"); mPasswordEdit->setEchoMode(QLineEdit::Password); mPasswordEdit->setPlaceholderText(tr("Password")); mPasswordEdit->setFocusPolicy(Qt::ClickFocus); - mDialogContentsLayout->addWidget(mPasswordEdit); + passwordEditAreaLayout->addWidget(mPasswordEdit); + passwordEditAreaLayout->addWidget(mShowPasswordButton); + mShowPasswordButton->setObjectName("ShowPasswordButton"); + mDialogContentsLayout->addWidget(passwordEditArea); + + connect(mShowPasswordButton, &QToolButton::pressed, [this]() + { + mPasswordEdit->setEchoMode(QLineEdit::Normal); + }); + + connect(mShowPasswordButton, &QToolButton::released, [this]() + { + mPasswordEdit->setEchoMode(QLineEdit::Password); + }); } void LoginDialog::initializeLoginButton() diff --git a/src/windows/LoginDialog.h b/src/windows/LoginDialog.h index 4b0dc90..4baebc7 100644 --- a/src/windows/LoginDialog.h +++ b/src/windows/LoginDialog.h @@ -54,6 +54,7 @@ private: ULineEdit* mAccountEdit; ULineEdit* mPasswordEdit; QToolButton* mLoginButton; + QToolButton* mShowPasswordButton; QLabel* mErrorMessage; bool mIsRunning; int mHideClickCount;