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