102 lines
3.6 KiB
C++
102 lines
3.6 KiB
C++
#include "dialog_passwordchange.h"
|
|
#include "ui_dialog_passwordchange.h"
|
|
#include <QMessageBox>
|
|
#include <QPushButton>
|
|
#include <QRegExpValidator>
|
|
#include <QToolTip>
|
|
|
|
Dialog_PasswordChange::Dialog_PasswordChange(const QString &old_password, QWidget *parent) :
|
|
QDialog(parent),
|
|
ui(new Ui::Dialog_PasswordChange),
|
|
m_old_password(old_password),
|
|
m_new_password("")
|
|
{
|
|
ui->setupUi(this);
|
|
QRegExp rx("[a-zA-Z0-9!@#%^&*()_]+$"); //创建一个正则表达式对象rx
|
|
qReg = new QRegExpValidator(rx, this); //创建一个过滤器对象
|
|
m_lineEditList<<ui->lineEdit_oldPassword<<ui->lineEdit_newPassword<<ui->lineEdit_confirmPassword;
|
|
foreach(QLineEdit* item, m_lineEditList)
|
|
{
|
|
item->setEchoMode(QLineEdit::Password);
|
|
item->setMaxLength(20);
|
|
item->setValidator(qReg);
|
|
}
|
|
m_lineEditList[0]->setPlaceholderText(tr("Type old password"));
|
|
m_lineEditList[1]->setPlaceholderText(tr("Type new password"));
|
|
m_lineEditList[2]->setPlaceholderText(tr("Retype new password"));
|
|
}
|
|
|
|
Dialog_PasswordChange::~Dialog_PasswordChange()
|
|
{
|
|
delete qReg;
|
|
delete ui;
|
|
}
|
|
|
|
QString Dialog_PasswordChange::getNewPassword()
|
|
{
|
|
return m_new_password;
|
|
}
|
|
|
|
void Dialog_PasswordChange::on_cbtn_showPassword_toggled(bool checked)
|
|
{
|
|
foreach(QLineEdit* item, m_lineEditList)
|
|
item->setEchoMode(checked ? QLineEdit::Normal : QLineEdit::PasswordEchoOnEdit);
|
|
}
|
|
|
|
void Dialog_PasswordChange::on_lineEdit_oldPassword_textChanged(const QString &arg1)
|
|
{
|
|
ui->btn_ok->setEnabled(arg1.length() >= 8 && ui->lineEdit_newPassword->text().length() >= 8 && ui->lineEdit_confirmPassword->text().length() >= 8);
|
|
}
|
|
|
|
void Dialog_PasswordChange::on_lineEdit_newPassword_textChanged(const QString &arg1)
|
|
{
|
|
ui->btn_ok->setEnabled(arg1.length() >= 8 && ui->lineEdit_newPassword->text().length() >= 8 && ui->lineEdit_confirmPassword->text().length() >= 8);
|
|
}
|
|
|
|
void Dialog_PasswordChange::on_lineEdit_confirmPassword_textChanged(const QString &arg1)
|
|
{
|
|
ui->btn_ok->setEnabled(arg1.length() >= 8 && ui->lineEdit_newPassword->text().length() >= 8 && ui->lineEdit_confirmPassword->text().length() >= 8);
|
|
}
|
|
|
|
void Dialog_PasswordChange::on_btn_ok_clicked()
|
|
{
|
|
if(ui->lineEdit_oldPassword->text() != m_old_password)
|
|
QMessageBox::warning(this,
|
|
tr("Warning"),
|
|
tr("Old password incorrect.\n"
|
|
"Please try again."));
|
|
else if(ui->lineEdit_newPassword->text() != ui->lineEdit_confirmPassword->text())
|
|
QMessageBox::warning(this,
|
|
tr("Warning"),
|
|
tr("New password and confirm password are not matched.\n"
|
|
"Please make sure the two passwords are the same."));
|
|
else
|
|
{
|
|
m_new_password = ui->lineEdit_newPassword->text();
|
|
done(1);
|
|
}
|
|
}
|
|
|
|
void Dialog_PasswordChange::on_btn_cancel_clicked()
|
|
{
|
|
done(0);
|
|
}
|
|
|
|
void Dialog_PasswordChange::on_lineEdit_oldPassword_inputRejected()
|
|
{
|
|
QToolTip::showText(mapToGlobal(ui->lineEdit_oldPassword->pos()),
|
|
tr("Password only allowed to use numbers, English and special characters."));
|
|
}
|
|
|
|
void Dialog_PasswordChange::on_lineEdit_newPassword_inputRejected()
|
|
{
|
|
QToolTip::showText(mapToGlobal(ui->lineEdit_newPassword->pos()),
|
|
tr("Password only allowed to use numbers, English and special characters."));
|
|
}
|
|
|
|
void Dialog_PasswordChange::on_lineEdit_confirmPassword_inputRejected()
|
|
{
|
|
QToolTip::showText(mapToGlobal(ui->lineEdit_confirmPassword->pos()),
|
|
tr("Password only allowed to use numbers, English and special characters."));
|
|
}
|