1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
/*
SPDX-FileCopyrightText: 2016 Elvis Angelaccio <elvis.angelaccio@kde.org>
SPDX-License-Identifier: LGPL-2.0-or-later
*/
#include "knewpasswordwidget_test.h"
#include <QApplication>
#include <QCheckBox>
#include <QDialogButtonBox>
#include <QPushButton>
#include <QVBoxLayout>
#include <KMessageBox>
#include <KNewPasswordWidget>
// Doxygen will generate code snippets from this file.
// We can't use i18n() here, but we want it to show up in the apidox.
#define i18n QStringLiteral
MyPasswordDialog::MyPasswordDialog(QWidget *parent)
: QDialog(parent)
{
m_passwordWidget = new KNewPasswordWidget(this);
m_buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this);
m_passwordWidget->setMinimumPasswordLength(6);
auto layout = new QVBoxLayout(this);
layout->addWidget(m_passwordWidget);
layout->addWidget(new QCheckBox(QStringLiteral("A checkbox"), this));
layout->addWidget(m_buttonBox);
connect(m_buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
connect(m_buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
}
//! [accept_custom_dialog]
void MyPasswordDialog::accept()
{
switch (m_passwordWidget->passwordStatus()) {
case KNewPasswordWidget::WeakPassword:
case KNewPasswordWidget::StrongPassword:
QDialog::accept();
break;
case KNewPasswordWidget::PasswordNotVerified:
KMessageBox::error(nullptr, i18n("The chosen password does not match the given verification password."));
break;
case KNewPasswordWidget::EmptyPasswordNotAllowed:
KMessageBox::error(nullptr, i18n("The chosen password cannot be empty."));
break;
case KNewPasswordWidget::PasswordTooShort:
KMessageBox::error(nullptr, i18n("The chosen password is too short."));
break;
}
}
//! [accept_custom_dialog]
//! [update_custom_dialog]
void MyPasswordDialog::slotPasswordStatusChanged()
{
// You may want to extend this switch with more cases,
// in order to warn the user about all the possible password issues.
switch (m_passwordWidget->passwordStatus()) {
case KNewPasswordWidget::WeakPassword:
case KNewPasswordWidget::StrongPassword:
m_buttonBox->button(QDialogButtonBox::Ok)->setEnabled(true);
break;
default:
m_buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
break;
}
}
//! [update_custom_dialog]
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
app.setAttribute(Qt::AA_UseHighDpiPixmaps, true);
MyPasswordDialog dialog;
QObject::connect(&dialog, &QDialog::finished, &app, &QCoreApplication::quit);
dialog.show();
return app.exec();
}
#include "moc_knewpasswordwidget_test.cpp"
|