1 #include "dlg_edit_password.h"
2 
3 #include "settingscache.h"
4 
5 #include <QDialogButtonBox>
6 #include <QGridLayout>
7 #include <QHBoxLayout>
8 #include <QLabel>
9 #include <QMessageBox>
10 
DlgEditPassword(QWidget * parent)11 DlgEditPassword::DlgEditPassword(QWidget *parent) : QDialog(parent)
12 {
13 
14     oldPasswordLabel = new QLabel(tr("Old password:"));
15     oldPasswordEdit = new QLineEdit();
16 
17     if (SettingsCache::instance().servers().getSavePassword())
18         oldPasswordEdit->setText(SettingsCache::instance().servers().getPassword());
19 
20     oldPasswordLabel->setBuddy(oldPasswordEdit);
21     oldPasswordEdit->setEchoMode(QLineEdit::Password);
22 
23     newPasswordLabel = new QLabel(tr("New password:"));
24     newPasswordEdit = new QLineEdit();
25     newPasswordLabel->setBuddy(newPasswordLabel);
26     newPasswordEdit->setEchoMode(QLineEdit::Password);
27 
28     newPasswordLabel2 = new QLabel(tr("Confirm new password:"));
29     newPasswordEdit2 = new QLineEdit();
30     newPasswordLabel2->setBuddy(newPasswordLabel2);
31     newPasswordEdit2->setEchoMode(QLineEdit::Password);
32 
33     QGridLayout *grid = new QGridLayout;
34     grid->addWidget(oldPasswordLabel, 0, 0);
35     grid->addWidget(oldPasswordEdit, 0, 1);
36     grid->addWidget(newPasswordLabel, 1, 0);
37     grid->addWidget(newPasswordEdit, 1, 1);
38     grid->addWidget(newPasswordLabel2, 2, 0);
39     grid->addWidget(newPasswordEdit2, 2, 1);
40 
41     QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
42     connect(buttonBox, SIGNAL(accepted()), this, SLOT(actOk()));
43     connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
44 
45     QVBoxLayout *mainLayout = new QVBoxLayout;
46     mainLayout->addLayout(grid);
47     mainLayout->addWidget(buttonBox);
48     setLayout(mainLayout);
49 
50     setWindowTitle(tr("Change password"));
51     setFixedHeight(sizeHint().height());
52     setMinimumWidth(300);
53 }
54 
actOk()55 void DlgEditPassword::actOk()
56 {
57     if (newPasswordEdit->text() != newPasswordEdit2->text()) {
58         QMessageBox::warning(this, tr("Error"), tr("The new passwords don't match."));
59         return;
60     }
61 
62     // always save the password so it will be picked up by the connect dialog
63     SettingsCache::instance().servers().setPassword(newPasswordEdit->text());
64     accept();
65 }
66