6923c52a45e73838e97d73e573478e0df5b43226
[easylist] / settingsform.cpp
1 #include "settingsform.h"\r
2 #include "ui_settingsform.h"\r
3 \r
4 SettingsForm::SettingsForm(QWidget *parent) :\r
5     SlideWidget(parent),\r
6     ui(new Ui::SettingsForm)\r
7 {\r
8     ui->setupUi(this);\r
9     ui->syncTipLabel->setOpenExternalLinks(true);\r
10     ui->syncUsernameLineEdit->setInputMethodHints(Qt::ImhNoAutoUppercase);\r
11     ui->syncPasswordLineEdit->setInputMethodHints(Qt::ImhNoAutoUppercase);\r
12     ui->syncUrlLineEdit->setInputMethodHints(Qt::ImhNoAutoUppercase);\r
13     settings = new QSettings(WILLEM_LIU, EASY_LIST);\r
14     ui->syncPasswordLineEdit->installEventFilter(this);\r
15     shown();\r
16 }\r
17 \r
18 SettingsForm::~SettingsForm()\r
19 {\r
20     delete ui;\r
21 }\r
22 \r
23 void SettingsForm::shown()\r
24 {\r
25     ui->syncUsernameLineEdit->setText(settings->value(USERNAME,"").toString());\r
26     ui->syncPasswordLineEdit->setText(settings->value(PASSWORD,"").toString());\r
27     if(settings->contains(PASSWORD))\r
28     {\r
29         ui->syncPasswordLineEdit->setReadOnly(true);\r
30     }\r
31 \r
32     ui->syncUrlLineEdit->setText(settings->value(SYNC_URL, DEFAULT_SYNC_URL).toString());\r
33     ui->syncUsernameLineEdit->setFocus(Qt::ActiveWindowFocusReason);\r
34 }\r
35 \r
36 bool SettingsForm::eventFilter(QObject *obj, QEvent *e)\r
37 {\r
38     if(obj == ui->syncPasswordLineEdit && ui->syncPasswordLineEdit->isReadOnly() && e->type() == QEvent::MouseButtonRelease)\r
39     {\r
40         int res = QMessageBox::warning(this, "Clear Password",\r
41                                        "Are you sure you would like to change the password?",\r
42                                        QMessageBox::Yes, QMessageBox::Cancel);\r
43         if(res==QMessageBox::Yes)\r
44         {\r
45             ui->syncPasswordLineEdit->setReadOnly(false);\r
46             ui->syncPasswordLineEdit->clear();\r
47         }\r
48     }\r
49     else\r
50         return QWidget::eventFilter(obj,e);\r
51     return true;\r
52 }\r
53 \r
54 void SettingsForm::on_restoreSyncPushButton_clicked()\r
55 {\r
56     ui->syncUrlLineEdit->setText(DEFAULT_SYNC_URL);\r
57 }\r
58 \r
59 void SettingsForm::on_applyPushButton_clicked()\r
60 {\r
61     saveSync();\r
62     shown();\r
63 }\r
64 \r
65 void SettingsForm::on_savePushButton_clicked()\r
66 {\r
67     saveSync();\r
68     emit signalNavigate(0);\r
69 }\r
70 \r
71 void SettingsForm::saveSync()\r
72 {\r
73     settings->setValue(USERNAME, ui->syncUsernameLineEdit->text());\r
74     QVariant passString = ui->syncPasswordLineEdit->text();\r
75 \r
76     if(ui->syncPasswordLineEdit->isReadOnly()) //Password is already a hash\r
77     {\r
78         settings->setValue(PASSWORD, passString);\r
79     }\r
80     else\r
81     {\r
82         QString passMd5 = QCryptographicHash::hash(passString.toByteArray(), QCryptographicHash::Md5).toHex().constData();\r
83         // We save the md5 hash of the password instead of the real password so it won't be retrievable.\r
84         settings->setValue(PASSWORD, passMd5);\r
85     }\r
86     settings->setValue(SYNC_URL, ui->syncUrlLineEdit->text());\r
87     settings->sync();\r
88 }\r
89 \r
90 void SettingsForm::on_cancelPushButton_clicked()\r
91 {\r
92     emit signalNavigate(0);\r
93 }\r