Added include for QTimer in header file.
[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     {\r
28         ui->syncPasswordLineEdit->setReadOnly(true);\r
29     }\r
30 \r
31     QString syncUrl = settings->value(SYNC_URL, DEFAULT_SYNC_URL).toString();\r
32     if(syncUrl.compare("http://www.willemliu.nl/qt/maemo/easylist/getList.php") == 0)\r
33     {\r
34         syncUrl = "http://easylist.willemliu.nl/getList.php";\r
35     }\r
36     ui->syncUrlLineEdit->setText(syncUrl);\r
37     ui->syncUsernameLineEdit->setFocus(Qt::ActiveWindowFocusReason);\r
38 }\r
39 \r
40 bool SettingsForm::eventFilter(QObject *obj, QEvent *e)\r
41 {\r
42     if(obj == ui->syncPasswordLineEdit && ui->syncPasswordLineEdit->isReadOnly() && e->type() == QEvent::MouseButtonRelease)\r
43     {\r
44         int res = QMessageBox::warning(this, "Clear Password",\r
45                                        "Are you sure you would like to change the password?",\r
46                                        QMessageBox::Yes, QMessageBox::Cancel);\r
47         if(res==QMessageBox::Yes)\r
48         {\r
49             ui->syncPasswordLineEdit->setReadOnly(false);\r
50             ui->syncPasswordLineEdit->clear();\r
51         }\r
52     }\r
53     else\r
54         return QWidget::eventFilter(obj,e);\r
55     return true;\r
56 }\r
57 \r
58 void SettingsForm::on_restoreSyncPushButton_clicked()\r
59 {\r
60     ui->syncUrlLineEdit->setText(DEFAULT_SYNC_URL);\r
61 }\r
62 \r
63 void SettingsForm::on_applyPushButton_clicked()\r
64 {\r
65     saveSync();\r
66     shown();\r
67 }\r
68 \r
69 void SettingsForm::on_savePushButton_clicked()\r
70 {\r
71     saveSync();\r
72     emit signalNavigate(0);\r
73 }\r
74 \r
75 void SettingsForm::saveSync()\r
76 {\r
77     settings->setValue(USERNAME, ui->syncUsernameLineEdit->text());\r
78     QVariant passString = ui->syncPasswordLineEdit->text();\r
79 \r
80     if(ui->syncPasswordLineEdit->isReadOnly()) //Password is already a hash\r
81     {\r
82         settings->setValue(PASSWORD, passString);\r
83     }\r
84     else\r
85     {\r
86         QString passMd5 = QCryptographicHash::hash(passString.toByteArray(), QCryptographicHash::Md5).toHex().constData();\r
87         // We save the md5 hash of the password instead of the real password so it won't be retrievable.\r
88         settings->setValue(PASSWORD, passMd5);\r
89     }\r
90     settings->setValue(SYNC_URL, ui->syncUrlLineEdit->text());\r
91     settings->sync();\r
92 }\r
93 \r
94 void SettingsForm::on_cancelPushButton_clicked()\r
95 {\r
96     emit signalNavigate(0);\r
97 }\r