File indexing completed on 2024-12-01 04:36:51
0001 /* 0002 SPDX-FileCopyrightText: 2020-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "passwordlineeditwidget.h" 0008 #include "dialogs/resetpassworddialog.h" 0009 #include <KAuthorized> 0010 #include <KLineEditEventHandler> 0011 #include <KLocalizedString> 0012 #include <KPasswordLineEdit> 0013 #include <QHBoxLayout> 0014 #include <QPointer> 0015 #include <QPushButton> 0016 0017 PasswordLineEditWidget::PasswordLineEditWidget(QWidget *parent) 0018 : QWidget(parent) 0019 , mPasswordLineEdit(new KPasswordLineEdit(this)) 0020 , mResetPasswordButton(new QPushButton(i18n("Reset Password"), this)) 0021 { 0022 auto mainLayout = new QHBoxLayout(this); 0023 mainLayout->setObjectName(QStringLiteral("mainLayout")); 0024 mainLayout->setContentsMargins({}); 0025 0026 mPasswordLineEdit->setObjectName(QStringLiteral("mPasswordLineEdit")); 0027 mPasswordLineEdit->setRevealPasswordAvailable(KAuthorized::authorize(QStringLiteral("lineedit_reveal_password"))); 0028 mainLayout->addWidget(mPasswordLineEdit); 0029 0030 mResetPasswordButton->setObjectName(QStringLiteral("mResetPasswordButton")); 0031 mainLayout->addWidget(mPasswordLineEdit); 0032 mainLayout->addWidget(mResetPasswordButton); 0033 KLineEditEventHandler::catchReturnKey(mPasswordLineEdit->lineEdit()); 0034 connect(mResetPasswordButton, &QPushButton::clicked, this, &PasswordLineEditWidget::slotResetPasswordButton); 0035 } 0036 0037 PasswordLineEditWidget::~PasswordLineEditWidget() = default; 0038 0039 KPasswordLineEdit *PasswordLineEditWidget::passwordLineEdit() const 0040 { 0041 return mPasswordLineEdit; 0042 } 0043 0044 void PasswordLineEditWidget::setAllowPasswordReset(bool allowPassword) 0045 { 0046 mResetPasswordButton->setVisible(allowPassword); 0047 } 0048 0049 void PasswordLineEditWidget::slotResetPasswordButton() 0050 { 0051 QPointer<ResetPasswordDialog> dialog = new ResetPasswordDialog(this); 0052 if (dialog->exec()) { 0053 Q_EMIT resetPasswordRequested(dialog->email()); 0054 } 0055 delete dialog; 0056 } 0057 0058 #include "moc_passwordlineeditwidget.cpp"